DevImpact

How DevImpact scoring works

This page explains the deterministic scoring pipeline used by DevImpact. The formulas below describe how repository impact, external pull request impact, and community contribution impact are combined into the final score.

Scoring flow map

Step 1

Collect public GitHub profile, repositories, pull requests, issues, and discussions.

Step 2

Calculate repository impact using stars, forks, watchers, activity, and rank weighting.

Step 3

Calculate merged external pull request impact with per-repository diminishing returns.

Step 4

Calculate community contribution impact from external issues and discussions.

Step 5

Apply penalties and caps (fork penalty, tiny/huge PR penalties, contribution cap).

Step 6

Combine weighted scores into final impact score (45% repo, 45% PR, 10% contribution).

Step 7

Normalize scores to 0-100 scale for clearer UI comparisons.

1. Collect public GitHub profile, repositories, pull requests, issues, and discussions. 2. Calculate repository impact using stars, forks, watchers, activity, and rank weighting. 3. Calculate merged external pull request impact with per-repository diminishing returns. 4. Calculate community contribution impact from external issues and discussions. 5. Apply penalties and caps (fork penalty, tiny/huge PR penalties, contribution cap). 6. Combine weighted scores into final impact score (45% repo, 45% PR, 10% contribution). 7. Normalize scores to 0-100 scale for clearer UI comparisons.

Score components
  • Repository Score: public project impact through repository quality and visibility.
  • PR Score: merged external pull request impact with anti-spam diminishing returns.
  • Contribution Score: external issues/discussions impact only.
  • Final Score: weighted combination of repo, PR, and contribution signals.
Weighted formula

Raw weighted formula used to calculate overall final score.

  • finalScore = repoScore * 0.45 + prScore * 0.45 + contributionScore * 0.10
  • Repo Score weight = 45%
  • PR Score weight = 45%
  • Contribution Score weight = 10%
Diminishing returns
  • Repository ranking weight: top 5 repositories have full weight, remaining repositories are reduced.
  • Within each external repository, repeated PRs receive decreasing weight using 1/(index+1).
Penalties and caps
  • Forked repositories are strongly penalized so copied work cannot dominate.
  • Inactive repositories receive lower activity factors than recently updated repositories.
  • Tiny PRs and extremely large PRs are penalized to reduce gaming and generated changes.
  • Contribution score is capped at 30% of (repoScore + prScore).
Normalization
  • normalizeScore(score, k) = 100 * score / (score + k)
  • Normalized scores improve readability while raw scores remain available for transparency.
Transparency signals
  • Signals report what was analyzed and what was ignored, such as own-repo PRs and unmerged PRs.
  • Examples include merged external PR count, unique external repositories, and language match coverage.