Calibrated escalation for AI agents.
Nobody can tell you what your escalation threshold buys.
Every agent in production hands off below some confidence number somebody picked in a pilot. Abstain replaces that number with an error budget you choose and a threshold that provably holds it.
A support agent on 2,000 held-out tickets, then the same agent after a model upgrade. Thresholds, error rates, and the tradeoff curve computed live from the outcomes.
The problem
A confidence score is a ranking. You are treating it as a probability.
An agent doing work with consequences needs a rule for when to stop and ask a human. Every team writes that rule as a threshold on the model’s self-reported confidence, and that score is not calibrated: 0.9 does not mean nine times out of ten. So the threshold has no operational meaning. It is not tuned to an error rate, because nobody computed the error rate it produces, and it silently changes meaning every time the model, the prompt, or the retrieval index moves underneath it.
The insight
You do not need the score to be calibrated.
Split conformal takes any score, however badly calibrated, and converts it into a threshold with a finite-sample guaranteed error rate on the answers you do give. It never tries to fix the score. It only needs the score to rank, and then it reads the threshold off labelled outcomes. That inverts the question a team cannot answer into one they can: instead of "is 0.8 the right threshold", you decide "we can live with 2% wrong answers", and the method tells you that costs 34.6% of tickets going to a human. The first is unanswerable. The second is a business decision, and it is the decision the buyer was always trying to make.
Split conformal risk control. Sort a labelled calibration slice by score, walk down from the most confident, and take the deepest threshold whose running error rate among answered items stays inside the budget. Distribution-free and finite-sample: it assumes the calibration slice is exchangeable with live traffic and nothing else. No calibration of the score, no assumed error distribution, no asymptotics. Re-fit on a rolling window and the threshold tracks the model instead of the model drifting away from the threshold.
How it works
Four steps, no data science team
Whatever your agent emits as confidence: a logprob, a self-rating, a reranker score, an ensemble agreement rate. It does not have to mean anything. It has to rank.
A few hundred outcomes a human already reviewed. Most teams have this sitting in their QA queue and have never used it for anything but a weekly accuracy number.
You choose what error rate the business can absorb. Abstain returns the threshold that holds it and the escalation volume it costs, so the tradeoff is priced before you ship it.
New model, new prompt, new index: the threshold is re-derived and the routing config updated. A fixed number would have gone stale here, which is the failure mode this exists to remove.
Who it is for
Whoever owns the agent’s error budget
Teams running agents in workflows where a wrong answer costs real money. Support refunds, claims, order changes, provisioning, anything where the agent commits the company to something.
Pricing
- –Threshold calibration from a CSV
- –Abstention curve
- –Public, no account
- –Hosted routing policy with a served threshold
- –Automatic re-calibration on model change
- –Per-queue budgets
- –Drift alarm when the calibration slice goes stale
- –Self-hosted
- –Class-conditional budgets
- –Audit log of every routing decision and the threshold in force
- –SSO
Competition
What exists, and what it does not do
| Who | What they do | The gap |
|---|---|---|
| Guardrails AI / NeMo Guardrails | Rule and classifier checks on agent output before it is released. | Catches specified failure classes. Says nothing about the residual error rate on everything it passed, which is the number the business actually cares about. |
| LangSmith / Braintrust / Langfuse | Tracing and evaluation. Will show you accuracy by confidence bucket. | Measures after the fact. The routing rule is still a constant in someone’s config, set by hand and not connected to the measurement. |
| Human-in-the-loop platforms | Route escalations to a human queue and manage the review workflow. | Solve the plumbing of the handoff. The decision of when to hand off is left to a threshold the customer picks. |
| A threshold in a config file | What almost everyone does now, plus a dashboard someone checks weekly. | Cannot state the error rate it buys, and breaks silently on model upgrades in the direction that produces more wrong answers, not fewer. |
The guarantee needs the calibration slice to look like tomorrow’s traffic. In a support queue that assumption breaks whenever a product launch shifts the ticket mix, which happens more often than the model changes. If we cannot detect that shift and force a re-calibration before the threshold goes stale, we ship a policy that claims a 2% error rate while delivering something much closer to the unfiltered one, and that is strictly worse than the hand-picked threshold it replaced because the team now trusts it. The company rests on making the staleness detector work and on making labelled outcomes cheap enough to keep re-fitting weekly. The second risk is cost of goods: this needs labels, and a customer who cannot afford to review a few hundred outcomes a month cannot use it.
Market
Attached to the agent deployment budget, alongside the human review team it sizes
The buyer is already paying for the escalation queue. A team routing 50,000 tickets a month with a 15% handoff rate employs a handful of reviewers; moving the handoff rate by five points is worth more than this costs. Two thousand teams at the Team tier is $12M ARR, and the Scale tier is priced against a single avoided incident.