← back to work

case study · 2026

PR Review Crew

A pull request reviewed by a crew of agents: four specialists in parallel, then an adversarial verifier that rejects any finding it cannot quote from the actual diff. Live at pr-review-crew.vercel.app.

4 specialist agents in parallel1 adversarial verifier, rejection by defaultSSE live run, agent by agent2 platforms: Vercel + Railway

The problem

LLM code reviewers have a specific, corrosive failure mode: confident comments about code that is not in the change. One hallucinated finding costs more trust than ten good ones earn, because the reviewer who catches it stops reading the rest. The design goal was not more findings, it was only defensible findings.

The architecture: fan out, then challenge

Given a PR, four specialist agents run as parallel LangGraph nodes, each with a narrow brief: intent (does the change do what the title and linked issue say?), correctness, tests, and security. Each sees the diff, title, description, and linked issue. Specialists are encouraged to be suspicious; precision is not their job.

Precision is the verifier's job. After the fan-out joins, an adversarial verifier re-reads the diff against every finding and asks one question: can this claim be supported by lines that are actually here? Evidence that is not literally in the diff means rejection, and when uncertain it rejects, by default. Only confirmed findings reach the report. The same verification-first shape as Doccrew, applied to a different domain: generators generate, a skeptic gates.

Watching it work

The React frontend streams the entire run over SSE: each specialist reports in as it finishes, then the verifier's confirm-or-reject verdicts land one by one. Making the rejections visible was a deliberate choice; seeing the system kill its own weak findings is what makes the surviving ones credible.

Design tensions, honestly

Rejection-by-default trades recall for precision: a real issue phrased without quotable evidence dies in verification. That is the right trade for a reviewer (false alarms are the trust killer), but it is a trade. Parallel specialists also mean overlapping findings, which the verifier deduplicates imperfectly. And review quality is bounded by diff-only context; the crew does not see the rest of the repository, so cross-file implications escape it.

Why it runs where it runs

The FastAPI graph runner lives on Railway (long-running SSE streams fit it well), the web frontend on Vercel, CI on GitHub Actions. End to end deployment was part of the point: a reviewer you cannot try is a claim, and the demo accepts any public PR URL.

Try it at pr-review-crew.vercel.app or read the code at github.com/tsaipraveen99/pr-reviewer. The companion piece on deterministic verification: A verifier that can't hallucinate.