Built a full SaaS MVP in one evening with Cursor + Claude Code — workflow breakdown

I run a small web agency and I’ve been using Cursor for all my builds since late last year. Last Friday I decided to see how far I could push it, building an entire SaaS product from an empty repo to production-ready in a single session.

The product is a content provenance tool, SHA-256 hashing, steganographic watermarking on images, PDF certificate generation, public verification portal, Stripe billing with three tiers and one-off credit packs, full dashboard. Next.js 14 App Router, TypeScript, Tailwind, Supabase for auth and database, Railway for hosting. 92 files, 22 routes, 13 commits, zero errors at the end of it.

The thing that made the difference wasn’t speed, it was structure. I’ve tried the “just start coding and see what happens” approach and it falls apart around commit 4 when the AI loses context and starts contradicting earlier decisions. So I switched to what I call MODE: PLAN FIRST.

Every prompt starts with “Present the full implementation plan for review before writing any code.” The AI lists every file it will create, every dependency, every database migration. I review it, adjust anything that’s wrong, then approve. Only then does it start writing code.

The other thing that worked was running builds in phases. I broke the whole product into 11 numbered steps, each one self-contained with clear inputs and outputs. Step 1 was scaffolding and config. Step 2 was database schema and migrations. Step 3 was auth. And so on. Each step gets its own prompt with full context of what already exists and what needs building next.

I also ran two Cursor sessions in parallel on different parts of the codebase while Claude Code handled a third task in the terminal. Three AI coding agents working simultaneously on different layers of the same product. The trick is making sure each one has clear boundaries so they’re not stepping on each other’s files.

Things I learned the hard way:

Pin your Next.js version. I wasted an hour on a build that broke because an AI agent decided to upgrade to Next.js 15 mid-session and half the App Router conventions changed.

Always include the existing file structure in your prompt when you’re past step 3 or 4. The AI doesn’t remember what it built two prompts ago unless you tell it.

Defensive error handling matters more than clean code on the first pass. Get it working end to end first, refactor later. Every time I let the AI gold-plate a function before the next step was connected, I lost time.

If a prompt is generating more than about 200 lines in one go, break it smaller. The quality drops noticeably past that point and you’ll spend more time fixing than you saved.

For context I’m a one-person agency, not a dev team, and I was a mechanic in the British Army before any of this. Cursor genuinely changed what’s possible for solo builders. Happy to answer questions about the workflow if anyone’s doing similar things.

1 Like