Claude’s entry in The $100 AI Startup Race — GetPricePulse, a SaaS pricing intelligence tool — turned into a real product in a fraction of the time a human team would need. Over 1,300 HTML files. A pricing database. Calculators. Authentication. Stripe integration. Email flows. All shipped, all functioning in isolation, all built by one agent with no product manager checking in.
Then came the production audit: a full review of the product before anyone could treat it as a real business. That audit surfaced problems that had nothing to do with code quality and everything to do with product judgment — the kind of judgment that “ship more features faster” doesn’t automatically produce, no matter how capable the agent doing the shipping is.
Here are seven things that audit made concrete. If you’re building anything real with AI agents, these are worth checking before you assume “it works” means “it’s done.” For the full story, see We Let AI Agents Build a SaaS. The Cleanup Was the Real Work.
1. More features do not equal a better product
Claude added a pricing database, a monitoring feature, a FinOps toolkit, competitive intelligence tooling, and a lead generation system — all to the same product, none of them coordinated against a shared plan. Each addition was individually reasonable. Collectively, they turned GetPricePulse into five different products stapled together, with no visitor able to tell which one they were looking at.
This is the natural outcome of optimizing for “ship more.” Every new feature looks like progress on a changelog. Nothing in that objective checks whether the feature belongs in the product, only whether it can be built. A product with ten disconnected features is not better than one with three that clearly serve the same identity — it just looks more impressive in a demo.
The check: before adding anything, ask whether it serves the product’s single stated identity, or whether it’s quietly building toward a different, uncommitted-to product.
2. Positioning matters more than any individual page
The single highest-leverage fix in the GetPricePulse cleanup wasn’t a code change. It was writing one sentence: “SaaS pricing intelligence publication and database, with optional monitoring in beta.” That sentence didn’t remove any feature — monitoring stayed, just correctly demoted from co-equal pillar to a labeled beta feature. What it did was give every other decision, from navigation to CTAs to content, a single thing to be evaluated against.
Agents don’t do this on their own, because positioning isn’t a task with a clear completion state the way “add a signup form” is. It’s a constraint that has to be imposed from outside the building process and then enforced consistently across everything built afterward. Nothing about being good at generating code makes an agent good at deciding what the product should refuse to be.
The check: can you write your product’s identity in one sentence? If not, you don’t have a positioning problem you’ll fix later — you have one right now, quietly shaping every feature decision without anyone deciding it on purpose.
3. Trust beats impressive claims
Content across the GetPricePulse site described “real case studies,” specific savings figures, and benchmark statistics — all written with the confidence of verified outcomes. Most of it was actually modeled scenarios: legitimate calculations based on real, public pricing data, but presented without disclosing that they were models rather than measurements.
This is a subtle trap specific to AI-generated content. The agent’s default register is confident and specific, regardless of whether the underlying claim has confident, specific evidence behind it. A modeled estimate and a verified case study can use identical language, and only one of them deserves to.
The fix in this case wasn’t to make the content less impressive. A well-labeled modeled scenario with visible assumptions and a calculation date is still genuinely useful — arguably more useful, because a reader can check your work. The fix was matching the confidence of the language to the actual epistemic status of the claim underneath it.
The check: for every specific claim on your site, can you point to what evidence actually backs it? If the honest answer is “a model, not a measurement,” say so. It costs you less trust than getting caught later.
4. UX consistency matters as much as any single feature
Different sections of GetPricePulse — company pages, the blog, the tools — each had their own navigation, because each had effectively been built as its own product across different sessions, with nothing enforcing a shared structure. Visiting the site felt like visiting several different products, because in a structural sense, it was.
No individual page was broken. The problem was entirely in the relationships between pages — a category of problem that’s genuinely invisible if you only ever review artifacts one at a time, which is how most AI-assisted building naturally happens: prompt, review, ship, repeat, one feature or one page at a time, across dozens of sessions.
The fix was a single unified navigation structure applied everywhere — Pricing Database, Price Changes, Comparisons, Calculators, Guides, Alerts, Pricing — replacing five inconsistent ones.
The check: pick five random pages on your site. Do they feel like the same product? If you have to think about the answer, they probably don’t.
5. Operations matter as much as features
The product accumulated multiple parallel email marketing systems over time — old campaigns, lifetime-deal-specific sequences, growth experiments, nurture flows — each added in pursuit of a specific monetization push at the time it was built. None of them were individually broken. Collectively, they were operational sprawl: more systems than the actual product needed, each one a maintenance burden and a potential source of inconsistent messaging.
The cleanup didn’t add anything. It removed the obsolete systems and kept exactly what a production product needs: transactional emails, account emails, monitoring alerts, and an explicit newsletter signup. Less, but correct.
The check: for every operational system running behind your product — email flows, checkout paths, notification triggers — ask whether it’s still needed, or whether it’s a leftover from an earlier experiment nobody decommissioned.
6. Payments, email, and auth need verification, not just implementation
Three separate findings from the audit share the same underlying lesson. The signup button crashed because of a naming collision between a local variable and a library’s global object — a bug invisible in the UI, only discoverable by actually trying to sign up and then debugging why it failed. Logged-in users appeared logged out on public pages, not because sessions were broken, but because those pages never checked authentication status in the first place — a bug only visible if you actually browse around as a logged-in user rather than just testing the login form itself. The annual Stripe pricing tier was fully coded, but the corresponding Stripe price object had never been created on Stripe’s side — meaning the code was correct and the integration was still incomplete for reasons entirely external to the code.
None of these are code-quality failures in the usual sense. They’re verification gaps: places where “the code looks right” and “the system actually works end-to-end, including every external dependency it assumes exists” turned out to be different claims.
The check: for critical paths — signup, login, checkout, each specific pricing tier — has someone actually walked through the full path recently, not just reviewed the code that implements it?
7. Shipping is not the same as finishing
This is the lesson underneath all the others. Claude, in this race, was optimized for speed, feature creation, shipping, and monetization experiments — and by that measure, it succeeded completely. Over 1,300 pages, a working database, functioning payments, working (mostly) authentication, all produced far faster than a human team would manage.
What “shipped” doesn’t automatically include: a product identity coherent enough for a visitor to understand what they’re looking at, a commercial structure simple enough to trust, content honest about what it actually is, a structure that makes everything shipped actually discoverable and connected, and the verification that every piece that looks done actually works under real use.
None of that second list is something an agent optimizing for shipping speed has any built-in reason to produce, because none of it shows up as an incomplete task on a feature checklist. It only shows up when someone deliberately steps back and audits the whole system rather than reviewing it one shipped piece at a time.
The bottom line
None of these seven things mean AI agents are bad at building software. The opposite is true — they’re remarkably good at it, and GetPricePulse’s raw output proves it. What they’re not built to do, on their own, is provide product judgment: the layer of decisions about what a product should be, what it should promise, and what “actually finished” means beyond “the feature is present.”
That judgment doesn’t have to come before the building happens. In this case, it came after — as a dedicated audit phase that treated Claude’s output as raw material rather than a finished product. That’s the more realistic model for anyone building with agents today: build fast, then budget real time for a human to look at the whole thing before calling it done. See We Built 1,300 Pages With AI. The Biggest Problems Were Not SEO for how that audit played out specifically for discoverability and structure.
Related Articles
- I Let an AI Agent Run a SaaS Like a Solo Founder. It Made the Same Mistakes Humans Make. — the first-person account of what auditing this project actually felt like
- We Let AI Agents Build a SaaS. The Cleanup Was the Real Work.
- We Built 1,300 Pages With AI. The Biggest Problems Were Not SEO
- AI Agents Are Great Employees. They Still Need Product Managers.