← AI Code Review with DeepSeek
Most PR descriptions are approximations. Some are outdated by the time the PR is ready for review, others describe intent that never made it into the code, and a few are simply wrong. The fix is not to trust the description — it's to verify it claim-by-claim against the actual code.
A PR description is a list of assertions: "Adds X", "Fixes Y", "Refactors Z". Each assertion is a claim that can be checked by reading code. The LLM splits the description into these verifiable claims first:
[
{"id": "C1", "text": "Adds Google sign-in via /auth/mobile",
"category": "feature", "files": ["auth_api.dart"]},
{"id": "C2", "text": "Fixes logo layout bug (full width)",
"category": "bugfix", "files": ["sign_in_screen.dart"]}
]
A DeepSeek Harness agent reads the actual code in the PR's workspace and returns one of four verdicts per claim, with evidence:
Every verdict carries file:line evidence, so a reviewer can jump
straight to the code and judge for themselves.
A PR claims: "The logo layout bug is fixed: the logo no longer renders at full width." The agent reads the UI file and finds the layout was indeed changed — but the base branch never had the bug the description references. The verdict: Partial, with a note explaining the discrepancy. That single finding saves a reviewer from approving a description that quietly describes work that was never done.
When a claim cannot be verified from the repo alone (backend behavior,
external service, missing context), the agent marks it Unverified
and adds a ≤20-word question for a human. The tool never guesses — uncertain
findings always surface as questions, never as silent conclusions.
A summary review produces a vague "looks good to me". Claim-level verification produces a checklist: 9 claims verified against code, 1 partial, 1 unverified — each with evidence. That checklist is what a reviewer actually needs to make a decision, and it is exactly what gets posted back on the PR.