Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

How I ranked GitHub developers with one score (and what the math taught me)

Description and use

A GitHub profile ranking system that uses log scaling and caps to produce a single score, enabling recruiters to quickly assess candidates.

Problem

Recruiters need a quick, comparable metric for GitHub profiles to decide which developers to investigate further.

Outcome

The scoring system produces a single, comparable metric that balances multiple signals while mitigating outliers through log scaling and caps. It enables recruiters to filter and rank developers efficiently and provides transparency via a breakdown of each component.

Workflow

  • 1. Collect public data via GitHub API: repos, stars, followers, recent events, account age.
  • 2. Filter repos to exclude forks and sum stars.
  • 3. Compute log-scaled components: repos, stars, followers.
  • 4. Compute capped components: activity (events/30 capped at 1) and age (days/3650 capped at 1).
  • 5. Multiply each component by its weight (30, 35, 15, 15, 5).
  • 6. Sum weighted components and round to one decimal place to produce the final score.
  • 7. Display the score with a breakdown bar showing each signal’s contribution.
  • 8. Cache API responses (~8 h) to stay within rate limits.
  • 9. Provide language and country filtering based on repo languages and location keyword matching.
  • 10. Offer a public repo board sorted by stars and recent push activity.
  • 11. Allow users to add or remove their GitHub username and verify ownership for a badge.

Evidence

Five signals, all from the public GitHub API: public repos you own, forks excluded; total stars on those repos; followers; public events in the last 90 days; account age.

Source

The total is the sum, rounded to one decimal place.

Source

Activity is min(events / 30, 1). Thirty public events in 90 days is a full score, and more than that adds nothing.

Source

Account age caps at 10 years (3,650 days) and is only worth 5 points.

Source

Repos: GET /users/{user}/repos?per_page=100&type=owner, paged up to 5 pages, then forks are filtered out.

Source

Events: GET /users/{user}/events/public?per_page=100, then filtered to the last 90 days.

Source

  • Record date: 2026-10-26T15:11:23.753Z