Core thesis

I use artificial intelligence to resolve ambiguity. Identity, permission, calculations, state and integrity stay under rules I can test.

The model should not control what must be true

Language models are excellent at interpreting text, extracting intent, summarizing context and handling inputs that vary too much for a traditional form. They are not the best tool for deciding whether a user may access a record, calculating a financial total or confirming that an operation completed.

That distinction looks obvious on paper but often disappears when the first demo works. A prototype receives a sentence, returns a convincing answer and creates the impression that the entire architecture can live around a prompt. Production changes the question. A good answer is not enough. The product needs to know where data came from, what happens when the model fails and which rule remains valid without it.

In FalaFit, for example, AI interprets a meal described by voice. Authentication, usage limits, persistence, user ownership and calculations over a structured portion remain outside the model. In Company Dossier, public registration data and objective signals work without AI. The intelligent layer adds interpretation but does not control access to facts.

A good boundary is small and explicit

The more responsibility a model receives, the harder it becomes to explain an error. I prefer a narrow boundary: the application prepares known context, requests a specific transformation and validates the response shape before accepting it.

That also makes evolution easier. A model can change, a prompt can improve or a cache can be introduced without rewriting the entire domain. The product understands meals, companies, campaigns or transcripts. The model understands a temporary task inside that product.

Typed structures help. The expected response should be a verifiable object, not a paragraph that another part of the system attempts to parse. If a required field is missing, the application knows it did not receive a valid result. If the model is unavailable, the failure becomes an understandable state.

Failing well is part of the experience

Every AI feature needs an answer for latency, unavailability and an insufficient result. The interface should not pretend those situations are the same. A transcript may still be useful when formatting fails. A public company report remains relevant without optional analysis. A queued meal can be processed when the connection returns.

This design reduces the feeling of randomness. Users understand what was preserved, what is still processing and what needs another attempt. The team also gets better signals for debugging.

Graceful degradation is not a patch. It is a product decision defining which value remains available when the most sophisticated layer does not respond.

Quality needs criteria outside the prompt

Judging an AI feature only by how a response feels is not enough. I look for criteria the application can observe: whether the object passed validation, whether essential fields exist, whether the source is recorded, whether the user corrected the result and whether a retry was needed.

Not every metric needs a complex evaluation system at first. A sample of real inputs, classified errors and frequent corrections already reveals weak points in the pipeline. The important part is not treating fluency as accuracy.

When architecture separates interpretation from operational truth, artificial intelligence can evolve quickly without making the rest of the product unstable.

Questions I ask before adding AI

  • Does the task truly require interpretation, or would a rule work better?
  • What value remains available when the model does not respond?
  • Does the output have an explicit structure and validation?
  • Can the user correct or challenge the result?
  • Is there enough logging to understand errors and cost?