If I Won.
- Role
- Idea, Design, Copy + Build
- Year
- 2026
- Build
- 10 days
- Stack
- Lovable · Claude API · Supabase

The landing page — a real jackpot from the last draw, updating itself twice a week
It started with a random idea.
It started at five to eleven on a Tuesday night with a question I half expected to talk myself out of: would an app where you simulate spending a EuroMillions jackpot actually do well, or was it just a fun thought?
The first thought I had wasn’t encouragement. The honest assessment was that the core concept was a novelty with a short shelf life. Without a sharp differentiator it would be something people use once, share once, and forget. That pushback turned out to be the most useful thing that happened in the whole project, because it forced the idea to earn its existence before a single line of anything was written.
My response was to flesh out what I actually meant. Not buy a yacht for x millions. A jackpot tied to the real EuroMillions draw, updating twice a week. AI personalisation that asks about your actual life and writes something back that is genuinely yours. An investment mini game where your money moves, where you make decisions and feel the consequences. A house, but which house, with which rooms. A business, and why.
Then came the question that decided everything about how this would get made: is this possible through vibe coding? I am not a developer. My background is UX writing, copywriting, and content. The answer was yes, with the right tools, and that set the constraint that shaped the entire build: I would own every creative decision and every word, and AI would handle the construction.
Somewhere in that exchange the idea stopped being a novelty and became a product.

The hub — a balance that counts itself down, and eight categories explored in any order
Nothing got built until it was designed first.
The single best process decision of the project: nothing went into the build tool until it had been designed, written, and signed off first. Before touching Lovable, a full clickable HTML prototype was built in the chat. This cost almost nothing and meant that by the time real building started, the questions being answered were does this work rather than what is this.
Partway through I asked the question that had been nagging me: is this design too AI basic? The base palette you see on every AI-generated landing page. The same gradient, the same font feel, the same midnight blue. The answer was to finish the functionality first and do one dedicated design pass at the end. The winner was Deep Plum: the existing gold kept exactly as it was, but the base shifted from cold navy to a plum-black. The most subtle option on the table and the most effective. It removed the generic AI dark-mode feel in one move without touching anything that already worked.
One detail from that pass taught me something about glow. An attempt to reduce the background radial glow made everything look flat and dead, and I reverted it within minutes. The glow was not decoration. It was doing structural work, giving the dark canvas depth and making the jackpot number feel like it was radiating significance. Some things look excessive in isolation and correct in context.
Where the writing became the engineering.
This is the feature that turns the app from a spending tracker into something people describe to other people. Completing a category triggers a live call to the Claude API carrying everything the app knows: your age bracket, living situation, dream location, risk appetite, country, and the exact choices you just made. Claude writes back three to five sentences that exist for you alone.

Your Story — written live from your real choices, in a voice with the AI tells stripped out
Making this work took real engineering, all built through prompts. The system prompt that travels with every narrative request bans em dashes outright. It bans journey, transform, elevate, unlock, next chapter, exclamation marks, and synthetic enthusiasm. And it carries the line that did the most work of any single instruction in the project: the narrative is not a summary of what they did, it is a portrait of who they are based on what they chose.
The first playtests exposed the failure mode immediately. The narratives were beautiful and partly fictional. One told me about the ~£200,000 monthly salary I had set up; I had set up no such thing. The fix was a hard instruction prepended to every category prompt: only reference choices explicitly present in the data, never invent, never extrapolate, treat empty fields as non-existent.
I was honestly sceptical of this layer until I saw it run on real choices. The business narrative was the one that won me over. Reading something that referenced the company name I had typed, the location I had chosen, and the fact that I had told the app I was waiting for a reason to quit my job, all woven together rather than listed back, was the moment the product justified itself.
The narrative is not a summary of what they did. It is a portrait of who they are based on what they chose.

The share card — a winner type, the leftover balance, and a question instead of an instruction
Vibe coding is real, and it is not magic.
I built and shipped a full product with branching logic, live external data, an AI integration, and a canvas-rendered share system without writing code. But every successful prompt was successful because the thinking had already been done. Lovable executed decisions; it did not make them. The skill is decomposition: big features go in as parts, bugs get isolated with single targeted prompts, and none of that is syntax.
Creative ownership is the differentiator. Anyone can prompt an app into existence now. What they cannot prompt into existence is taste. Every piece of copy in If I Won sounds like one person because one person rewrote all of it, batch by batch, line by line. The voice rules were so central they got compiled into the product itself as a system prompt. As the technical barriers keep falling, the originality and the judgment are the product. This is the thesis I keep coming back to, and this build is its proof.
The full story
Read the complete build diary
Ten days, every decision, every bug, and what each one taught. The long version, in full.