Methodology
The TrueHire score is derived from verified GitHub activity. There are no user-editable fields. Every number below is imported live from packages/core/src/scoring/score.ts so this page can't disagree with the code.
The composite
Each axis is computed independently on a 0–100 scale, then weighted into the overall score. Weights sum to 1.00.
| Axis | Weight |
|---|---|
| Recognition | 30% |
| Depth | 20% |
| Craft | 20% |
| Breadth | 15% |
| Specialization | 15% |
Recognition30% weight
Costly, externally verifiable signal.
- log10(stars on authored repos) + log10(merged-PR credit to repos with ≥ 100★).
- Stars decay if a repo is no longer maintained — 48-month freshness half-life. A 4-year-dead repo retains ~50% of its credit; an 8-year-dead one ~25%.
- Carries the highest single weight because it's the hardest signal to fake or accidentally inflate.
Depth20% weight
How sustained is the contributor's GitHub work?
- Counts months with at least one accepted contribution, capped at 48 months.
- Recent months weigh more — exponential decay with a 30-month half-life.
- A contributor active for 5 years recently outscores someone with the same total but who stopped 4 years ago.
Craft20% weight
How does the work itself look?
- Aggregated from PR review velocity, merged-vs-opened ratio, and signal-to-noise across the contributor's repos.
- Designed to complement Recognition, not replace it: someone with thoughtful PRs in obscure projects still earns Craft credit.
Breadth15% weight
How many distinct codebases?
- Counts repos with ≥ 3 commits or ≥ 1 merged PR. Log-scaled and capped at 40 repos.
- Drive-by single-commit contributions don't count — the floor exists to filter out noise.
- Polyglots and platform engineers benefit; single-project specialists are scored elsewhere on Specialization.
Specialization15% weight
Concentration in a primary language.
- Piecewise on the dominant-language share of weighted contributions:
- Below 20% share → 0. Above 20% share → linear ramp to 100 at 100% share.
- Polyglots score low here on purpose — Breadth already rewards that profile.
Bonus: verified employment (Signal 2)
Independent of the GitHub composite. Recruiters and former employers can confirm work history via a verification link (see /verify); confirmed entries add a small bonus to the overall score. Unconfirmed entries are shown on the profile but contribute nothing.
What we deliberately don't measure
- Self-declared skills, titles, or bios.Profiles aren't user-editable. If a number isn't traceable to public GitHub data, it doesn't appear.
- Generic boilerplate repos.Common interview-prep / awesome-X / 100-days-of-X clones are downweighted heavily — their stars usually reflect topical interest, not the maintainer's craft.
- Private contributions.A core principle: the score is reproducible from public data. Anything you can't independently audit is excluded.
Disagree with a weight or the framing? The full implementation is in the repo — open a PR. Changes to any weight require a corresponding test update.