Build AI products you can still control
AI sovereignty does not stop at infrastructure. It shows up in product architecture: where inference runs, how data flows, whether models can be replaced, and how much of your product depends on someone else’s roadmap.
This piece picks up where my previous article on AI as infrastructure left off: at the point where dependency stops being abstract and starts shaping product architecture.
From features to architecture
Most AI product teams still think they are making feature decisions.
Chat. Summarization. Classification. Generation.
Often, they are making dependency decisions.
Every time a product relies on a third-party AI API, something leaves your control. Sometimes that tradeoff is acceptable. Sometimes it is the right one. But very often it is not really a decision at all. It is the path of least resistance, wrapped in a demo that works and a team that wants to move faster.
That is how dependency gets in: quietly, conveniently, and usually with a roadmap attached. Not yours.
If you want to build AI products that users, and frankly, builders too, can actually control, the question is not only what the feature does. It is what control you lose by building it this way.
Sovereignty at the product layer
A lot of people still talk about sovereignty as if it were only an infrastructure question. Cloud versus on-prem. Local versus hosted. Open versus closed.
Those distinctions matter, but they are not enough.
Sovereignty also lives at the product layer.
You can host a model yourself and still design a product that is tightly coupled to assumptions you cannot move easily. You can use external infrastructure and still preserve meaningful control if the architecture keeps the right layers portable, observable, and replaceable.
That is why product architecture matters so much here. Sovereignty is not only about where the compute sits. It is about whether your product can still function, adapt, and be governed on your terms.
At product level, sovereignty means being able to answer basic questions without hand-waving: Can we replace the model? Can we move the workload? Can we keep data inside boundaries we actually control? Can we inspect what is happening? Can we keep the product running if the provider changes the rules?
If the answer to all of those questions is no, then you do not really have sovereignty. You have convenience.
What designing for control actually means
We do not need one perfect solution. We need a set of deliberate choices.
First: where does inference run? There is a spectrum, from third-party APIs to managed cloud with region, VPC, or data residency constraints, to self-hosted models, to fully local execution. Control generally increases as you move toward environments you control more directly. That does not make one end morally superior. It just makes the tradeoff clearer.
Second: can the model be replaced? If switching models requires surgery on your whole product, you are locked in, no matter how many abstraction layers your architecture diagram claims you have. Designing for control means separating the application layer from the model layer as much as possible, with interchangeable backends, compatibility layers, routing across providers, and support for portable formats.
Third: where does data go? This is not just about storage. It is about flow. Does user data leave your system? Can it be retained or reused externally? Are the boundaries enforced technically, or only contractually? There are different ways to strengthen this layer. Sometimes that means local inference, where the data never leaves the environment. Sometimes it means on-prem deployments or tightly controlled cloud environments. Sometimes it means federated approaches that avoid centralizing sensitive data in the first place.
Fourth: what happens when the network fails? A surprising number of AI products are designed on the assumption that connectivity is forever, outages are for other people, and nobody will mind if the core capability disappears for a while. Reality is usually less accommodating. Field tools, hospital systems, developer workflows, regulated environments, air-gapped contexts: these do not always get the luxury of permanent external calls. If core functionality collapses without them, that is an architectural choice too.
Fifth: can you inspect and audit the system? If you cannot answer what model is running, what version it is, how it was configured, or what inputs it saw, then no, you do not really control it. This is where open-weight models, reproducible environments, observable inference layers, and transparent runtimes start to matter. Without them, accountability gets fuzzy very quickly, and fuzzy is rarely the adjective you want in production.
And finally: who controls updates? A surprising amount of fragility comes from silent change: model updates, API behavior changes, pricing shifts, policy changes, and provider-side feature changes your product quietly started to rely on. Control does not eliminate change. It just stops change from showing up disguised as an unpleasant surprise.
Different products, different tradeoffs
Not every product needs the same level of control.
A legal tool may run models on client infrastructure to reduce exposure. A healthcare product may require on-prem inference for compliance and auditability. A developer tool may embed a local model to avoid leaking code or making core workflows dependent on external services. A global SaaS product may use region-specific deployments to respect data boundaries while still relying on external infrastructure.
The common pattern is not the tool.
It is control over where and how inference happens, how much of the system can be moved, and how much of the product depends on external decisions you do not control.
More control is not free
More control often comes with cost: more infrastructure to manage, more engineering effort, sometimes smaller or less optimized models, and fewer plug-and-play conveniences from provider platforms.
API-based systems optimize for speed and convenience. Systems designed for more control optimize for flexibility, resilience, and independence.
You do not get to maximize everything at once. That is not a tragedy. That is just engineering.
The point is not to reject one model in favor of the other. It is to choose deliberately, and to understand what you are optimizing for before your architecture optimizes it for you.
Start with your architecture, not your feature list
If you are building AI into your product, start by mapping your current system.
Where does inference run? Where does data go? What depends on external services? What breaks if those services change or disappear? Which parts of your product rely on provider-specific features rather than capabilities you actually control?
Then decide what actually matters for your product, and in what order: data sensitivity, compliance, cost, availability, portability, auditability, user control.
You do not need to move everything.
But you should know what you could move if you had to.
That is what control looks like in practice.
Closing
Most AI products today are built in conditions where speed is rewarded and hesitation is penalized. Under those conditions, convenience often wins, and in AI convenience frequently means dependency.
In practice, that means relying on someone else’s models, features, and roadmap before anyone has really stopped to ask what that changes.
Sometimes that tradeoff is acceptable. Sometimes it is even the right one. But when speed starts making architecture decisions by default, control usually disappears before anyone names it.
You do not need to control everything. But you should know which parts of your product you can still move, replace, inspect, or keep running when someone else changes the rules.
That is what building for control looks like in practice.
Discussion in the ATmosphere