Benchmark
AI PR Review Benchmark
8 real OSS pull requests. 4 tools. Same diffs.
Raw scores, honest verdicts, ground-truth backed.
Score = weighted avg (60% bugs caught, 25% signal/noise, 15% latency). PR wins = count of PRs where this tool ranked first.
SiftPulse — free to start
See what your team's PRs look like in review
Install the GitHub App in 2 minutes. No credit card. 14-day trial.
Methodology
01 How PRs were chosen
- Public, merged PRs from well-known OSS repos
- Must have a follow-up commit or linked issue establishing ground-truth
- Mix of diff sizes and categories: bugfix, refactor, security, performance, large, tiny, dep bump, migration
- Excluded: WIP PRs, PRs with no review activity, ambiguous ground truth
Selected on 2026-06-20. All PRs are from distinct repos to avoid clustering artifacts.
02 Who ran the competitors (and when)
| Tool | Version / Account | Run date | Method |
|---|---|---|---|
| CodeRabbit | CR-2024.6 pro |
2026-06-21 | GitHub App install on test repo |
| Greptile | production (app.greptile.ai) pro |
2026-06-21 | API with full codebase indexing |
| Qodo | Qodo Merge v3.1 14-day trial |
2026-06-21 | GitHub App install on test repo |
| SiftPulse | self-hosted |
2026-06-21 | GitHub App install on test repo |
Note: Competitor accounts were provisioned fresh on 2026-06-20. Version numbers reflect what was available at time of run. Newer versions may perform differently.
03 How scoring was done
- bugs_caught
- Percentage of ground-truth issues surfaced in the tool review comment (vs. ground truth from follow-up commit/issue). 0–100%.
- false_positives
- Count of findings that, upon human review of the diff, turned out to be noise.
- signal_noise
- bugs_caught / (bugs_caught + false_positives). Measures how clean the signal is. 1.0 = perfect.
- latency_seconds
- Wall-clock from diff submission to first review comment posted. Lower is better.
- wins
- Count of PRs where this tool scored highest (tie: first scored counts).
Raw outputs JSON: /api/benchmark/data — includes full review text for every PR × tool combination.
04 Where SiftPulse lost
Honesty is the moat. Here's where SiftPulse didn't score highest and why:
- PR #2 (vscode refactor): Greptile caught the stale call-site in `treeView.ts` because it indexes the full codebase. SiftPulse reviews at the PR level — it cannot detect that an old file still imports a refactored module. Greptile's cross-file awareness is a structural advantage for large refactors.
- PR #8 (TypeScript migration): Greptile cross-referenced loader call-sites and caught a type mismatch. Again, SiftPulse reviews the diff in context — it has access to the repo's file tree, but the type inference across all callers is less complete than Greptile's indexing approach.
In both cases, the finding was a pre-emptive cross-repo analysis that SiftPulse's design doesn't attempt. If cross-file, cross-repo analysis is your priority, Greptile is the right choice.
Run the benchmark on your team's PRs
Install SiftPulse on any public or private repo. 14-day free trial, no credit card.