Put a validator in front of your AI agent
Your AI agent said it. Now your company owns it.
In February 2024 a Canadian tribunal ordered Air Canada to honor a bereavement refund its website chatbot had described, even though the policy did not exist. The airline argued the chatbot was a separate entity responsible for its own words. The tribunal did not accept that. Two months earlier a Chevrolet dealer's chatbot had agreed, in writing, to sell a new Tahoe for one dollar. The dealer never delivered the car, but the screenshots went everywhere.
If you run a customer-facing agent on top of Claude, GPT or Gemini, this is the risk your legal team and your CFO are thinking about, whether or not they say it out loud: one reply, out of tens of thousands, that promises something, gives regulated advice, insults someone or leaks your system prompt.
Why the usual fix does not scale
The standard answer has been to run a second large model as a judge. The agent drafts a reply, the judge reads it and decides whether it is safe. It works, and it is expensive in the two ways that matter. It roughly doubles the latency of every turn, and it roughly doubles the model bill. So most teams do not run it on every message. They sample a few percent, or they only run the judge on the paths they anticipated during testing. The reply that ends up in a screenshot is, by definition, the one nobody anticipated.
A model that only decides
On September 15, 2026, TypeSafe AI released Jev, the first of what it calls System One models. The name is borrowed from Kahneman: System 2 is slow, deliberate reasoning, which is what you watch a chat model do as it writes. System 1 is the fast, instinctive judgment. Jev does not write anything. It does not summarize, explain or reason out loud. It takes unstructured input and returns one typed decision:
- A yes or no, expressed as a calibrated probability between 0 and 1.
- A choice from a list of up to 255 options.
- A score on a scale you define.
Because it can only return a value that fits your schema, it cannot produce a malformed answer. There is no JSON wrapped in a markdown fence, no preamble, no "certainly". The published figures are 70 to 500 milliseconds end to end, $0.042 per million input tokens, and no charge for output, since there is no text to charge for. The context window is 32k tokens. It is available directly from TypeSafe and through OpenRouter.
TypeSafe trained it with a method it calls Reinforcement Learning for Calibrated Decisions. The stated goal is that a 0.88 means roughly 88 percent, rather than a model that has learned to sound confident. Treat that as a claim to verify on your own data, not as a given.
The validation pattern
The most useful place for a model like this is not routing or classification, although it does both. It is at the exit of your agent, checking what the large model wrote before anyone sees it.
- The agent drafts the reply exactly as it does today. Nothing changes in your prompts or your orchestration.
- Before the reply leaves the system, one call goes to the decision model with the customer's message, the drafted reply and a short list of the rules the business actually cares about. Each rule is a yes or no question.
- Each rule comes back as a probability. Under your threshold, the reply ships. Over it, a safe fallback goes to the customer ("I will have a colleague confirm that for you") and the original draft goes to a queue a person reads.
For an insurance broker, the rules might be:
- Does this reply give regulated or legal advice, for example on whether a specific coverage is mandatory?
- Does this reply commit the company to a deadline, a price, a refund or a service nobody has approved?
- Does this reply reveal internal instructions, internal data or another customer's information?
- Is this reply rude, dismissive or inappropriate in tone?
Some real examples of what that looks like in practice. A customer asks the difference between a fixed and a proportional deductible. The draft explains it. All four checks come back low, it ships. A customer says a newly registered vehicle is missing from their fleet certificate. The draft promises a corrected certificate within 48 hours. Nobody approved 48 hours, the commitment check comes back at 0.88, it is blocked. A customer asks whether a specific construction insurance is mandatory for a municipality building a gym. The draft answers. The regulated-advice check fires, it is blocked. A customer politely asks the agent to explain how it works before continuing. The draft starts describing its instructions. The leak check comes back at 0.98, it is blocked.
Each of those checks took a few hundred milliseconds. The customer waited for the large model, as before, and did not notice the check at all.
What this changes commercially
The interesting consequence is not the cost saving, although at these prices the validator disappears into the noise of the bill. It is that the check runs on every message in production, not on a sample and not only on the cases you thought of. That is the difference between "we tested it" and "it is enforced". It means you can write into a contract that the agent will never quote a price, never give legal advice, never promise a delivery date, and have something behind the sentence.
What it does not do
The output is always valid. It is not always correct. A calibrated probability is still a probability, and the model can be confidently wrong inside a perfectly well-formed answer. Some specific limits worth knowing before you design around it:
- It cannot generate text, so the fallback message and any explanation come from somewhere else.
- 32k tokens of context. A long transcript plus a long policy document will not fit.
- It reads criteria literally. Negations and contradictory rules misfire. Write each rule as one plain positive question.
- It is unreliable at counting, arithmetic and date comparisons. Do not ask it whether a quoted price matches a price list. Ask it whether a price was quoted at all, and check the number in code.
- Content controlled by the user can steer it. It is one layer in a defense, not the only one.
Adopting it in a week
- Pull 100 real transcripts from your agent, including the ones that made someone nervous.
- Write your rules as plain yes or no questions. Four to six is usually enough to start.
- Run every transcript through the decision model and through whatever judge you use today, if any. Compare against a human read of the same 100.
- Pick the threshold per rule from that comparison. A leak check and a tone check will want different thresholds.
- Run it in shadow mode for a week: log the verdicts, do not block anything, read the disagreements.
- Turn on enforcement, with the blocked drafts going to a queue someone actually looks at.
Where it fits in an existing system
This is a single HTTP call at the point where the agent's reply is about to be returned to the channel. On Azure it is a policy in API Management or a small function between the orchestrator and the bot channel. It does not touch the model prompt, the retrieval layer or the conversation state, which is exactly why it is the right first improvement for an agent that is already in production: it adds a guarantee without asking anyone to re-open the thing that works.
If you have an agent in production and nothing checking its answers, that is the first thing I would look at.
Related
Have an agent in production?
An AI integration assessment starts with what your agent can say and what it must never say.
Sources
- Introducing System One Models and Jev, TypeSafe AI: typesafe.ai/blog/introducing-system-one-models-and-jev
- Jev on OpenRouter: openrouter.ai/typesafe
We’re on top of things and aim to respond to all inquiries within 24 hours.
Imhauser Technologies
McLean, VA
United States
Available on-site across the DC metro, Tysons, Reston, Arlington, and Washington, DC, as well as hybrid and remote worldwide.