Next-Gen App & Browser Testing Cloud
Trusted by 2 Mn+ QAs & Devs to accelerate their release cycles

A build-then-verify experiment: a working Salesforce-style CRM from Claude, then a real end-to-end verification pass with Kane CLI, including the layout bug it caught.

Bhawana
Author
Last Updated on: July 3, 2026
Building software has never been faster. But "it builds" and "it works" are two very different claims, and the gap between them is exactly where most AI-generated apps quietly fall apart.
So I ran a small experiment: build a real full-stack app with an AI agent, then verify it the way a QA engineer actually would, and see what the verification step is really worth. The result was a working Salesforce-style CRM built in about 25 minutes, and a genuine end-to-end verification pass in about 15.
Here is the full story, including the bug verification caught, and why I walked away convinced that verification deserves its own specialist agent.
Overview
What did the experiment measure?
A build-then-verify loop on one app: how fast an AI agent ships a full-stack CRM, and what a dedicated verification pass adds on top.
Where does the tooling come from?
Both the build and the verification ran through AI agents. The verification pass used Kane CLI from TestMu AI, a deterministic browser agent that turns plain-English objectives into pass or fail results, with every run saved as shareable evidence in TestMu AI Test Manager.
The premise was simple. A generalist coding agent can produce a lot of working software in a short window. The open question is what you actually have at the end: something that compiles, or something a user can use.
To find out, I split the run into two halves and timed each. The build half asked Claude to produce a full CRM. The verify half asked a verification agent to prove, in a real browser, that the CRM did what it claimed. Two numbers came out of it: 25 minutes to build, 15 minutes to verify. The interesting part is not the speed. It is what those 15 minutes surfaced.
I asked Claude to build a Salesforce mock clone, full-stack, using the Fable model for the implementation. Instead of diving straight into code, Claude switched into plan mode: it explored the existing repo (a Next.js 15 App Router project with React 19), asked a few clarifying questions, and wrote a plan I could approve before a single file changed.
The decisions that shaped the build:
Claude owned the architecture and the shared foundation (the data store, the REST API, the auth middleware, the design system), then delegated the six feature pages to parallel Fable subagents, each working from a precise shared contract. It reviewed and integrated their output, fixed two small inconsistencies, and ran a production build to catch compile errors.
What came out the other end:
Elapsed time: roughly 25 minutes. The build was fast and, on first inspection, genuinely good. The question was whether "looks done" survived contact with a real browser.
The plan's final task was end-to-end verification. Claude reached for its own in-browser tooling first (Claude-in-Chrome). To be fair, it worked: it logged in, clicked through the dashboard, and even performed a drag-and-drop on the Kanban board while I watched the column totals update.
But as a verification experience, it left me wanting:
It was a capable pair of hands driving a browser. It was not a report. There was nothing I could scan, share, or trust at a glance. This is the exact gap a purpose-built verification agent is meant to close.
Note: An AI coding agent can click through a browser, but it cannot hand you a structured pass or fail. Kane CLI can. Try Kane CLI
So I pointed the agent at Kane CLI instead and ran verification as four distinct passes. Kane CLI is a deterministic browser agent: it drives real Chrome from natural-language objectives and emits one JSON object per line, so every step and every assertion becomes machine-readable evidence rather than prose.
Six real-browser flows, each a full journey (login, then the feature): the auth gate and dashboard, creating a lead, the opportunities Kanban, global search, toggling a task complete, and creating an account.
All six passed. 198 browser steps total, zero failed steps. Every run produced structured NDJSON I could parse: extracted values, per-assertion results, duration, and a shareable dashboard link. A single objective reads like the outcome it verifies, not like selector plumbing.
kane-cli run "log in as the demo user, go to Leads, create a lead named 'Acme Corp', assert the leads table contains 'Acme Corp', store the new lead id as 'lead_id'" --agent --headlessHere is where it earned its keep. I ran visual-assertion objectives across the pages: sidebar rendering, KPI cards, table styling, badge colors, and the Kanban layout. Most passed. One failed, and the failure was real. Kane CLI recorded exactly what it saw on screen:
Recorded Kane CLI observation: "I can clearly see Qualification, Proposal, Negotiation, and Closed Won, with partial cut-off columns at the far left and far right. The far-left sliver does not show the 'Prospecting' header, and the far-right sliver does not show the 'Closed Lost' header, so all six expected headers are not visibly present on screen."
The Kanban board was wider than the viewport. All six pipeline stages could not be seen without horizontal scrolling. That is a genuine UX issue a scripted visual check surfaced with a precise, recorded observation, not a vague "looks off."
Kane CLI's DevTools console analyzer visited every page and counted console entries per page, returning zero errors and zero uncaught exceptions across Dashboard, Leads, Contacts, Accounts, Opportunities, and Tasks.
Not "I did not notice any errors." An actual count of zero, enforced as a pass or fail gate. That distinction is the whole point: an observation you can eyeball versus a number you can assert on.
Kane CLI made the HTTP calls itself and asserted on real status codes and response bodies:
This is a true API lifecycle test, not isolated pokes at endpoints. Chaining a real id from one response into the next is what separates a lifecycle assertion from a smoke check.
Note: Every Kane CLI run uploads to Test Manager and prints a 7-day ShareLink you can drop into a PR or bug report. See a pre-PR UI check in practice. Run a UI check before the PR
The visual test found the Kanban overflow, so I fixed it. I switched the board from a fixed-width scrolling grid to six equal columns that shrink to fit the viewport, tightened the spacing, and let long account names truncate gracefully.
Then I re-verified in a real browser: all six stages (Prospecting through Closed Lost) now fit edge-to-edge with no horizontal scroll, and drag-and-drop still worked, with column totals updating live.
Build, verify, fix, re-verify. The loop worked exactly as it should, and verification is what closed it. Without the recorded visual failure, the overflow ships and a user finds it first. This is the same loop an AI coding agent can run on its own once it can call a verifier, a pattern I walked through in how Claude Code and Kane CLI close the loop together.
Both drove a real browser. The difference was what I got back.
| Capability | In-Browser Coding Agent | Kane CLI |
|---|---|---|
| Result format | Prose describing what happened; I decide pass or fail myself. | Per-assertion pass or fail as NDJSON, one JSON object per line. |
| Assertions | No native concept of an assertion. | "Assert status is 401," "assert no console errors," "assert body contains X" are first-class. |
| Console errors | Can read console messages if asked. | Counts them per step and fails the run if the count is not zero. |
| API calls | Cannot chain a response id; I would drop to a separate HTTP client. | Issues and verifies HTTP requests itself, threading an id into later calls. |
| Reporting | Screenshots buried on disk, no exportable report. | Shareable dashboard URLs, run unattended from a single prompt. |
| Native drag-and-drop | Handled the Kanban card drag well. | Cannot reliably automate native HTML5 drag-and-drop. |
One honest counterpoint: the in-browser agent did drag-and-drop better. Its click-drag actually moved a Kanban card and I watched the totals change, whereas Kane CLI cannot reliably automate native HTML5 drag-and-drop. So I used the right tool for that one interaction. Verification is not about a single winner; it is about structured evidence for the 95% of checks that are assertable.
Building agents are generalists, and that is the point. But verification has a different shape, and after this experiment I want a specialist for it:
The same properties make Kane CLI a drop-in verification step for an AI coding agent or a CI pipeline. Install the skill once and Claude, Codex, or Gemini can call it, read the run_end line, and decide whether to ship or fix. In CI, standard exit codes fail the build on a broken flow, and when the suite is ready to scale it schedules on the KaneAI agentic testing platform across broader OS and geography coverage. Every run in this experiment also landed in TestMu AI Test Manager automatically, so the evidence is not just on screen, it is a growing, auditable test library.
If you want to see the same idea from the terminal side, the walkthrough in introducing Kane CLI covers the agent-mode setup end to end.
Start here: the next time an AI agent hands you a "finished" app, do not eyeball it, point a verifier at it. Install Kane CLI, write one plain-English objective per critical flow, and let it return a pass or fail with a ShareLink before you review anything by hand. The Kane CLI documentation covers install, agent mode, and CI wiring in a few minutes.
The build in this experiment was fast and genuinely good. But the verification is what turned "it looks done" into "here is proof it works, and here is the one thing that did not." A generalist agent can click around a browser. A verification-first agent gives you a report you can act on and share.
Building is fast now. Verification is where you want a specialist. Point your agent at Kane CLI for agentic verification.
Author
Bhawana is a Community Evangelist at TestMu AI with over 3 years of experience creating technically accurate, strategy-driven content in software testing. She has authored 50+ blogs on test automation, cross-browser testing, mobile testing, and real device testing. She also serves as Product Marketing Manager for Kane CLI, the command-line tool that runs browser automation from the terminal using natural-language flows in a real Chrome browser. Bhawana is certified in KaneAI, Selenium, Appium, Playwright, and Cypress, reflecting her hands-on knowledge of modern automation practices. On LinkedIn, she is followed by 6000+ QA engineers, testers, AI automation testers, and tech leaders.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance