Where the Prototype Ends and the Product Begins: The Boundaries of AI Architecture
A working screen is 15% of the product — the rest is underwater. Six layers that never appear in a demo, yet they are precisely what separates a prototype from a product — and precisely what you are paying for.

Article contents7×
The demo ended at 4:40 PM. The client leaned back in his chair, looked at the screen where the AI assistant was briskly answering questions, and said the phrase I've probably heard a hundred times: "Well, are we almost done?" I didn't answer right away. I poured myself some water. Because I knew: if I told the truth right then, he'd think I was inflating the price. And if I stayed silent, in three months he'd come back asking why the "almost finished product" couldn't survive its first real client. Let's be honest. What you saw on that screen is roughly 15% of the work. Maybe 20. The rest is underwater. And today I want to show you exactly what's hiding down there. Not to scare you. So you understand what you're paying for.
Exhibit One: The Skeleton You Can't See
Let me start with the data model. Boring? Absolutely. But this is where everything else gets built.
In a prototype, data lives wherever it's convenient to put it. An array in memory. A local JSON file. A five-field table. It works — good enough.
In a product, there's more data, and it starts arguing with itself. The client has a history. The history has versions. The versions have permissions. The permissions have inheritance. And suddenly you're sitting at three in the morning trying to figure out why deleting a user breaks the March report.
If I'm being completely honest — 80% of the projects I've watched die didn't die because of bad code. They died because of a data model that was slapped together in week two and then heroically dragged along for two years.
A data model isn't "tables." It's the answer to the questions: what do we actually store, what do we consider a fact, what's derived, and what can be recalculated. Until you've answered those questions, you don't have a product. You have a pretty picture.
Exhibit Two: Integrations and the "Happy Path"
Next up — integrations. This is where things get interesting.
In a demo, everything works along the "happy path": the user clicks, the system responds, the data is saved. Beautiful. But reality is when an external service responds in 30 seconds instead of two, and sometimes doesn't respond at all. When a webhook arrives twice. When yesterday's webhook arrives. When a webhook arrives that you never expected.
I remember a project where we hooked up payments. Everything worked perfectly until one client paid for the same subscription twice — because the browser froze, he clicked again, and we hadn't built in idempotency. A small thing? Sure. It cost us two days of investigation and one very unpleasant conversation.
An integration isn't "we connected the API." It's an agreement about how you behave when your partner behaves strangely. Retries. Idempotency. Queues. Handling errors nobody anticipated because they "can't happen."
I'm telling it like it is, no sugarcoating: the client isn't paying for the integration to work. He's paying for it to work when it shouldn't.
Exhibit Three: Roles, Access, and the First Real Client
Next — roles. In a prototype, there are usually two types of users: "me" and "everyone else." Sometimes there's an "admin" who can do everything.
This works right up until the first real client. Because the client has people. People have job titles. Job titles have different permissions. And that's when it turns out the accountant shouldn't see the manager's correspondence, the manager shouldn't see salaries, and the contractor shouldn't see anything at all except their own task.
Roles aren't checkboxes in a UI. They're a system of values expressed in code. Who can do what. Who sees what. Who changes what. And the most unpleasant part: roles are almost never designed in advance. They get added later, when someone accidentally sees something they shouldn't have.
I've seen a client lose a contract because of a single incorrect permission check. Not because data was stolen. But because a competitor's manager saw numbers he was never supposed to see. The system worked. It just worked incorrectly.
Exhibit Four: Audit and the Black Box
Now for the thing everyone remembers last. Audit.
When everything's fine, you don't need an audit. You need it when something goes wrong. Who deleted the record? When? Why don't the numbers in the report match what was there yesterday? Who changed the settings?
In a prototype, there's nothing to answer these questions with. In a product, it's a separate layer: an event log, change history, tied to a user, a timestamp, a context.
Don't kid yourself: if there's no audit, then at the moment of reckoning you'll find yourself in the position of a person who can't prove anything. Not to himself, not to the client, not to the regulator.
Exhibit Five: The 3 AM Test
Fault tolerance isn't "the server doesn't crash." It's the answer to the question: what does the system do when something has already crashed?
What happens if the database goes down? If the external API drops? If disk space runs out? If one of the services starts responding slowly but doesn't fail? If suddenly there are ten times more requests?
A prototype doesn't answer these questions. A product does. Sometimes the answer sounds like "we degrade gracefully, show a clear error, and don't lose data." That's an answer too. The main thing is that it exists.
I remember the first time we hit real load. Everything was fine. Until one of the services started silently piling up a queue of tasks. It wasn't crashing. It just couldn't keep up. And we found out not from monitoring, but from a client's phone call: "Why aren't my numbers updating?"
Since then, I don't believe in fault tolerance that hasn't been tested by hand. Kill a service, disconnect the database, throttle the network — and see what happens. If it scares you, you're not in product territory yet.
Exhibit Six: Operations and the Bill Nobody Talks About
And lastly. The thing nobody mentions in a demo at all.
Operations isn't a one-time job. It's what happens every day after launch. Monitoring. Logs. Updates. Backups. Recovery. Incident response. Cost. Yes, cost — because the cloud isn't free, and model queries cost money too.
In plain numbers: I've seen projects where the infrastructure bill exceeded revenue. Not because of bad architecture. But because nobody thought about it until it was too late.
Operations is the answer to the question: who does what when that "something" happens. If there's no answer, you don't have a product. You have a demo that will one day stop working.
The Reveal: The Iceberg That's it. Six layers. Data model. Integrations. Roles. Audit. Fault tolerance. Operations.
Not one of them is visible on screen. Not one of them is shown in a demo. But they are exactly what distinguishes a prototype from a product. They are exactly what the client pays for — often without even knowing it.
C'est la vie, as the French say. A beautiful screen is the tip of the iceberg. And if you're only paying for the tip, you'll get what eventually sinks.
I'm under no illusions: nobody likes paying for what they can't see. Not the client, not the investor. But it's precisely the invisible part that makes a product a product, and not a pretty picture.
And if you ask me where the prototype ends and the product begins, I'll put it this way: the prototype ends where the "happy path" ends. The product begins where you start thinking about what happens when things don't go according to plan.
Everything is within our power. Sometimes it's elementary — you just have to think about it before, not after.
Glossary of terms
- Prototype — an early version of a system built to validate an idea. Runs on demo data, not designed for real users or load.
- Product — a system ready for use by real users: withstands load, failures, updates, and time.
- AI architecture — the structure of an AI system: data layers, models, integrations, infrastructure, and boundaries of responsibility between components.
- Data model — a formal description of entities, their relationships, fields, and storage rules. One of the key architectural artifacts.
- Happy path — a scenario where everything goes as planned: data is clean, services are available, the user behaves as expected.
- Integration — a connection between the system and an external service or another system. Described by a contract and failure behavior scenarios.
- Idempotency — the property of an operation producing the same result when repeated. Critical for payments and webhooks.
- Webhook — a mechanism where an external system itself sends a notification about an event to your service.
- Production (prod) — the working environment where the system is used by real users under real load.
- Load — the volume of requests and data the system must handle without degradation.
- Scaling — the system's ability to handle growing load through resources or architectural decisions.
- Fault tolerance — the system's ability to keep running when individual components fail.
- Monitoring — continuous observation of system state: metrics, logs, alerts.
- Technical debt — accumulated compromises in code and architecture that slow down development and require rework.
- Systems thinking — the ability to see a system as a whole and understand the connections between its parts.
- System layer — a distinct level of architecture: data, logic, integrations, infrastructure, interface.
- System boundaries — a description of what's inside the product, what stays outside, and where responsibility ends.
- API — a programmatic interface for interaction between systems.
- Technology stack — the set of tools, languages, and platforms a system is built on.
- Technical risks — the probability and impact of failures related to architecture, data, integrations, and infrastructure.
Respectfully,
Yuri Eliseev
AI Systems Architect · Full-Stack Product Engineer
Need a project of any complexity?
Let’s discuss an idea, product, AI system or technical challenge and define a realistic first step.
