Sevoria is an AI assistant. The obvious way to build one is to call a commercial model API and charge a margin on top. That option was not available to us, so the product runs on open-weights models we host ourselves.
Constraints like this are usually described as a disadvantage. Some of it genuinely is. Some of it turned out better than the default.
What actually got harder
Capacity is finite and visible. A rented API absorbs a traffic spike and sends a larger bill. A machine you own does not. Rate limiting stopped being a nice-to-have and became the thing that keeps the service up, which is why some tiers are limited per IP.
There is a single point of failure. The backend runs on hardware we control. That is a real operational weakness and it is written on the project page rather than hidden.
Model quality has a ceiling. An open-weights model we can actually run is not the largest model in the world. Pretending otherwise would be dishonest, so the product says what it is not good at.
What got easier
Cost is fixed and knowable. There is no per-token meter. That makes a free tier possible, because a heavy user costs electricity rather than money that scales linearly with their enthusiasm.
Privacy claims are real. Conversations are not forwarded to a third party, because there is no third party. That is not a marketing position we adopted; it is a description of the architecture. It is far easier to write an honest privacy policy when the honest answer is short.
Nothing can be taken away. No account suspension, no pricing change, no model deprecation on somebody else’s schedule. For a product built somewhere that already loses access to services regularly, independence is worth more than the last few percent of model quality.
The shape it forced
The frontend is fully static and served from a CDN, so the site stays up even when the model backend does not — you get an honest “the assistant is unreachable” page instead of a broken app. The mobile client talks to the same backend as the web client, so the two cannot drift.
None of that is clever. It is what you end up with when renting the easy option is not on the table, and it is a more robust design than we would have reached for otherwise.