A 97% Success Rate Is a Liability
Thread AI Editorial · October 21, 2026
The monthly review had gone fine for the first 10 months. The success-rate chart for the exception-handling agent ran at 99% during the initial rollout, the same number it had shown since the pilot.
These early successes gave the team confidence they were on the right path. Even though they knew they had launched the product without robust failure mechanisms in place, even though they knew the agent wasn’t perfect, they figured they could continue iterating and tweak the product post-launch.
This perspective seemed to work, until it didn’t. As the team began to scale the product with more customers and real-world scenarios, they experienced failures that couldn’t be accounted for, like runs that stalled halfway through or tasks that were lost mid-run when the team deployed an update. What started at 99% slowly decreased to 97% over 10 months, and as volume grew, daily failures went from less than one at rollout to 1,500, each one a real problem someone was waiting on.
Those failures landed on the support team, the same team the agent was supposed to relieve. Instead of handling fewer inbound problems, they now spent their time untangling failures that aren’t tracked or easily resolved.
Exception agent
Healthy
Success rate since launch
97%
Fell from 99% at launch to 97% today.
At launch
10 clients · 50 runs a day · 1% failure rate
<1
Failed run a day
Today
1,000 clients · 50,000 runs a day · 3% failure rate
1,500
Failed runs, every day
Where the Failures Went
The company had never run a logistics product before it built this one. About a year earlier, it spotted an opening: enterprise shippers were handing every delivery problem to their call center support teams, which was costly and often got overwhelmed with call volume. Shippers wanted an agent that could triage delivery exceptions on its own, without routing every issue to a call queue, and the first company to offer one stood to capture them as early customers. The team picked an open-source agent framework, wired it to the client service rules already in place, and had a working version live in about eight weeks.
That early agent wasn’t pretty, but it did the job. The agent read each exception, such as a package stuck at a hub, a damaged shipment, or a delivery window a driver couldn’t hit, checked it against the client’s own rules, and either resolved it automatically or routed it to a human. Occasionally a run failed, meaning the agent stalled or errored partway through. In the beginning, this was rare, and someone would notice the stuck ticket, fix it by hand, and move on. Although fixing failures by hand wasn’t a long-term solution, with so few runs failing and first-mover advantage at stake, the team decided a more robust system could wait until after launch.
Same start. Two endings.
Anatomy of an early agent run
Every run
01
Exception arrives
A package stuck at a hub, a damaged shipment, a missed delivery window02
Agent is triggered
Takes in the details of the exception03
Checks the rules
Against the client’s own rules
Usually
04
Resolved or routed
Fixed automatically, or handed to a person05
Run completes
Ticket closed
Occasionally
04
Run stalls or errors
Partway through, with nothing to catch it05
Then, nothing
No record of how far the run got and someone eventually needs to fix it by hand06
A customer waits
A real package, stuck where the agent stopped
Behind each of these failures was a real package and a customer waiting on it. Each one sat wherever the agent had stopped working on it, with no record of how far it had gotten or whether anything else downstream, like a reshipment or a refund, depended on it.
Getting there first had answered whether the team could ship fast. It hadn’t answered the question sitting underneath the dashboard: Does the agent execute correctly, every time?
The agent executed correctly the overwhelming majority of the time, and the technology kept improving month over month. None of that helped the customers behind those 1,500 daily failures. Each of them was waiting on a delivery that never resolved, and each of them had a name.
Success Rate Is Not a Single Number
Look past the percentage, and the dashboard’s real problem comes into view: a success rate measures a share, but customers experience a count. At low volume, the count is small enough to look past. At high volume, the count is thousands of customers every single day, whether the aggregate metric looks reassuring or not.
What the team had put off until after launch was the layer that catches the failures and does something deliberate with them without needing someone to step in and triage. That layer means durable execution that survives a restart mid-run, idempotent retries that don’t resolve the same exception twice, and a completion guarantee so every run ends in a known state: finished, failed cleanly, or still in progress. It also means building in failsafe logic that is able to handle runs that deviate from defined paths. Those pieces exist on any serious stack, and somebody still has to build them, then prove they hold up at the speed the business is actually running.
What shipped
The agent logic, live in about eight weeks
Read the exception
Check the client’s rules
Resolve or route
What sits underneath · left to the builder
Put off until after launch
Durable execution
A run survives a restart midway and picks up where it stopped.
Idempotent retries
A retry never resolves the same exception twice.
Completion guarantee
Every run ends finished, failed cleanly, or still in progress.
Failsafe logic
Runs that leave the defined path are handled, not stranded.
That proof work does not shrink when the ship date has passed. It’s the same job before and after, but doing it with a growing number of live failures a day is considerably harder than doing it before the first client site goes live.
When durable execution and completion guarantees are part of the platform from the first run, a failure becomes a recorded, resumable event, handled the same way every time. The team doesn’t have to choose between launching first and handling failures well, because the machinery underneath was built for the business the company was going to become, not just the pilot it started as.
Same start. Every ending known.
Anatomy of a durable agent run
Every run
01
Exception arrives
A package stuck at a hub, a damaged shipment, a missed delivery window02
Agent is triggered
Takes in the details of the exception03
Checks the rules
Against the client’s own rules
Usually
04
Resolved or routed
Fixed automatically, or handed to a person05
Run completes
Ticket closed
Occasionally
04
Run stalls or errors
Partway through, and the platform catches it05
Recorded
Where it stopped and what depends on it, so it can pick back up without repeating work06
A known state
- Finished
- Failed cleanly
- Still in progress
That is the version worth building toward: an agent that behaves reliably whether a run succeeds or fails, so no one is left reconstructing what happened or guessing how to fix it. Both of these realities are critically important because the failures, however infrequent, are never invisible to the team responsible for them or the customers who experience them.
The Series
This is Post 4 of six, and the second of two about moving up the stack. Read the thinking behind this series in the manifesto.
Your Customers' Regulators Will Ask What the Agent Did – and Why
For companies whose customers already depend on their product, adding AI means answering to those customers’ regulators too. This post follows a claims software company that ships an agent to review insurance claims, then can’t explain one of its denials to a state examiner because the reasoning was never recorded when the decision was made.
The Demo Was the Easy Part
Businesses that run their operations on a product hold every new feature to the same service commitments. This post follows an insurance software company whose overnight deploy leaves quote requests stalled mid-decision while every health check stays green, because nothing recorded where each request stopped or how to resume it.
What Can This Agent Access for Each of Your 200 Clients?
Turning an internal tool into a product for a new market pays off if it ships while the opportunity is still open. This post follows a company that plans to sell its internal dispute-reconciliation agent, then learns that keeping each client’s data, billing, and limits separate could take quarters to build, long enough to miss the opening.
A 97% Success Rate Is a Liability
Teams moving fast into unfamiliar territory often launch first and plan to iterate later. This post follows a company building its first logistics product, whose exception-handling agent slips from 99% to 97% success as volume grows, leaving 1,500 failed runs a day with nothing built to handle them.
Productize the Playbook: Composite One
The first composite about codifying expertise. Methodology that lives in a few senior leaders, reaching clients that those people will never have time to serve, so people and product sell together.
Productize the Playbook: Composite Two
The second playbook composite, closing the series. A different organization, the same tension: doubling down on human capital while turning part of the playbook into product.