How the Builder Score works

The score runs from 0 to 1000. It is a pure function of the collected metrics, so the same snapshot always gives the same score. The formula lives in src/lib/scoring.

Log scaling. Each metric is normalised as min(1, ln(1+x) / ln(1+cap)). The first few units count most, and nothing scores beyond its cap, so mass-produced commits or repos stop paying off.

Recency. Merged PRs and contributions are bucketed by year and decay with a 1-year half-life, so recent work moves the score. Actions and test runs are all-time counts, because GitHub doesn't expose them by year cheaply.

Self-declared items (from portfolio.yml or the dashboard) count at 50% of a detected one.

Weights

MetricCategoryMax pointsSaturates at
Apps deployedShipping15030
Apps builtShipping10040
Vercel projectsShipping5030
PrototypesShipping5030
PRs mergedCollaboration150500
ContributionsCollaboration1005,000
Test runs passedEngineering rigor1202,000
Actions runsEngineering rigor805,000
RepositoriesBreadth40150
ProjectsBreadth3020
IntegrationsBreadth5025
HackathonsHackathons8015

Tiers

Explorer 0–199 · Builder 200–399 · Shipper 400–599 · Architect 600–799 · Legend 800+

What is inferred

  • Test runs passed counts successful runs of workflows named like test/CI/e2e. It counts runs, not individual test cases.
  • Apps built needs an app topic, or an app framework (Next.js, Expo, FastAPI…) in a root manifest plus a homepage or deployment.
  • Apps deployed needs a successful GitHub Deployment or an external homepage URL. Homepage reachability is not checked.
  • Vercel projects are repos with deployments created by the Vercel GitHub app, or come from the Vercel API when you add a token.
  • Hackathons and prototypes come from repo topics, names and descriptions, plus anything you declare. Every hackathon entry also counts as a prototype, because weekend builds are prototypes by nature.
  • Integrations are read from root package.json, requirements.txt and pyproject.toml only, so packages nested inside a monorepo are missed.
  • Actions runs cover your 100 most recently pushed repos.