TypeError: total is undefined
POST /checkout 500 promo: SPRING20 · expired 14:02:11 total = subtotal - promo.amount // undefined
Qodex reads the failure, writes the regression as code you keep, proves it on staging, and fails any pull request that would bring the bug back.
It lets our small team stay confident in releases without needing a dedicated QA resource.
Autopilot is agentic AI for QA pointed at production. A person spots the bug once. From then on it is a scenario in your suite, replayed on every change with no model in the loop.
POST /checkout 500 promo: SPRING20 · expired 14:02:11 total = subtotal - promo.amount // undefined
A real failure hits production and your monitoring catches it, whatever the source.
The error arrives with its logs and the real production data around it.
Reads it against the repo map it already holds: routes, auth, models, tests.
Authors a scenario that reproduces the bug, as standard code you keep.
Runs the scenario against staging until the reproduction is verified.
Any pull request that would reintroduce the bug now fails the merge gate.
Every pass through the loop deepens the per-project memory: auth flows, routes, models, past failures. Matchbook has run its production suite on Qodex since 2024, and the suite it runs today is the one production taught it.
Memory feeds Change. The next pull request is tested against what production taught.
One agent, six steps, and the last one feeds the first.
A developer or a coding agent opens a pull request.
Qodex reads the diff and the repository around it.
It runs the relevant API, UI and security checks against the preview.
Every finding carries the failing request, response or screenshot.
The pull request gets a clear merge recommendation.
Production incidents become regression scenarios, so the next change is tested against them.
Back to 1. The next pull request is tested against what production taught.
No model call on replay. The suite grows; the bill does not.
One incident from Sentry, the scenario it became, and the pull request that could not bring it back.
Orders with a promo code that expired mid-session were charged the discounted total. 312 users in 40 minutes before the alert fired.
Sentry · production TypeError: total is undefined
01 add item · apply promo SPRING20 02 advance clock past promo expiry 03 submit order · · · 7 more steps 11 expect total 49.00 · got 39.20
The refactor dropped the expiry check. The regression ran on the pull request and failed, so the merge is blocked until the check comes back.
Example data. Real loops link to the incident and the pull request.
The loop from repo map to merge gate runs now. The one piece still on the roadmap is named, not implied.
Today a person approves each scenario before it joins the suite. That is one click, and it is the only human step in the loop.
Until then the hand-off is the bug your team already files. Nothing else in the loop waits on it.
The monitor pages you. Your team files the bug. Qodex turns it into a regression.
Read from where your team files bugs today. Automatic ingestion from the monitor itself is on the roadmap.
The same agent that gates the merge on your regressions runs six review passes on the pull request itself: static analyzers, a full read of every changed file, a blast-radius pass, two frontier models, and live probes against the preview.
See AI code reviewpromo/validate.ts line 31 High · expiry check removed, callers: checkout, cart, renewals probed against preview · discount applied after expiry
Committable fix suggested on line 31 · found by both models
Example data. Real checks link to the pull request.
Nothing to install, no runner in your CI. Qodex asks for read access to the repo and the bug tracker.
Incident data and scenarios are encrypted in transit and at rest, and isolated per project.
Your code, incidents and scenarios are never used to train models.
Use your own model key for authoring if you prefer. Replay makes no model call at all.
“We now detect issues in staging instead of finding them after deployment.”
Anshuk K.
AI & Data Engineer
Verified G2 review“The no-code interface helps our whole integration team write and manage test cases, and drastically reduces the time spent on QA.”
Rishabh V.
AI Engineer
Verified G2 review“It lets our small team stay confident in releases without needing a dedicated QA resource.”
Sameer C.
Software Engineer
Verified G2 reviewA bug your team files. Qodex reads it from Sentry, Jira, Datadog or PagerDuty, or you hand it over from chat, CI, or any webhook. It reads the failure against the repo map, writes the regression, proves it on staging, and adds it to the merge gate. Automatic ingestion straight from the error monitor, with no one filing the bug, is on the integration roadmap.
Yes. Each scenario is shown to you with the reproduction evidence from staging, and one approval adds it to the suite. That is the only human step in the loop, and it is the reason the suite stays one your team trusts rather than one it mutes.
The scenario does not join the suite. Qodex keeps the draft with the runs it tried and what each returned, so a person can see why staging did not reproduce the failure: missing data, an environment gap, or a bug that only shows under production load. Nothing unverified gates a merge.
Everything the loop produces. Scenarios are standard Playwright and HTTP scripts, parameterized by environment variables, that you can read, edit and check into git. No proprietary runtime, no recording blob. If you leave, the tests leave with you.
No model call. Authoring uses a model once; replay is plain code execution, the same requests and assertions every time. So the hundredth regression costs the same to rerun as the first, and running the whole suite on every pull request, on a schedule, from CI or from a webhook is an engineering decision rather than a budgeting one.
Today Qodex reads the bugs your team files in Sentry, Jira, Datadog and PagerDuty, and accepts any error over a webhook. Pulling errors automatically from the monitor itself, New Relic included, is on the integration roadmap. The rest of the loop, from repo map to merge gate, is live now and does not depend on it.
Something else? Get in touch
Install the GitHub app, point Qodex at your staging URL, and the next pull request gets tested before it merges.
Checkout applies an expired promo code: failed. This pull request reintroduces incident 4471 from 12 June. Expiry check removed in promo/validate.ts.