IPA and vibecoding

A pun, an IPA, a holiday

The idea was born on holiday, IPA in hand, in that soft patch where the brain consents to finding funny the jokes it would reject mid-week. We need a site with a terrible pun for a name. I P Yeah! — with the exclamation mark, like a sigh of relief after the effort.

The pun was bad. It still is. That’s the point, not the accident.

For years, the idea sat exactly where good pub jokes go: nowhere. I’d repeat it to myself every so often to check it was still bad, which amounted to checking it was still good. Then I came across Bolt.new.

Bolt, Lovable, Claude — three generations, zero surviving lines

Bolt was the entry point. The first hands-on encounter with vibecoding, the first time “I want a site called I P Yeah” could be converted into something almost deployable without needing an evening to get started. The models, at the time, weren’t yet very good; I hit the quality ceiling a consumer AI harness could offer fairly quickly.

Lovable came next. Better than Bolt overall — partly because, at one point, Lovable gave you near-unlimited access to Claude, and that same model had already generated most of the content still found on the site today. Behind both tools lived the same AI brain; only the wrapping changed.

Then Claude Code with Opus 4.6. The best. That’s the current version.

Three generations, one project, not a single line of original code survived from one iteration to the next. What you see today is not a continuity, it’s an archaeology. The only material traces of the earlier eras are a handful of commits in git log along the lines of “replace Lovable favicon” — the project’s continuity lives inside a favicon I had to shake off in several passes.

“No commercial future”

At some point, I handed the repo to Claude Code and asked it, without preamble, for an opinion on the site’s commercial future.

The answer was clear: none.

I was expecting it — asking the question was partly the point. What I was looking for wasn’t a verdict to overturn; it was an outside voice, informed enough to let me stop pretending. An encyclopedia of 20 IPAs bolted onto a pun has no market. It never did. And now that this had been said out loud, we could move on to the interesting question: what do you do with a project when the only value left is the joke itself?

The decision came in the same conversation. Pivot towards an illustrated directory, images generated on demand, owned as such. Not a product — an object. The last remaining value of the project was the story we were about to tell together. This one.

The hallucinated pivot

The pipeline that powers the site today wasn’t designed on a whiteboard. It was built by iteration, as a pair, with no detailed spec. One script scraping heterogeneous sources. A second sending that to OpenRouter to enrich. A third fetching images from Wikimedia Commons. A fourth that, when Wikimedia finds nothing, falls back to watercolours generated on the fly by Pollinations.ai.

Pollinations — Claude Code is the one who found it.

I had never heard of it. It suggested it as a fallback, mid-conversation, for the missing images; we tried, it worked, we kept it. The pivot — turning the project into an illustrated directory — wasn’t made possible by human intuition; it was made possible by a tool that the AI I was co-building the project with handed me at the moment I needed it. In a story about vibecoding, that’s the most honest detail I can give.

A small memory from the same period, kept for the pub: at one point one of the flags (United Kingdom, for an English brewery) turned out to actually be a Pollinations error page that the script had saved as if it were a valid image. I only spotted it when revisiting the site later. A commit named fix: regenerate Union Jack image (was a Pollinations error page) remains in the log as a memento of the incident.

Everything is fake, and that is the point

Let me say it without softening: all the content on the site is AI-generated. The 20 IPAs, the 61 hops, the 75+ flavours, the aroma profiles, the brewery descriptions, the founding years, the pairings. Nothing was researched by a human. Nothing was cross-checked. It’s plausible, it’s coherent, it’s nicely illustrated — and in its detail, it is probably wrong.

I’m not framing that as an excuse, because it isn’t one. The project never claimed to be a source. It claimed to be a joke, then became a hallucinated directory. In both cases, honesty means saying it clearly rather than letting a passing reader misunderstand the nature of what they’re consulting.

It’s also, incidentally, what makes the project worth telling about. A hallucinated encyclopedia, in 2026, is no scandal — it’s a report from the period. The one where an AI can produce a plausible encyclopedia in a few hours for ten euros of tokens. What comes out of it isn’t knowledge about IPAs; it’s a sample of what a tool, at a given moment, is able to invent without flinching.

Between vibecoder and Spec-Driven

The word vibecoding fits me. Neutral. Not pejorative (I’m not tinkering blind, I read what comes out), not claimed as a banner (I don’t make a flag of it). Just descriptive of a practice.

I sit, honestly, on the border between the pure vibecoder and the Spec-Driven Developer. I don’t quite vibe-code, because I challenge what the AI proposes a little — re-reading, questions, occasional refusals. Nor do I write ultra-detailed specs up front, as a rigorous developer would, deciding all the architecture in advance. I drift between the two, correct course along the way, let some things reveal themselves while building.

This project, more than others, let me drift. Zero users, zero stakes, zero resistance. When you learn to sail, you don’t pick the North Sea in March — you take a lake, fair weather, nobody on board. I P Yeah! was that lake.

The site dies, the story remains

As I write this, the site is still live at ipyeah.revah.paris. By the time anyone reads this story, it most likely won’t be. The domain will point at this page. The repo will be archived. The hallucinated encyclopedia isn’t built to last — it’s built to have existed.

What remains for me is a conviction, confirmed by this project: small, low-stakes projects are the best learning grounds. Not the “with commercial ambition” side-projects you polish on weekends promising yourself you’ll ship one day; the actually small ones, the ones you can pull offline without losing anything. The ones where you have the right to learn badly. Three generations of tools over two years, a strategic pivot, a pipeline that fetches watercolours on the fly — none of that accumulation would have survived a project with users, a roadmap, tickets to close.

P.S.

If someone asks me to describe this project at a bar, I don’t talk about vibecoding or hallucinated content or strategic pivots. I say: I had a pun in my head for years and I eventually built it. It’s the most honest sentence in this letter, and perhaps also the most justified: of the three reasons a project finally ships — desire, need, a joke — the joke is the only one that doesn’t ask for a return on investment.