Perspectives

Where vibe coding stops being free

Describing an app to an AI and watching it appear feels like magic — right up until the moment it needs to remember something. Here's the wall every vibe-coding tool hits, and why it's not where you expect.

“Vibe coding” — describing what you want to an AI and letting it build the thing — is genuinely one of the best feelings in software right now. You type “make me a page where people can book a table,” and a page appears. You tweak it in plain English. It looks real. It is real, sort of.

And then you try to do the one thing that turns a mockup into a product, and you hit a wall. The wall is always in the same place, and almost nobody warns you about it ahead of time.

The wall is persistence

The wall is the moment your thing needs to remember something between two visitors.

A booking page that doesn’t store bookings is a drawing of a booking page. A signup form that forgets every email the second the tab closes is a signup form in costume. The instant you need data to survive — to be there when the next person shows up — vibe coding stops being free.

Up to that line, the AI is unstoppable: layout, copy, colors, interactions, animations. All of it is “stateless” — it looks the same for everyone and remembers nothing. The model is brilliant at stateless. Stateless is where the vibes live.

Past that line, you’ve quietly walked into a different country: databases, user accounts, authentication, where-does-this-data-live, who-can-read-it, is-this-even-legal-to-collect. None of that is a vibe. It’s infrastructure, and infrastructure has rules that don’t bend to a nicely worded prompt.

Why the AI doesn’t just handle it

You’d think the same assistant that wrote the page could wire up the storage. It can write the code for it. What it can’t do, from inside a chat, is be the thing that’s still running tomorrow.

Persistence isn’t a snippet — it’s a commitment. Something, somewhere, has to:

  • stay online when the conversation is over;
  • hold the data safely and hand it back to the right person;
  • not hand it to the wrong person;
  • have an address that doesn’t change every time you regenerate the page.

A chat session is the opposite of all of that. It’s ephemeral by nature. So “it works in the chat” and “it’s live and remembering things” are separated by a gap that looks tiny and isn’t.

The second wall: ownership

There’s a quieter wall right behind the first one, and it bites later.

Say you push through and get something persisting. Now: who owns it? Where does the data actually sit? If you built it at work, can anyone else find it, audit it, or shut it down — or does it live and die with your browser history? A prototype that nobody owns is fine until it’s collecting real data from real people. Then “nobody owns it” becomes the most expensive sentence in the company.

This is the through-line that connects the hobbyist and the enterprise. The maker hits the wall as “ugh, it won’t save anything.” The organization hits the same wall as “we have forty tools collecting data and no idea who’s responsible for any of them.” Same wall, opposite ends.

What good looks like

The fix isn’t to stop vibe coding — it’s the best on-ramp to building we’ve ever had. The fix is to make the wall disappear: to let the remembering and the being online be as frictionless as the designing. You should be able to say “and store the bookings” the same way you said “make it blue,” and have it just be true — with the boring-but-essential parts (where the data lives, who can read it, how to delete it) handled correctly underneath, not left as homework.


That gap — between “it works in the chat” and “it’s live, it remembers, and it’s governed” — is the whole reason Bailey exists. You keep the part that feels like magic. We take the wall.

Hosted on Bailey