Free GitHub App · 2-minute setup

Vibe coding ships fast.
3 models catch what 1 misses.

We ran the same AI review 15 times. 3 said LGTM — on a bug that caused 500 crashes.
Ensemble runs 3 models on every PR. If only one flags it, it's noise. If all three flag it, you need to look.

Read-only access · Code deleted after review · Uninstall in one click

ensemble — live orchestration
Intake Parallel runs Review & issues Consensus
GitHub issue #1847 — Fix auth token refresh on session expiry triaging…
Run 01selected
builder0%
Senior
Security
Architecture
Run 02drift
builder0%
Senior
Security
Architecture
Security: Refresh token reused across sessions
Architecture: Scope drift — unrelated migration added
excluded — drift
Run 03selected
builder0%
Senior
Security
Architecture
Senior: Duplicated retry logic — extract helper
Architecture: Auth logic leaking into controller
Consensus reached
2 runs aligned · 1 excluded (drift) · PR ready for human approval
PR #1848+47 −12 · 3 files
Awaiting human approval before merge
Activity
“3 out of 15 identical AI reviews said ‘no issues’ on a PR that caused 500+ crashes and got reverted the same day.”
Real experiment on Bun PR #26717 · See the full data →

How Ensemble reviews your PRs

Four steps. Every PR. Fully automatic.

PR opens

A pull request is opened. Ensemble fetches the diff automatically.

3 independent reviews

Senior, Security, and Architecture reviewers analyze the code independently. No shared context.

Inconsistency detection

Findings compared across runs. Agreement = high confidence. Disagreement = flag for human review.

Results posted

A single review comment on your PR. Only findings that held up across reviewers.

What a real ensemble review looks like

Three independent reviewers. One consensus. Bugs a single model would let through.

acme-corp/api-gateway  ›  fix: validate JWT expiry before accepting token #143
+12 −8
auth/jwt_validator.py
 def validate_token(token: str) -> dict:
-    payload = jwt.decode(token, SECRET_KEY,
-        algorithms=['HS256'],
-        options={'verify_exp': False})
-    return payload
+    try:
+        payload = jwt.decode(token, SECRET_KEY,
+            algorithms=['HS256'])
+        return payload
+    except jwt.ExpiredSignatureError:
+        raise AuthError("Token expired")
3 issues — 3 models agree
HIGH
Uncaught JWT errors become 500s
Only ExpiredSignatureError is caught. InvalidSignatureError and DecodeError will propagate as unhandled exceptions, returning HTTP 500 instead of 401.
HIGH
Algorithm confusion risk
Hardcoded algorithms=['HS256'] with no issuer validation. An RS256 token signed by a different key will raise an opaque error with no audit trail.
MEDIUM
Error path has no test coverage
The new except branch is untested. A future refactor could silently remove the exception handling without any test failure.
Ensemble consensus
Claude Haiku Claude Sonnet Claude Haiku
87% trust
Run this on your own PR — free, no credit card. Start free with GitHub

Not a reviewer.
An adversarial quality gate.

The core insight

One review is a coin flip. Ensemble converges to 100%.

We ran Claude Sonnet 15 times on a real bug. Each additional run increases the chance of catching it — until it's nearly certain.

40% 1 run
82% 3 runs
96% 5 runs
100% 10 runs

vs. single-run AI

One run has a 40% chance of catching a real bug. Three runs push it to 82%. Five to 96%. More runs, fewer misses.

C
G

Multi-model agents

Mix Claude, GPT-4o, or both. Assign the right model to each role. Not locked to one provider.

New

Simple, transparent pricing

Start free. Scale when your team is ready.

Free
$0 forever
For individuals exploring AI code review.
30 PR reviews / month
Claude Haiku model
Senior, security, architecture review
5 ensemble reviews / month
One-click GitHub App install
Get started free

Permissions: pull_requests:read contents:read

Most popular
Team
$19 per seat / month
For teams that ship AI-generated code daily.
Unlimited reviews
Claude Sonnet + Haiku models
Full ensemble mode — parallel runs with consensus
Senior, security, architecture review
GitHub App + Action integration
Email support
Start with Ensemble
Pro
$39 per seat / month
For engineering teams that need multi-model and custom configuration.
Everything in Team
Multi-model — Claude + GPT-4o (bring your own keys)
Detailed review findings with trust scoring
Custom review personas
Priority support
SSO and audit logs
Start with Pro
Free Team Pro
Reviews / month 30 Unlimited Unlimited
Models Haiku Sonnet Claude + GPT-4o
Review lenses All 3 All 3 All 3 + custom
Ensemble mode 5/month
Priority support
SSO & audit logs

Frequently asked questions

What counts as a review?
One review = one PR analyzed. Each PR triggers review across all configured lenses (Senior, Security, Architecture). Multi-run ensemble mode counts as one review.
Can I cancel anytime?
Yes. No contracts. Cancel Pro anytime and you'll keep access through the end of your billing period, then revert to Free.
Do you store my source code?
No. Code is fetched on-demand during review and discarded after processing. We never store your source code. See our Privacy Policy.
Which models are supported?
Free tier uses Claude Haiku with 5 ensemble reviews per month. Team includes Claude Sonnet with unlimited ensemble. Pro supports Claude Opus, Sonnet, and GPT-4o — bring your own API keys.

One review is a guess.
Five reviews earn the merge.

Two steps to your first automated review.

1 Install the GitHub App
2 Open a PR — review appears automatically

Read-only access · Code deleted after review · Uninstall in one click