Agentic quality assurance

Your agents write the code.
Who tests the app?

DeepQA boots the app behind your PR in a sandbox and puts an agent team on it in a real browser.

Evidence on every issue. An adversarial audit before anything ships.

Explore live resultsRequest early access

Campaigns

Real apps, tested in public, campaign by campaign.

A campaign takes a group of apps that people actually use and puts each one through the whole pipeline. Every report is published as it lands, and the numbers below are read from those published runs.

Arc Campaign

Arc

Celebrating Circle's Arc mainnet launch: DeepQA tests apps in the Arc ecosystem in place, most of them with an injected test wallet on Arc testnet.

54
apps
627
scenarios
8.2k
browser actions
9.9k
model calls
66.9M
tokens
12 h
testing time

Sui Campaign

Sui

DeepQA tests apps in the Sui ecosystem in place, with an injected QA wallet on Sui testnet.

20
apps
213
scenarios
3.5k
browser actions
3.1k
model calls
25.2M
tokens
3.1 h
testing time

GitHub Agent Apps Campaign

Open source

DeepQA tests agent apps that are trending on GitHub: workflow builders, chat UIs, coding agents, research agents and observability tools.

56
apps
631
scenarios
9.6k
browser actions
9.1k
model calls
57.2M
tokens
8.5 h
testing time

Web3

Two ways to take DeepQA on chain.

DeepQA for dApps

dApps tested the way a user meets them, on a real chain.

  • A real chain and a real wallet flow
  • A dedicated QA wallet whose key never enters the page
  • Every report published with its wallet activity

deQA

The web3 network side of DeepQA.

  • App owners post a QA plan
  • Any worker runs it with any engine, inside a pinned sandbox
  • Delivery is verified and settled on-chain

Every Run stays under your control.

DeepQA checks whether your app is testable before it boots anything, hard-stops at the cap you set, and lets you end a Run while it is still going.

Run controlsBudget limitstops at the capStopForce-stop
Completedmdn/todo-react Run #4report ready

12 scenarios run, 10 passed and 2 failed, 2 issues filed

RejectedPHP repositorynever booted

Suitability Check refused it before boot, in 2 seconds

InterruptedStopped by the operatorended cleanly

Stop after Explore, or Force-stop a running job

Recorded outcomes from real Runs on the platform.

Checked before anything boots

The Suitability Check reads the repo first. An app DeepQA cannot boot is turned away in seconds, before any model is called.

A cap you set

Every Run carries a budget limit you choose. The Run stops itself when it reaches the cap.

Progress you can watch

Every stage reports live on the timeline, so you always know where a Run is and what it has found.

A way out, mid-Run

Stop ends the Run cleanly. Force-stop cancels the job outright when you need it gone now.

QA is not code review.

AI code review reads your diff and comments on your code. DeepQA uses the product your users get. They catch different failure modes, which is exactly why you want both on every pull request.

Code review tools

Read your code

DeepQA

Uses your app

−Reads the static diff, line by line
✓Boots the app behind the change and drives it in a real browser
−Flags risky patterns in the code you changed
✓Finds reproducible defects in the flows your users actually run
−Leaves comments on the pull request
✓Files evidence-backed issue reports, with screenshots and repro steps on every one
−Done when the diff looks right
✓Done when the running product survives an adversarial audit

The missing layer. Keep your review bot for the diff. DeepQA is what runs after the code looks right: the layer that checks the shipped product still works.

#1 Discover and replay

It learns your app, then keeps the plan.

Point DeepQA at a PR or commit. Agents browse the running app on their own, with no sitemap and no scripts, and turn what they find into a deterministic test Plan that the next Run can reuse.

/installation/admin/customers/admin/dashboard/admin/estimates/admin/items/admin/estimates/1/viewAppMap of every page and form found

Boots from any PR or commit

The Runner clones your repo and starts the app in a fresh sandbox, then destroys it when the Run ends.

Explores on its own

Agents browse pages, fill forms, and trigger actions with zero configuration, and the AppMap records everything they reach.

mdn/todo-react stored Plan with 12 scenariosdeterministic
New planReuse latest planreplays against the commit you pick
Scenario 1Create a new task successfullyP0
Scenario 4Delete a task from the listP0
Scenario 6Filter tasks by Active and CompletedP1
+Scenario 5Add an empty or whitespace-only taskP0
+Scenario 8Save an empty name when editingP1

Run #4 on this Plan: 10 passed, 2 failed, 2 issues.

