Five dimensions, two questions — one honest answer to each.
Every developer gets two numbers built from the same five dimensions. Score answers “How good is this developer?” — Absolute Points answer “How much did they deliver?”. One radar can't answer both questions, so DevEval keeps them separate.
Every developer is scored on five weighted dimensions.
Both views are built from the same five dimensions, each scored by AI analysis of real pull requests — the code, the tests, the review discussion — never from activity counters.
Code Quality
Craftsmanship: test coverage, API design, naming, error handling. Quality a reviewer can point at, scored on every PR.
Velocity
Throughput that means something: Complexity Units delivered per working day — not commits, not story points.
Stability
Reliability and risk: bug rate attributed back to the code that caused it, reverts, hotfixes, tech-debt impact.
Collaboration
Review quality and helpfulness: clear PRs that respect reviewers' time, and high-value, constructive reviews of peers' work.
Cost Efficiency
Cost per Complexity Unit delivered, measured against your organization's baseline.
Weights are defaults, configurable per organization — a product company can weight Velocity up, a bank Stability. They always sum to 100.
Score answers “how good”. Absolute Points answer “how much”.
Same five dimensions, two different questions — so the two numbers behave differently on purpose.
How good is this developer?
Measures skill and quality, not quantity. A developer working two hours a day can score 95 in Code Quality — the Score doesn't care how much shipped, only how good it was. Shown as a radar against the org average, one axis per dimension.
How much did they deliver?
Measures delivered output over a period — every analyzed PR adds points, and points accumulate. The same part-timer lands low here even if the work is excellent. This is the number behind leaderboards and quarterly reviews.
One number can't be both a skill rating and an output counter. Pretending it can is how “engineering analytics” tools mislead.
Volume only counts when quality clears the bar.
Every PR earns velocity points in proportion to its quality. Below the bar, those points shrink; quality below the org baseline earns negative quality points — a penalty, not a smaller bonus. That is the mechanism that makes “AI slop” unprofitable: flooding the repo with mediocre code loses points instead of farming them.
Developer A
Ships 2.5× the code. Cuts corners. Reviews no one.
Developer B
Ships less. Ships better. Reviews peers.
More code at low quality loses to less code at high quality — by design. 2.5× the volume, roughly a seventh of the points.
No forced losers, no silent guesses.
A scoring system people trust has to be fair in the boring, structural ways — by construction, not by promise.
No forced losers
Scores saturate toward expectations instead of min-max ranking. A team of strong performers can all score 80+ — nobody is dragged to 0 so someone else can be 100.
Confidence, always visible
Every dimension is tagged High (5+ analyzed PRs in the period), Medium (2–4), or Low (1). Low-confidence dimensions are drawn dashed on the radar — flagged, never silently blended in.
Missing data is excluded, not faked
If a dimension can't be computed for a period, it is dropped and the remaining weights renormalize. No imputed averages, no invented zeros.
Recomputed nightly
Scores are rebuilt every night from fresh PR analyses — no stale quarterly snapshots.
See the radar for your own team.
Connect your repos and watch the five-dimension radar build itself from real pull requests — for every developer, over the 30-day trial.