- 38
export async function checkout(order: Order) { - 39
const subtotal = sum(order.items) - 40+
const coupon = await findCoupon(order.code) - 41+
const shown = subtotal - (coupon?.amount ?? 0) - 42+
setTotal(shown) - 43
await charge(order.id, subtotal) ironbeebotHighCorrectness
The page shows
shown, butcharge()still getssubtotal. Customers see the coupon and pay full price.Suggested change-await charge(order.id, subtotal)+await charge(order.id, shown)How it happensCustomerCheckoutcart.tsPayments1applies SAVE202setTotal(shown)64.003charge(subtotal)80.00Rulemoney-paths- 44
}
Martian Code Review Bench#1 AI code reviewer
Reviews every change Runs every PR
Your AI QA engineer
Catches bugs before you ship
cart.ts:43Highcharge() gets subtotal, so the coupon may never reach the card.
money-paths- Coupon, then payfinding
- Pay without a coupon
- Unknown code shows an error
- Remove the coupon, then pay
- Coupon survives a refresh
- Second coupon is refused
/api/chargeamount 80.00screen said 64.00cart.ts:43. Recording and network log attached.The top score on the code review benchmark.
67.4F2 score#1 by F2
Scored on the industry‑standard, vendor‑agnostic Martian code review benchmark.
- #1
IronBeeF2 score 67.4%Recall 75.3%
- #2
Qodo DeepF2 score 65.1%Recall 64.6% - #3
Cubic DevF2 score 64.9%Recall 65.8% - #4
AugmentF2 score 64.0%Recall 65.2% - #5
QodoF2 score 60.6%Recall 62.0% - #6
GitHub CopilotF2 score 58.0%Recall 66.5% - #7
GitarF2 score 53.6%Recall 61.4% - #8
GeminiF2 score 52.8%Recall 55.1% - #9
GitLab Duo Code ReviewF2 score 52.7%Recall 52.5% - #10
Sourcery AIF2 score 51.5%Recall 55.1% - #11
GreptileF2 score 51.2%Recall 51.3% - #12
CodeRabbitF2 score 51.1%Recall 59.5%
One pull request.
Two checks before it merges.
Code review reads the change. Verification runs it on the preview. Each posts its own check, so the merge box shows you both.
Reads the diff with your team's rules, memories and skills, and comments on the line with the fix.
Opens the preview deployment, uses it like a customer, and shows what broke with the evidence.
One GitHub App. One credit pool. Two separate checks.
Reading the change finds some bugs. Using the app finds others.
Five findings from one pull request. Two show only in the diff, two show only on the preview, and one shows in both.
Code review reads the diff
Verification uses the preview
Any signed-in user can read any ordersrc/api/orders.ts:18
No test covers an expired couponsrc/checkout/coupon.test.ts
The coupon never reaches the cardcart.ts:43
The coupon is gone after a refreshTotal back to 80.00 after a reload
An unknown code fails without a wordTyping BADCODE shows nothing
Code review that knows your rules.
IronBee reviews every GitHub pull request with your team's rules, memories and skills, comments with the fix and the rule behind it, and follows up after every push.
- High, cart.ts:43
- Charges the subtotal, not the total shownRule: money-paths
- The fix, ready to commit
- charge(order.id, shown)
Every finding shows its work
The severity, the claim, the line, the fix and the rule it follows, in one comment on the line.
It learns from your team
Your replies to its comments, your reactions 👍 👎, and what you do with a finding, fixing it or dismissing it, teach it what your team wants, for the repository and across the account. A light form of RL (Reinforcement Learning), from the reviews you already do.
Back after every push
Fixed threads resolve on their own, and a reply on a thread gets an answer there.
Review depth
Auto by default: it picks Quick, Standard or Deep by the size of the change. Set one of them yourself to keep every review at that depth.
Focus areas
Bugs and logic are always on; security, and docs, names and tests, are on by default. Add linter rules, style and typos, input checks and error handling, missing tests, duplication and dead code, or language and framework gotchas when you want them.
Merge gate
It blocks only through its check, where branch protection requires it. Its own errors never block.
Commands
Comment @ironbee review, full review, pause or resume on the pull request. Ask it a question and it answers in the thread.
Verification that uses your preview like a customer.
It opens the pull request's real preview deployment, not a copy in a sandbox. It plans the paths the change can reach, drives them, and shows what broke with the evidence attached.
Preview pr-482
Coupon, then payCharged 80.00, the screen showed 64.00Root cause: cart.ts:43
Pay without a coupon
Unknown code shows an errorNothing appears on the screen
Remove the coupon, then pay
Coupon survives a refreshAfter a reload the total is 80.00 again
Second coupon is refused
Custom scenarios, when you want them
You need no input: IronBee reads the change and decides what to check. To test something specific, describe it in a sentence and IronBee writes the steps, drives them and keeps them running.
Self-healing
A commit renames a button or moves a field. IronBee rewrites the steps it affects and re-runs only the journeys that commit can reach.
RCA (Root Cause Analysis)
The recording, the network log, your OpenTelemetry spans and a live debugging session go into one answer: a file, a line and a reason.
Run both on your next pull request.
Install the GitHub App once. Code review and verification share one credit pool, and the Free plan has 3 seats.
Questions, answered.
Everything you need to know about IronBee.
A code review tool only reads the diff, so it finds what static analysis can see. IronBee reviews every pull request too, and it also verifies the change live: it opens the running app, uses it like a customer, and catches the problems no reading of the code can find, such as a broken flow, a wrong total on the screen or a request that fails only at runtime. Each one reports as its own check on the pull request.