A prototype answers one useful question: can the system produce a good result under the conditions we just gave it?
Production asks a harder set of questions. Will the result remain acceptable across thousands of varied inputs? Can the system recognize when its information is incomplete? Can an operator reconstruct what happened? What prevents a plausible answer from becoming an unauthorized action?
Those questions cannot be answered by running the same polished demonstration several times. A language model is not a conventional software component with fixed behavior. It is a probabilistic system with distinct strengths and boundaries. The architecture around it has to reflect that.
Four properties matter in almost every production design: variable output, bounded knowledge, finite context, and imperfect steerability. None makes language models unsuitable for serious work. Together, they explain where controls, systems, and human judgment belong.
Evaluate behavior across many representative cases.
Retrieve facts from the system that owns them.
Load only what the current decision needs.
Enforce critical rules outside the prompt.
Variable output
Traditional business logic is expected to produce the same result when it receives the same input. Language models are designed to generate likely responses, not execute a fixed rule path. Two responses can differ in wording, reasoning, or even conclusion while both appear fluent and internally consistent.
This variability is useful when the work has more than one acceptable answer. Drafting a customer response, summarizing a long document, or proposing several campaign angles benefits from range. The same property becomes a liability when only one exact answer is permitted.
Consider an invoice workflow. The model may be well suited to finding a supplier name in an inconsistent document. It should not decide whether a payment exceeds an approval threshold. Extraction requires interpretation; the threshold is a business rule. The model can produce structured data, but deterministic code should apply the rule.
The production response to variable output is evaluation. A team needs a representative set of inputs, a definition of acceptable performance, and a way to inspect failures.
Bounded knowledge
A language model can explain common concepts with impressive fluency. That fluency makes it easy to mistake remembered patterns for authoritative knowledge.
The distinction matters whenever information is private, frequently changing, contested, or specific to one organization. A model cannot be the source of truth for the current status of an order, the latest version of an internal policy, or the terms of a customer contract unless that information is supplied from an authoritative system.
This leads to a simple architectural rule: when freshness or authority matters, retrieve the answer from the system that owns it.
The model can interpret the request, select the appropriate retrieval action, and explain the result. The database, policy service, or document repository should provide the facts. This separation lets each component do the work it is best suited to perform.
Without it, an outdated answer can arrive in the same confident tone as a current one. The system may not throw an error because, from the model's perspective, generation succeeded. The failure only appears later, when someone acts on the wrong information.
Finite context
A model's context is working memory, not permanent storage. It can only reason over the material available in the current request and conversation window.
This has two operational consequences. First, more context is not automatically better. Large amounts of loosely relevant material increase cost and can make the important instruction harder to find. Second, information outside the active context is effectively unavailable, regardless of whether the system saw it earlier in a long interaction.
Good context design is selective. It supplies the policy section, customer record, prior decision, or tool result needed for the current step. It does not send an entire knowledge base simply because the system can accept a large request.
For longer-running work, the architecture needs an explicit memory strategy. Important decisions can be written to a durable store. Completed stages can be summarized into structured state. New information can be loaded when the next step requires it. The model should not be expected to remember what the surrounding system failed to preserve.
Context is therefore both a capability and a budget. What enters it, when it enters, and what is left out affect quality, latency, and operating cost.
Imperfect steerability
Clear instructions strongly influence model behavior, but they do not create the same guarantee as executable code.
Models respond best to concrete objectives, explicit constraints, defined formats, and examples of acceptable output. Ambiguous goals leave room for the model to choose an interpretation that satisfies the words while missing the business intent.
“Review this request carefully” is difficult to verify. “Return the requested action, the policy clause that applies, and one of three permitted escalation codes” creates an observable contract. The second instruction narrows the output and gives downstream systems something they can validate.
Even strong instructions should not carry controls that must never be skipped. If an action requires permission, code should check the permission. If a number must be calculated exactly, a deterministic function should perform the calculation. If an output must match a schema, the application should validate it before use.
Architecture follows the failure mode
The four properties point to four different controls:
| Property | Typical failure | Production control |
|---|---|---|
| Variable output | Similar inputs receive materially different decisions | Representative evaluations, output constraints, and verification |
| Bounded knowledge | A fluent answer is stale or unsupported | Retrieval from an authoritative system and visible provenance |
| Finite context | Critical information is missing, buried, or lost across steps | Selective context loading and durable state |
| Imperfect steerability | The model follows the instruction but misses the intent | Structured contracts, deterministic guards, and approval boundaries |
The controls are not interchangeable. A better prompt does not make stale information current. More context does not make a probabilistic threshold deterministic. A human approval step does not compensate for a system that cannot show which facts informed the recommendation.
The failure mode should determine the control.
A production-readiness test
Before moving a model-backed workflow beyond a prototype, ask:
- Which outputs may vary, and how much variation is acceptable?
- Which facts must come from an authoritative system?
- What information must be present for each decision?
- Which instructions can be validated mechanically?
- Which actions require deterministic checks or human approval?
- How will failures be detected before a customer or audit finds them?
If the answers are unclear, the problem is not that the model needs a longer prompt. The surrounding system is still underspecified.
Build for the system you actually have
Language models are valuable because they can interpret messy inputs, work with natural language, and handle variation that conventional automation struggles to absorb. Production reliability comes from using those strengths inside explicit boundaries.
The goal is not to make the model behave like deterministic software. It is to design a system in which probabilistic interpretation and deterministic control each have a clear job.
A clean demo shows potential. A production architecture shows who owns the facts, who owns the rules, how quality is measured, and what happens when the model is wrong.
Back to all field notes