TrueHire

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.

AxisWeight
Recognition30%
Depth20%
Craft20%
Breadth15%
Specialization15%

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.