Why I Stopped Trusting PR Line Counts (And Built a Complexity Scorer)
A 200-file refactor and a 10-line bugfix look identical in GitHub's pull request list. That's a problem.
A while back, my team shipped a nasty regression. The root cause? A massive refactor PR had been sitting in the queue for three days, buried between tiny bugfixes and dependency updates. Nobody spotted it. Everyone assumed "it's just another PR."
But it wasn't. It was 2,847 lines across 56 files, touching core business logic, authentication flows, and the database layer. In GitHub's UI, it looked like this:
chore: upgrade to Node 22 LTS +2,847 −198
fix: token expiry not refreshing on 401 +45 −12
docs: update README +8 −2
Three lines. Equal visual weight. One of them is a landmine.
The Problem: Flat PR Lists Don't Scale
GitHub shows you:
- Title
- Author
- Labels
- Line count
- Last updated
That's useful for small teams. But when you're tracking 50+ open PRs across multiple repos, you need to know which ones are dangerous and which ones need your eyes right now. Line count is a terrible proxy for risk. Here's why:
A 500-line change to package-lock.json is trivial. It's generated, mechanical, and safe to approve.
A 50-line change to your auth middleware is terrifying. It's small, surgical, and high-stakes.
Yet in the PR list, the lockfile change looks "bigger." Your brain learns to ignore large numbers, so the genuinely risky PRs get lost in the noise.
What I Wanted
I wanted a dashboard that could:
Score every PR for complexity — not by raw lines, but by what actually changed
Show me only PRs that need my review — filter out my own PRs, drafts, and things I've already reviewed
Surface blockers instantly — build failures, merge conflicts, changes requested, all in one view
Work across repos — one view for everything my team owns
Surface failing CI/CD — see which workflows are failing across branches without leaving the dashboard
So I built with repo scope
What I'd Love Feedback On
- Does the complexity scoring feel right for your repos?
- What file types should have different weights?
- Would you use this with GitLab, Bitbucket, or Azure DevOps?
Drop a comment or open an issue. I'd love to hear what you think.
Built with Next.js 16, React, TypeScript, Zustand, and Chart.js. Deployed on Cloudflare Pages.
SOCIAL SHARE CARD GENERATOR