How the contribution ranking is scored
A person's Ranking tab scores them 0–100 against everyone else on the same org tree, blending four 90-day contribution counts by weight. Read it as a conversation starter, not a performance rating — and check for an identity-match gap before you read a low score as low output.
F. Byrne closes tickets every week but reads low — their GitHub login isn't aliased, so PRs and commits count zero.
What it's scoring, and where the counts come from
| Metric | Weight | Counted from |
|---|---|---|
| Tickets closed | 35% | Jira and Azure DevOps — issues transitioned into a Done-type status, attributed to the assignee |
| PRs merged | 30% | GitHub and Azure DevOps — pull requests merged or completed, attributed to the author |
| Commits | 20% | GitHub and Azure DevOps — non-merge commits, attributed to the author |
| Review comments | 15% | GitHub and Azure DevOps — comment volume summed across a person's reviews |
Counts cover a rolling 90-day window. Each metric is min-max normalized to 0–100 across this tree's people alone — so a metric everyone happens to tie on contributes nothing to anyone's score — then multiplied by its weight and summed. Vacancy placeholders, departed people, and anyone with no matched activity at all are left off the leaderboard entirely rather than shown at 0; opening their card shows "Not ranked" instead of a breakdown.
Reading a person's score
Click a person on the org chart, or their Rating column on an employee board, to open their card's Ranking tab. It shows their rank ("#N of total"), a tier badge — 🏆/🥈/🥉 for the top three, ⭐ "Top 10%", "Top 25%", or a plain rank number for everyone else — and a breakdown table of Metric, Count, Subscore, Weight, and Points, footed by the Composite score.
When a productive engineer reads as idle
The four metrics aren't matched as a set — each contribution row is matched to a person independently, by its own provider. A ticket closes under a Jira assignee name; a commit lands under a GitHub email or login. If one of those doesn't resolve to the right directory record, only the metric it feeds drops to zero — the rest of the score keeps counting. That's the failure mode to watch for: not a blank card, but a plausible-looking low score.
Matching tries, in order: a stored provider alias (a login or email tied to that person); then a provider-agnostic email match (their profile email, or any email alias) — as long as exactly one person on the tree owns that address; then a first-name/last-name match against the activity's display name — again, only if exactly one person on the tree shares that first and last name. Any ambiguity, such as two people who'd both match, is treated as no match at all, on purpose.
- Open the person's card → Profile → Edit — confirm their Email matches the address their commits, PRs, or reviews actually carry. Email is the strongest fallback signal, and the one field you can correct directly.
- Check the directory name — if Jira tickets aren't counting, make sure the person's name on the tree matches their Jira display name's first and last token; a mismatched nickname won't match, and two people sharing a first and last name will both silently miss.
- Sync — click Sync in the tree's toolbar (or Sync now on a Microsoft-connected tree's Source tab) to recompute matched status and ranking counts against the corrected identity.
Under the hood
Ties break deterministically: by composite score, then tickets closed, then PRs merged, then employee id — so re-reading the same underlying counts always produces the same order. Ranking is computed at read time from counts stored on each employee, so it's only as fresh as the tree's last Sync.
If it looks wrong
| Symptom | Cause | Fix |
|---|---|---|
| Card shows "Not ranked" | No matched activity in the last 90 days, or the person is a vacancy or departed | Confirm their alias, email, or name resolves, then Sync |
| One metric reads 0 but others don't | That metric's source (Jira/ADO for tickets, GitHub/ADO for PRs, commits, and reviews) doesn't recognize this person's identity | Correct their Email or directory name to match that provider, then Sync |
| Score didn't move after recent work | Ranking counts refresh on Sync, not live | Trigger Sync from the tree's toolbar or Source tab |
Related
- Org trees — building the hierarchy the ranking is scored against.
- Employee boards — the Rating column that opens a person's Ranking tab.
- Microsoft Graph — syncing the directory the identity match relies on.
- How metrics are built — the same identity-matching principles applied across Deckgauge's intelligence.
Last updated