Quorum
Sign inInstall
Product

How Quorum reviews a pull request

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.

.ai-review.yml
├ trigger: [opened, synchronize]
├ skip.draft_prs: true
└ rules.min_confidence: 0.85
ADVISORY
Advisory by design

Quorum posts as 'COMMENT', keeps the verdict advisory, and leaves merge control with humans.

event: "COMMENT"
verdict: "needs_attention"
03 · Capabilities

What’s in the box

Inline + summary review

A single POST /pulls/n/reviews carries the summary body and inline comments at lines that map to a diff position.

OpenRouter through-routing

Reviewers call OpenRouter chat-completions in parallel. Default model: deepseek/deepseek-v4-pro.

Per-repo .ai-review.yml

Trigger events, skip.draft_prs, rules.min_confidence, rules.max_inline_comments, per-reviewer model overrides.

Confidence floor

Findings below min_confidence (default 0.75) are dropped before posting.

Inngest workflow

Background job with concurrency 5/repo and 2 retries. Status persists in review_runs.

Webhook signature check

GitHub webhooks are HMAC-verified before any DB writes.

Quota enforcement

review_runs counted per calendar month against your stripe_subscriptions row. Hard-stop when over.

BYOK key routing

OpenRouter keys are stored AES-256-GCM encrypted and used at review runtime on Developer and above.

See it on your next PR

Install the GitHub App. 10 reviews/month free, forever. Upgrade to Developer at $19/mo for 100/mo and BYO OpenRouter.

Install on GitHubRead the docs