ABAX
00%
GrowingPartneringBuildingGrowing
← BlogAI7 min read

The "vibe coded" apps we keep getting hired to fix

AI can generate a working-looking app in an afternoon. We love that. What we don't love is what happens three months later, when it breaks in production and nobody in the building can explain why. Lately, that's who calls us.

The

First, let's be clear about where we stand: we use AI every day. It's a genuinely powerful tool, and it's made parts of our work faster and better. This isn't an anti-AI piece. It's a warning about a specific, increasingly common failure mode, the app that was vibe coded into existence and is now quietly falling apart.

What "vibe coding" actually is

"Vibe coding" is the new habit of building software by describing what you want to an AI, accepting whatever it produces, and shipping it, without anyone on the team truly understanding the code underneath. It feels like magic. You type a sentence, an app appears. For a demo or a weekend prototype, that's fantastic.

The problem starts the moment that prototype becomes something a real business depends on. Because the AI optimized for "looks like it works," not for "will still work under load, with real data, a year from now, when someone needs to change it."

AI writes code fast. Engineering is what makes that code survive contact with reality.

What we keep finding inside these systems

We've now been hired to rescue several of these projects. The symptoms are remarkably consistent:

  • No one understands their own app. The owner can't answer basic questions about how it works, because nobody wrote it, a model did, one prompt at a time. When it breaks, there's no mental model to debug from.
  • Security holes hiding in plain sight. Exposed API keys, no input validation, database credentials in the front-end, endpoints anyone can call. The AI wasn't thinking about attackers; it was thinking about making the feature appear.
  • It works until it doesn't. Fine with 10 records, unusable with 100,000. The generated code often ignores performance entirely, because the demo data was tiny and the model never saw the real scale coming.
  • Invisible duplicated logic. The same rule implemented five slightly different ways in five places, so a "simple" change quietly breaks three things you didn't know were connected.
  • No tests, no structure, no trail. Nothing to catch a regression, no architecture to reason about, and no history of why anything was done. Every change is a roll of the dice.

Individually, each of these is fixable. Together, in a system nobody understands, they turn every small request into a frightening one.

Why it happens (and why it's not the AI's fault)

Here's the uncomfortable truth: the AI did exactly what it was asked. It was asked to make something that looks like it works, and it did. It was never asked, and couldn't be held accountable, to make something maintainable, secure and correct. That part is engineering, and engineering is a discipline, not a prompt.

An experienced engineer brings the things a model on its own doesn't: a mental model of the whole system, judgement about trade-offs, an instinct for where things will break, and accountability when they do. Skip that, and you don't have a shortcut, you have a debt that comes due at the worst possible moment.

How we rebuild them

When one of these lands on our desk, we don't just paper over the cracks. We do what should have happened the first time:

  • Understand it fully. We read every line and map what the system actually does, so a human, not a black box, owns it again.
  • Keep what works. If the AI got a screen or a flow right, we keep it. We're not here to rewrite for ego, we protect what already delivers value.
  • Fix the foundation. Real data models, real validation, real security, real performance. The unglamorous engineering that makes software trustworthy.
  • Make it changeable. Clean structure, documentation and tests, so the next change is a decision, not a gamble.

Ironically, we still use AI heavily to do this, just with an engineer holding the wheel, reviewing every line and answering for the result. That's the difference. AI as a tool in expert hands is an accelerator. AI as the whole plan is a liability.

The honest takeaway

If you built something with AI and it's working, wonderful, keep going. But if you're starting to feel that quiet dread, changes that break things, a system nobody can explain, bugs you can't reproduce, don't wait for it to fail in front of a customer. That feeling is the debt coming due.

We can tell you honestly what's salvageable and what isn't, and rebuild it on a foundation that will still be standing in five years. No hype, no fear-mongering, just engineering.

Get a second opinion on your app