Three specialist reviewers read your diff in parallel through OpenRouter. The aggregator dedupes their findings and posts a single GitHub review — summary body plus inline comments at lines that map to the diff. Advisory by design, with merge control left to the team.
01 · Anatomy
The pipeline
Each PR triggers a fan-out across three reviewer agents. They each return a typed list of findings. The aggregator merges, dedupes, and decides what gets posted.
GitHub webhookpull_request.opened | synchronize
Inngest functionconcurrency 5/repo · 2 retries
Reviewers (parallel)OpenRouter chat-completions
AggregatorZod-validated · dedupe · severity sort
Single review postsummary body + inline at diff position
PR opened
linear-rb/api · #2841
0.0s
Webhook received
pull_request.synchronize
0.2s
Diff fetched
46 files · +1,284 / −188
0.8s
Reviewers · 3 in parallel
~22s
Correctnessdeepseek-v4-profound 3
Securitydeepseek-v4-profound 1
Architecturedeepseek-v4-proclean
Aggregator
filter < min_confidence · dedupe · sort by severity
< 0.1s
Posted to GitHub
POST /pulls/n/reviews · event=COMMENT
0.3s
total23.9s
02 · Why teams ship faster
Built for signal-to-noise
DEDUPE
One finding per defect
The aggregator dedupes by (file, line, lowercased title). Severity sort orders critical → low; the top max_inline_comments are posted, the rest stay in the run record.
min_confidence: 0.75
max_inline_comments: 10
POLICY
Per-repo rules in YAML
.ai-review.yml at the repo root, parsed with Zod. Override the model per reviewer, raise min_confidence on hot paths, or skip drafts. Loaded from the PR head SHA.