Lingo Lab is live and public: try it here. This case is less “here is a product” and more “here is an experiment.” I built a toy for fun, had AI reverse-engineer a spec from it, rebuilt it from that spec alone, and observed the differences.
The toy
Do you ever struggle to understand what your grandparents… parents… children… grandchildren… are saying? Let Lingo Lab decode it for you!
Lingo Lab rewrites any text in the slang and cadence of a chosen generation. Pick a from and a to, anywhere from the Silent Generation to Gen Alpha, drop a sentence or phrase, and it re-voices it while keeping the meaning.
I built it in about an hour on Lovable: a three-sentence prompt to get the bones, then around an hour spent refining the design and, more importantly, the voice of the output so the slang read as funny but authentic instead of cartoonish. It’s not perfect, but good for a few chuckles.
The experiment
Then I tried to break it on purpose. I asked Claude to reverse-engineer a full product spec from the live app, working only from what it could observe. It produced a 600-line PRD, including every colour token, the UI state, every line of copy, the responsive rules, and the component structure. I handed that PRD straight back to Lovable with a single line of instruction, “build the product as defined in this attached PRD,” and let it build from scratch.
The hypothesis
My bet was that the rebuild would be worse. Outside AI, the common wisdom is that more detail means more control. In vibe-coding circles it is closer to the opposite. Trust the model, give it room, and it makes better calls than a rigid spec would. I wanted to see who was right, and my money was on the vibe-coders. Specifically, I expected 600 lines of constraint to push the model to optimise for spec compliance over taste, leaving the clone stiff next to the hand-tuned original.
The result
It came back near-identical, about ninety percent of the way there on the first pass. Same layout, same colours, same copy, same chunky look and feel. That genuinely threw me; my hypothesis was wrong on its face.
So I looked closer, and found exactly two differences. They turned out to be two very different kinds of difference.
- A dropped feature and a frozen label. Once you run a translation, the clone was missing the Reroll button, and its output panel stayed labelled “Translation” where the original switches to “As a Gen Alpha” once a result lands.
- The output voice. Mine returned “The cat is white, ngl.” The clone returned “That meow-meow is giving snow realness.” Louder, and arguably funnier on first read, but more caricature than how a Gen Alpha actually talks to the point that it is nonsensical. The terminology I had tuned by hand did not carry over.
Two kinds of gap
The first gap was mine. The Reroll button and the live header only exist after you run a translation, and my teardown read the idle screen without ever clicking through, so it never saw them. That is operator error, not a limit of the spec. A teardown that walks every state, or better, one built as a repeatable skill and handed what it cannot reach on its own, closes that gap completely. It is a coverage problem with a known fix.
The second gap is the one worth keeping. The clone’s slang came out as louder caricature; mine was tuned to land as authentic. That tuning was the hour I spent refining the responses by hand, and it is the part that makes the ‘toy’ actually fun to use rather than merely functional. It lives in a prompt that runs on the server and never ships to the browser, so the deconstruction could only guess at it.
And here is what sticks. Even if I had torn the product down perfectly, every state captured, the rebuilt voice would still have needed roughly an hour of human refinement to match what I was going for and feel good to use.
In other words, ‘taste’ needed to be applied to bring a product from usable to enjoyable.
Product takeaways
- An AI deconstruction gets you about ninety percent of the way. Reverse-engineering the live app into a spec reproduced the layout, the copy, the look, and, where I had torn it down properly, the behaviour. Treat an AI-written PRD as a strong scaffold, not a finished product.
- A teardown is only as complete as the states it exercises. The missing Reroll was on me. An active, stateful teardown would have caught all required elements. Build the teardown as a repeatable process, give it access to what it cannot see, and account for every state.
- When building a product that produces subjective output (like an AI-driven feature), the last ten percent is human judgment and taste, and it cannot be specced away. The refinement that makes a product match its intent is the gap left by AI deconstruction. Here it was an hour of hand-tuning the responses. Even with a perfect teardown, it would be an hour again. Dogfooding what you build from AI is how you find that last ten percent. It is the input for a responsible greenlight.
What you can see, you can spec. The value is in what you can’t.
Disclaimer
This was run as a brief experiment. I understand there are a number of ways to reverse engineer using AI to get as close to like-for-like as possible. Whether that be through brute force, AI validation processes, or user input to retrain, there are a number of ways to solve the last 10%. However, all those still require blind faith that the model works. Even the engineering lead behind Claude Cowork at Anthropic has noted how important the thumbs down button is as an input to future model improvements. I firmly believe that the only way to truly feel confident in the launch of an AI-driven feature is to get your hands dirty with it.