You shipped an AI agent. Six months on, almost nobody opens it.
That is the normal outcome rather than the embarrassing one. Two thirds of companies now have AI agents nobody uses, and the named causes are almost never model quality. They are context lost between every run, and no way to prove the thing ever worked.
Both are fixable. Neither requires rebuilding what you already paid for. Most of these agents were fine, and were quietly abandoned for reasons that had nothing to do with how they were built.
Usage spiked at launch and was flat within a month
It answers the same question differently on Tuesday than it did on Monday
Nobody can say what it caused last quarter without hedging
It is still behind a beta flag or a waitlist
The person who built it has changed team, or left
Three or more and the problem is almost certainly memory and attribution rather than the model. Which is good news, because those are the two that can be fixed without touching what you built.
Running on live patient records under UK GDPRDeployed across Vista portfolio companiesBuilt inside a health tech business scaled past $170M ARR
The diagnosis
Agents rarely fail. They get abandoned, and for three reasons
None of them is the model. Two are engineering problems with known fixes. The third is not a software problem at all, and it is worth being honest about which one you actually have before spending anything.
Cause one
It forgets everything between runs
Every session starts from nothing, so the agent never compounds. It asks what it already asked, repeats an angle that was rejected last month, and feels worse on the tenth use than the first. People stop opening it long before anyone formally kills it.
Fixable. This is what Recall does.
Cause two
Nobody can prove it did anything
It produced activity, and activity is not attribution. When the review comes and someone asks what it actually caused, there is no answer that survives a follow up question, so the budget goes somewhere that can produce a number.
Fixable. This is the harder half, and the more valuable one.
Cause three
The person who built it moved on
The agent was somebody's project, and that somebody changed teams or left. Nothing was wrong with the code. There was simply nobody left whose job it was to keep it alive as the business shifted underneath it.
Not a software problem. This one needs a person, and that is the retainer.
Fix one
It stops forgetting, without starting to make things up
Bolting a memory tool onto an amnesiac agent trades one failure for a worse one. It remembers more, including the things that were never true and the ones that stopped being true, and an agent that states a stale fact to a customer is more damaging than one that knows nothing.
So anything held above a hint has to carry the source it came from. That rule is a constraint on the table rather than a line in a prompt, which means no phrasing and no code path gets around it.
Stored as fact
"Opened three account executive roles in August, all in the Midwest region."
boards.greenhouse.io/…
confidence high · expires in 180 days
Refused, kept as a hint
"They are probably about to replatform off their current vendor."
no source · may be considered, may never be stated
And it throws things away on a schedule that matches what they are
A memory layer that never forgets is a liability rather than an asset, and under GDPR storage limitation it is a compliance problem as well as an accuracy one. Retention is a policy per kind of memory, not one expiry somebody picked once.
A fact
180 days
Specific and checkable, and therefore perishable. It comes back up for verification before anyone acts on it again.
An objection
18 months
A budget freeze is worth re testing once the cycle turns. Treating it as permanent loses the account for no reason at all.
A hard constraint
Never
A data residency clause does not stop being true because time passed. It stays until somebody removes it on purpose.
Fix two
It can answer the question that killed the last one
Most agents die at a review, not in production. Somebody asks what it actually caused, the honest answer is a number nobody measured, and the budget moves. An agent that reports its own contribution, including when that contribution is nothing, survives the meeting the others do not.
One of my own campaigns, reporting that it did nothing
440 messaged, 53 booked. 60 held back at random, 11 booked anyway.
So the campaign caused zero bookings rather than 53, the system says so on its own screen, and it has stopped recommending that campaign. That is the layer working. It refused to learn from a result it could not attribute.
This is also the number that makes a revived agent defensible. Not activity, and not a dashboard. A measured difference against people deliberately left alone.
Switch the client and watch what the agent is allowed to know
Some agents are not abandoned, they are blocked, and the block is almost always the same question: if this thing learns, what stops it learning across boundaries it should not cross. Below are two unrelated companies inside one workspace, which is the arrangement that actually risks a leak.
The agent working on Northline Dental Group can read these 2 memories and nothing else in the system.
Fact
Practice software API confirmed
Their practice management vendor confirmed API access on 25 August. The first extract is imminent, so pseudonymised records should be requested now rather than after go live.
Source
Email thread, 25 Aug 2026
Confidence
Sourced, high confidence
Retention
Expires in 174 days
Preference
Wants a number, not a narrative
Replies when the first line contains one checkable figure. Ignored two longer briefs that opened with context.
Source
Reply, 12 Jul 2026
Confidence
Sourced
Retention
Expires in 305 days
2 memories about Harbour Freight Systems are invisible from here.
Not filtered out of the view after the fact. The query that fetches memory for Northline Dental Group has no branch that can return them, and the row itself cannot be attached to a company outside its own workspace.
Six independent controls. Twenty four assertions in the test that tries to break them.
Inside your own infrastructure
The schema and the API deploy into your own project. Your data never leaves your estate and there is no third party in the path. Ask for this one if the agent stalled in a security review rather than in usage.
Hosted, rented per organisation
I run it, you point your agent at it. Faster to prove the revival is real, same isolation model underneath, and it moves in house later without a rewrite.
How this goes
Three steps, and you can stop after any of them
Each one is worth having on its own and produces something you keep. Nothing here requires a platform decision, a migration, or a rebuild of the agent you already paid for.
01Free
The audit
About a day, no call needed
I probe your agent from the outside. Two sessions showing what it actually retains between them, and a set of questions it answers confidently and cannot source.
You keep: A recording and the findings, dated and checkable. Sendable to whoever keeps asking why usage is flat.
02Fixed price
The diagnostic
About two weeks
Where the agent loses context, what it cannot attribute, and what a security review will stop. Run against your data rather than from the outside.
You keep: A written spec for the governance layer and a fixed quote to build it. Yours to keep, and to build with anyone you like.
03Fixed price, scoped in step two
The revival
Weeks, not quarters
Recall deployed into your own infrastructure and wired into the agent you already have, with the measurement that lets it defend itself at the next review.
You keep: A working agent, and a number it can produce when someone asks what it caused.
"We would build this ourselves"
You probably could, and the diagnostic is written so you can. It is a spec and a quote, not a lock in. Most teams find the constraint is not capability, it is that nobody currently owns the agent, which is the thing that killed it the first time.
"Why not an off the shelf memory tool"
Use one, if recall is all you need. They store what was said. None of them require a source before recording a claim, expire an objection differently from a contract clause, or answer a security review about what one client can learn about another. That gap is the whole of this page.
Send me the agent nobody opens
A URL is enough to start. If it is reachable, most of this is visible from the outside, and you get the findings whether or not we ever speak.
If what comes back is worth acting on, the next conversation is what reviving it would take. If it is not, you have lost a minute and gained a recording that answers the usage question for you.
If you already know
Take a slot
Thirty minutes. Bring the agent that stalled and whatever you know about why. You will leave with a read on whether it is worth reviving, and that is true even if the answer is no.
If you already know what you want, take a slot. If you would rather see something first, tell me what you are dealing with and I will send it over. No call required either way.