About this case: At the client’s request, company name and personal details have been anonymized. The client operates in a competitive market and wants to protect their technological advantage.
”It works on my laptop, but…”
The founder runs an accounting firm. Not a developer, but curious about technology. When Cursor came out, he started experimenting. “I had always been frustrated looking at planning tools that didn’t do what I wanted. With Cursor I thought: then I’ll build it myself.”
And he did. Evenings and weekends spent prompting, iterating, and debugging with ChatGPT. After three months he had a working app: a planning tool specifically for accounting firms, with smart deadline reminders and an AI assistant that automatically scheduled tax periods.
“It actually worked. My team used it daily. Colleague firms saw it and wanted it too.”
But that’s where the problem began.
The gap between prototype and product
As soon as he wanted to share his app with other firms, he got stuck on questions that Cursor and ChatGPT had no answer to:
- How do I make sure firm A can’t see firm B’s data?
- How do I connect payments without having to store credit cards myself?
- Why does the app crash when more than 10 users log in at once?
“I had a working prototype, but no idea how to turn it into a real product. Every YouTube tutorial was about building a todo app, not about multi-tenancy or GDPR compliance.”
He tried it himself, but every fix created new bugs. “I was spending more time putting out fires than running my own firm.”
“I had built something that was 80% done. But that last 20% turned out to be 80% of the work.”
Not throwing away, but developing further
When he came to us, he expected us to throw everything away and start over. “Other developers looked at my code and said: this needs to be completely redone. But you said something different.”
We saw value in what he had built. Not in the architecture—that was indeed not production-ready—but in the validation. He had spent three months collecting feedback from real users. He knew exactly which features worked and which didn’t. That’s priceless.
Our approach:
- Keep the UI and UX - His users were used to the interface. We kept that intact.
- Rebuild the core - Authentication, database structure, and APIs were set up fresh with scalability in mind.
- Add what’s missing - Multi-tenancy, Stripe integration, audit logging, and monitoring.
“It didn’t feel like starting over. It felt like upgrading. My app, but grown up.”
6 weeks from prototype to SaaS
We worked in short one-week sprints, with a working version at the end of each week that he could test.
Week 1-2: Foundation Set up new Next.js application with TypeScript, Supabase for authentication and database, and a clean project structure. Migrated his existing UI components.
Week 3: Multi-tenancy Each organization got its own workspace. Row-level security in Supabase so data stayed isolated. Admin dashboard to manage customers.
Week 4: Payments Stripe integration with subscription management. Automatic invoices, trial periods, and upgrade flows.
Week 5: AI features restored The OpenAI integration he had built worked, but was fragile. We added rate limiting, better error handling, and fallbacks.
Week 6: Launch prep Monitoring with Vercel Analytics, error tracking, and an onboarding flow for new customers.
“After six weeks I had a product I wasn’t afraid of. I finally dared to invite other firms.”
From side project to business
The app now runs at multiple accounting firms. The subscription revenue is enough to dedicate serious time to it, alongside running his own firm.
“The best part is: I can still make small changes myself in Cursor. Change a text, add a field. But the core is solid. I don’t have to be afraid of breaking something.”
We have a support arrangement: he does the small things himself, and calls us when something needs to change in the infrastructure. “It feels like a partnership, not a client-vendor relationship.”
Lessons learned
-
AI-built code is not throwaway code
It’s validation. If users are using it, you have something valuable. The architecture can always be improved, but product-market fit cannot. -
The last 20% is the hardest
Authentication, payments, multi-tenancy, monitoring—these are the things that distinguish a prototype from a product. And these are the things AI tools are (still) not good at. -
You don’t have to understand everything
The founder doesn’t understand exactly how row-level security works. He doesn’t need to. He does understand what his customers need. We fill in the technical knowledge. -
Starting small pays off
A handful of customers is not unicorn growth. But it is real validation, real revenue, and a foundation to build on.
“To everyone who says ‘I built an app with AI but don’t know how to continue’: it’s possible. You don’t need a CTO. You need someone to help you bridge the last 20%.”