Deterministic by design

The Plan is prioritized scenarios you can read and diff like code, and the same Plan replays against any SHA.

Yours to choose, every Run

Reuse the latest Plan for comparable regression coverage, or write a new one when the app has moved on.

#2 Test and audit

A real browser, then an adversarial audit.

Scenarios fan out across parallel agents driving a real browser. Before anything reaches your report, a Critic re-runs every high-impact finding and tries to break it.

localhost:8090/admin/estimates/create
Save estimate
Agent 1

/admin/estimates/create

Scenario 10

Agent 2

/admin/payments/create

Scenario 17

Agent 3

/admin/settings/backup

Scenario 31

Three agents work in parallel, and every step is screenshotted.

Behaves like a user

Clicks, types, uploads, and navigates the real UI, not a simulated DOM.

Evidence on every issue

Screenshots of the moment it broke, console traces, and step-by-step reproduction.

Scenario 1 findingCritical→ re-verified live →confirmed

Clicking Create custom assistant crashes the Assistants hub into an error screen

Reproduced live, then reproduced again by hand.

Scenario 3 findingHigh→ re-verified live →withdrawn

Create Skill form rejects valid input with a vague error

The evidence contradicted the claim that the input was valid. The claim stays visible in the report.

On this Run the Critic reviewed 2 findings, re-verified both live and withdrew 1.

Re-verified live

High-impact findings are re-run against the app before they ship as Issues.

Withdrawn stays visible

False positives are withdrawn on the record, never silently dropped, so you can check the audit instead of trusting it.

#3 Share and choose

Private until you publish.

Every Run finalizes into a private, evidence-backed report. Publish it and the full record goes live on Explore. The model behind it is your call.

Run #1 reportprivate
2 medium1 low1 withdrawn
Publishdeepqa.app/r/xmanrui/OpenClaw-bot-review/runs/1

Screenshots are served through signed URLs while the Run is private.

Gemini balancedon Vertex AI
Gemini faston Vertex AI
Claudeorchestrator profile
OpenAIyour key
OpenRouteryour key

Swap the model profile and the pipeline stays the same.

Private by default

Finalized Runs are visible to you until you decide otherwise, with screenshots served through signed URLs.

Publish when you choose

One action puts the full record on the public Explore page, as a link anyone can read.

The whole record, verdicts included

Issues, screenshots, and the findings the Critic withdrew. Security issues publish as a summary, so a fix can land before the details do.

The model is your call

Gemini on Vertex AI by default, or bring your own key for OpenAI, Anthropic, OpenRouter, or any OpenAI-compatible endpoint. Keys are stored in Secret Manager.

Traceable numbers.

199

QA runs executed across benchmark and platform campaigns

173

real applications put under test

268

confirmed defects in published runs alone

21

critical vulnerabilities uncovered, incl. auth bypasses

Outperforms the published state of the art on the WebTestBench benchmark: 36.7% vs 26.4% macro F1*

And calibrated, not trigger-happy: 6 criticals on a deliberately buggy app, 0 on a mature product, 2 real ones in between. The finding rate tracks reality.

* Held-out macro F1 versus the strongest published result. Above the published best, not statistically separable. Audited precision 100% on every app where DeepQA raised an alarm.

Questions, answered.

What does DeepQA test?+

The running application, not the code in isolation. Agents boot the app behind your PR or commit and test it through a real browser: flows, forms, edge cases, and regressions.

How do I trigger a Run?+

Like a GitHub Actions workflow: automatically on a pull request, or dispatched manually against any PR or any commit. Every Run records the exact SHA it tested and the PR when one exists.

What repos are supported?+

Node and Python fullstack apps that boot without external services. Connect a public GitHub repo and DeepQA takes it from PR to audited report.

Is my code kept?+

No. Each Run executes in an isolated sandbox that is destroyed when the Run finishes. Only the Run's artifacts (report, issues, screenshots) persist, and they stay private unless you publish them.

What if DeepQA cannot run our app?+

The Suitability Check reads the repository before anything boots. Stacks DeepQA cannot start, such as an app that needs external services it has no access to, are turned away in seconds, and a rejected Run costs nothing.

How is it priced?+

DeepQA is in early access, so we onboard teams directly with pricing matched to usage. Spend is not open-ended: every Run carries a budget cap you set, the Run hard-stops there, and live cost is visible while it runs.

Put an agent team on your next pull request.

Connect a repo, dispatch a Run, and read an audited, evidence-backed report the same day.