Hero Background

Next-Gen App & Browser Testing Cloud

Trusted by 2 Mn+ QAs & Devs to accelerate their release cycles

Next-Gen App & Browser Testing Cloud
TestMu AI ExperimentsAI

I Built a Salesforce Clone with Claude in 25 Minutes, Then Verified It End-to-End with Kane CLI in 15

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.

Author

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.

  • Built: "CRMforce," a full-stack Salesforce-style CRM (leads, contacts, accounts, opportunities pipeline, tasks, dashboard, auth, global search) with Claude using the Fable model, in about 25 minutes.
  • Verified: end-to-end with Kane CLI in about 15 minutes: real-browser journeys, visual and UI checks, a console-error sweep, and direct API tests.
  • Caught: a real layout bug, the opportunities Kanban board overflowed the viewport, which I then fixed and re-verified.

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 Experiment: Build Fast, Then Prove It Works

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.

Phase 1: Building CRMforce

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:

  • Persistence: a local, file-backed JSON store so the app runs instantly with a dev server, no external database required.
  • Scope: the full CRM, not a toy. A dashboard plus Leads, Contacts, Accounts, Opportunities, and Tasks, all with full create, read, update, and delete, plus an auth gate, an activity timeline, and global search across objects.
  • Isolation: everything lived under a scoped route with its own stylesheet, so it never touched the existing landing page.

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:

  • A REST API with GET, POST, PATCH, and DELETE across every collection, plus search and auth routes.
  • A middleware auth gate protecting the app with a demo login.
  • A Salesforce Lightning-inspired UI: a dark sidebar, KPI tiles, a pipeline-by-stage chart, an activity timeline, data tables with inline editing, and a drag-and-drop opportunity Kanban board.

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.

Phase 2: The First Verification Attempt

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:

  • I could not easily see how the final UI looked without asking for screenshots one at a time.
  • The output was long strings of prose describing what happened.
  • Screenshots landed in some folder on my machine that I had to go find and open manually.

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

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

Phase 3: Verifying with 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.

Functional End-to-End Journeys

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 --headless

Visual and UI Checks

Here 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."

Console-Error Sweep

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.

Direct API Testing

Kane CLI made the HTTP calls itself and asserted on real status codes and response bodies:

  • Auth: valid credentials returned 200, wrong password returned 401.
  • Full CRUD lifecycle: POST returned 201, and the created record's id was chained straight into the follow-up GET, PATCH, and DELETE calls, each asserted (200, status updated to "Qualified," then deleted).
  • Search: returned 200 with hits across accounts, contacts, opportunities, and tasks.
  • Negative case: an unknown collection correctly returned 404.

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

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 Fix: Build, Verify, Fix, Re-Verify

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.

Next-generation test execution with TestMu AI

Kane CLI vs the In-Browser Agent

Both drove a real browser. The difference was what I got back.

CapabilityIn-Browser Coding AgentKane CLI
Result formatProse describing what happened; I decide pass or fail myself.Per-assertion pass or fail as NDJSON, one JSON object per line.
AssertionsNo native concept of an assertion."Assert status is 401," "assert no console errors," "assert body contains X" are first-class.
Console errorsCan read console messages if asked.Counts them per step and fails the run if the count is not zero.
API callsCannot chain a response id; I would drop to a separate HTTP client.Issues and verifies HTTP requests itself, threading an id into later calls.
ReportingScreenshots buried on disk, no exportable report.Shareable dashboard URLs, run unattended from a single prompt.
Native drag-and-dropHandled 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.

Why I Now Want a Verification Specialist

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:

  • I walk away with evidence I can share, not screenshots buried on my disk.
  • It decides pass or fail, so I am not left eyeballing every screen.
  • One prompt runs the whole journey (login, CRUD, search) hands-off.
  • UI, visual, console, and API checks all live in one place.
  • Every run is reproducible and auditable whenever I want to re-check.

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.

The Takeaway

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

Blogs: 65

  • Twitter
  • Linkedin

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.

Open in ChatGPT Icon

Open in ChatGPT

Open in Claude Icon

Open in Claude

Open in Perplexity Icon

Open in Perplexity

Open in Grok Icon

Open in Grok

Open in Gemini AI Icon

Open in Gemini AI

Copied to Clipboard!
...

3000+ Browsers. One Platform.

See exactly how your site performs everywhere.

Try it free
...

Write Tests in Plain English with KaneAI

Create, debug, and evolve tests using natural language.

Try for free

AI Verification FAQs

Did you find this page helpful?

More Related Blogs

TestMu AI forEnterprise

Get access to solutions built on Enterprise
grade security, privacy, & compliance

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests