Journal

Your prototype works. That is the dangerous part.

Your prototype works. That is the dangerous part.

Something changed about prototyping in the last year, and most people have not fully registered what it means.

Building a working prototype used to take weeks. You needed a designer, an engineer, probably someone with opinions about scope. The output was fragile and everyone knew it. Nobody looked at a prototype and thought it was ready to ship.

That is no longer true. Cursor, v0, Bolt, Lovable, Replit. These tools compress what used to be two weeks of work into an afternoon. A founder can describe what they want, watch it take shape, deploy it to a live URL, and share it with users before dinner. It looks like a real product. It behaves like a real product on the happy path.

The problems start after that.

The abandonment gap

Here is the failure pattern that keeps showing up, and it is not the one most people expect.

The failure is not in the AI-generated code. That code is often surprisingly solid. It follows modern patterns, uses current frameworks, handles the obvious cases.

The failure shows up weeks or months later. The prototype works. The founder shifts attention to fundraising, hiring, sales. The codebase does not get worse exactly. It just stops getting better. Features get layered on top of decisions nobody wrote down. Error handling stays thin because nobody went back. Tests never materialize because the prototype already worked without them. Security stays in the category of "we should probably do that."

Then one day something breaks and nobody can explain why, because nobody fully understood why it worked in the first place.

This is the abandonment gap. Not because the founder abandoned the project. They are working harder than ever. They abandoned the codebase. They stopped investing in the thing underneath the product, and the distance between what the product does and what the business needs from it started widening.

That is where failure happens. Not in AI-assisted generation. In the quiet neglect that follows a successful prototype.

What "production-ready" actually means

Most conversations about taking a prototype to production turn into lists of technologies. But production readiness is not a technology question. It is an operations and architecture question.

A production codebase handles real-world conditions. Not just the happy path, but the 2 AM Saturday when a third-party API starts returning 500s and nobody is awake. The user who pastes emoji into a field that expects a phone number. The traffic spike that exhausts the connection pool. These are not edge cases you plan for eventually. They happen in the first month.

A production codebase lets the team make changes without fear. This is the one that costs the most when it is missing. Without tests, every change is a bet. Over time, the team stops making bets. The product freezes. Features that should take a day take a week because nobody is sure what will break.

A production codebase has security that does not rely on "nobody knows the URL." Authentication that actually works. Authorization that prevents a user from seeing another user's data. Credentials that are not sitting in a git repo.

A production codebase ships without heroics. Not one person running a command from their laptop. A pipeline that anyone on the team can trigger, with confidence that the deploy will not break what is already working.

A production codebase tells you what happened. Not the console log you check after a crash. Structured logging, monitoring, alerting. The difference between finding out in five minutes and finding out three days later from a customer email.

You will never see any of this in a product demo. You will see it in whether the product is still standing a year from now.

Three paths forward

Not every prototype needs the same treatment. The right path depends on how much of the original code is worth keeping and what the business needs next.

The hardening sprint is for prototypes that are architecturally sound but operationally incomplete. The structure is fine. The gaps are in error handling, tests, security, deploy pipeline, and monitoring. This is a fixed-scope engagement, usually 2 to 4 weeks. The original code stays. The gaps get filled. This works when the prototype was built by someone who made deliberate tradeoffs to move fast and knew which corners they were cutting.

The embedded rebuild is for prototypes where the concept proved out but the codebase is not worth keeping. The architecture needs to change for scale, the data model was a guess that turned out wrong, or the product is entering a phase the prototype was never designed for. A team rebuilds with the prototype as the reference, not the foundation.

Modernization first is for codebases that are not prototypes at all. They are existing systems, sometimes years old, where technical debt has accumulated faster than the team can manage. Before anything new gets built, the existing code needs to be brought under control. At Enspirit, we call this Rekindle. Part of what makes it work is that we produce AI configuration files that constrain the output of tools like Cursor and Claude Code to stay consistent with the system's existing patterns. The AI works within the codebase, not against it.

Where this breaks down

Not every prototype should become a production system. Some prototypes are experiments. They answered a question, proved a hypothesis, and the right next step is to archive them and build the real thing differently. Spending four weeks hardening code that was built to test a pricing model nobody ended up using is wasted work.

The right question is not "how do I take this to production." It is "does this need to be a production system at all, and if so, what is the cheapest safe path to get there."

Sometimes that path is a hardening sprint. Sometimes it is a rebuild. Sometimes it is throwing the code away and starting clean with everything you learned.

What brings people to this conversation

The founders who reach out to us about this usually arrive from different directions but land in the same place. A prototype that customers are using has started to crack. An investor is asking questions about scalability and security that the team cannot answer confidently. A competitor shipped something that makes their product look unfinished.

The common thread is that the prototype worked. It worked well enough that nobody questioned whether it was built to last. And because nobody questioned it, the investment that would have closed the gap never happened.

That gap has a cost. You can see it in how long features take to ship (longer every month), in how confident the team is when deploying (less confident every month), and in how many customer-facing issues could have been caught before they happened (more every month).

The transition from prototype to production is not a technical project. It is a decision about whether the product is worth the investment. If it is, the investment is specific and bounded. If it is not, the prototype did its job and the next step is something else entirely.

Enspirit is an AI-native product design and engineering studio. Start a conversation about what you're building.