Lessons in building product with AI
The tips and observations I wish I could go back in time to give myself sooner

An ongoing list based on many, many mistakes.
UPDATE: Bulletproof foundations allow you to forgive a few shootouts later on
Something that really struck me today is that following really strict planning and rules when you're building the early bits of the product and especially the backend pays off in allowing you to then have a bit of fun and experimentation on the frontend features later on.
I'm at a point now, where I can create a branch in GitHub and more or less go crazy vibe-coding with Claude+Serena – knowing I can just roll back to the last commit if I get in trouble.
Am I risking letting some showstopper bugs through? Maybe... but I feel far less vulnerable for knowing I have some great debug/testing etc infra in place.
If it feels like fun, you have broken it already.
The first few days using Lovable were exhilarating, then I segued into Claude Code for bigger rewrites and redesigned the interface, and everything looked glorious. Then I realised it was irreconcilably broken.
If you aren't concentrating, double-checking, keeping a picture of the structure in your mind, you're going to end up with more vibes than coding. And not good vibes.
Think and plan
- Always ask AI to think and make a plan, not just write code. Then approve or tweak or ask it to simplify its plan.
- Claude has explicitly mapped different levels of thought: think < think hard < think harder < ultrathink
Documentation
- Have a top level product spec AND documents for feature specs in the folders where they live. Have a changelog that keeps a history of changes. Tell the system to create markdown files with checklists for anything more than a few steps.
- If you try Claude+Serena MCP, you may need to regularly ask the tool to write a snapshot of your work so you can move to a fresh chat.
Always refresh AI’s context/ memory
- Remind the tool to read important, relevant files before any task. It might be the overall product spec, or the feature spec, or your design rules, or something else.
Use time travel
- Inevitably, sometimes the AI will try to do work that’s wrong. You have to UNDO this work, don’t try and correct it through chat.
- Sometimes, you can spin up a branch and explore a problem, find the right solution — then revert to your previous state and start with just what you know to be the right solution. It’s like time travel.
Logs and tests
- Create the test first based on input/ out put pairs and make sure it doesn’t introduce mock versions of things that will distort your result. You might also need an explicit test user setup for this.
Use images and mockups to communicate changes
- Screenshot on iPad, tweak in Pixelmator, upload as example.
Regular review checkins
- Start every day asking Claude Code/ Serena to review the whole repo and give you an analysis of anything that looks confusing, conflicting, concerning etc.