What shipped fast
Cursor was great for moving through normal product work: routes, components, auth cleanup, and shipping the app shell around a paid flow.
The goal was a paid membership app with gated content, basic onboarding, and a billing flow tied to Stripe and Supabase.
Report signals
Quick Answer
Built a membership app in Cursor, and Stripe state drift became the real project
The product work was manageable. The paid access edge cases were the part worth fearing. Stripe and Supabase state drift became the real project. Payment succeeded events, webhook timing, and stale access checks created a class of bugs that looked small but eroded trust immediately.
Read these next
What shipped fast
Cursor was great for moving through normal product work: routes, components, auth cleanup, and shipping the app shell around a paid flow.
What broke
Stripe and Supabase state drift became the real project. Payment succeeded events, webhook timing, and stale access checks created a class of bugs that looked small but eroded trust immediately.
What they would do differently
I would model billing state explicitly and test downgrade, retry, and cancellation paths much earlier. The happy path was easy. The real subscription product was in the unhappy paths.
Related failure modes
Context window collapse: why AI starts breaking working code
Why long prompt chains drift, how it shows up, and what to change before the AI starts rewriting stable code.
Read the failure mode ->
Why builders get stuck at auth and databases
The real reasons auth, RLS, schema design, and database assumptions stall AI-built products.
Read the failure mode ->
Why Stripe, subscriptions, and webhooks break so many AI-built apps
The core failure modes around checkout, webhook drift, stale access state, and subscription logic.
Read the failure mode ->
Learn the workflow
A Newsletter
The hard part is not the signup form. It is deciding what the newsletter is actually about, what angle it owns, and what makes it worth opening next week too.
Read the workflow ->
A Blog
The hard part is not the page shell. It is creating content that is sharper than the average AI sludge and structuring it so search and humans can both trust it.
Read the workflow ->
A Saas App
The hard part is not generating pages. It is deciding the smallest useful product, wiring auth and billing sanely, and not letting the stack complexity outrun the problem you are solving.
Read the workflow ->
More real builds
The project was an internal operations tool with forms, filters, team-only actions, and a few admin automations. It looked like a straightforward CRUD build until edge cases, permission scope, and deployment friction started showing up.
What shipped fast
Replit was more useful than expected because internal tools often live in a messy middle: more code than a pure builder ...
What broke
The workflow got ugly in exactly the way internal tools usually do: exceptions, permissions, stale states, and operations logic th...
Verdict: For internal tooling, the right stack depends less on polish and more on how quickly the workflow becomes exception-heavy.
Read the full build report ->
The brief was simple: invite clients, show project updates, protect internal notes, and make the product look polished enough to hand off. The real question was which tool kept working once roles, private data, and admin surfaces showed up.
What shipped fast
Lovable was the best first step because the portal needed data, auth, and a client-facing shell immediately. Cursor beca...
What broke
The hard part was never the dashboard UI. It was making sure clients could only see their data, internal notes stayed private, and...
Verdict: Client portals expose the same truth repeatedly: private data and permission logic decide whether the app is real, not the UI.
Read the full build report ->
The test project was the same every time: waitlist, auth, paid plan, gated dashboard, and a small admin surface. The goal was to see which tool stayed useful once money, access, and state drift entered the build.
What shipped fast
Lovable was strongest when the job was full-stack momentum without owning every engineering detail yet. Bolt was useful ...
What broke
Every version looked closer to done than it really was until Stripe and access state got involved. The same project exposed the re...
Verdict: The same app test made the tradeoff obvious: Lovable for fastest credible MVP, Cursor for the version I would trust with money.
Read the full build report ->