Your AI agent is logging its failures as successes.
Voice platforms give every call a verdict. None of them lists the questions your agent couldn’t answer. We find those questions and get them answered.
A free 48-hour audit →Why does my AI phone agent say it doesn't have that information?
Because the answer isn't in its knowledge base, and nothing flags the miss. Voice platforms give every call a verdict, but none of them lists the questions the agent couldn't answer, so the same question can fail for weeks while the knowledge base stays out of date.
The agent deflects
“I don’t have that information.” The call ends. Nothing is logged as a failure.
Nobody reads transcripts
At real volume, no one is reading them. The gap is invisible by default.
It happens again
The same question fails for weeks. Every instance is a customer who left.
Platforms report that the call happened. None of them reports what the agent didn’t know.
How do you find what a voice agent can't answer?
We ran the engine on a public research corpus it had never seen, with every threshold locked before the data was read. Thousands of phrasings came back as a short, ranked list of gaps.
| # | What the user couldn’t get | Times | Domains | Fix | |
|---|---|---|---|---|---|
| 1 | Booking slot unavailable (room or table) | 1,065 | hotel, restaurant | TOOL | |
| 2 | Hotel search: no match for the requested combination | 711 | hotel | TOOL | |
| 3 | Entertainment venue in the centre | 106 | attraction | ENTRY | |
| 4 | Multiple-sports venue outside the east | 102 | attraction | ENTRY | |
| 5 | Train: no service at the requested time / route | 97 | train | TOOL | |
| 6 | Restaurant search: common cuisine, no match for price / area | 78 | restaurant | TOOL | |
| 7 | Entrance fee / admission price not in the data | 74 | attraction | ENTRY | |
| 8 | College outside the centre / west | 38 | attraction | ENTRY | |
| 9 | Theatre / cinema in an area with none | 36 | attraction | ENTRY | |
| 10 | African restaurant in the wrong area / price | 34 | restaurant | ENTRY | |
| 11 | Swimming pool in an area with none | 33 | attraction | ENTRY | |
| 12 | Concert hall outside the centre | 27 | attraction | ENTRY | |
| 13 | Architecture outside the centre | 26 | attraction | ENTRY | |
| 14 | Nightclub outside the centre / south | 25 | attraction | ENTRY | |
| 15 | Vietnamese restaurant in the wrong area / price | 14 | restaurant | ENTRY | |
| 16 | Lebanese restaurant in the wrong area / price | 12 | restaurant | ENTRY | |
| 17 | Japanese restaurant in the wrong area / price | 11 | restaurant | ENTRY | |
| 18 | Turkish restaurant in the wrong area / price | 11 | restaurant | ENTRY | |
| 19 | Thai restaurant in the wrong area / price | 10 | restaurant | ENTRY | |
| 20 | Boating in an area with none | 10 | attraction | ENTRY | |
| 21 | Park in the west | 10 | attraction | ENTRY | |
| 22 | Korean restaurant in the wrong area / price | 9 | restaurant | ENTRY | |
| 23 | Seafood restaurant in the wrong area / price | 6 | restaurant | ENTRY | |
| 24 | Buy / reserve attraction tickets | 5 | attraction, train | TOOL | |
| — | 38 “No [cuisine] restaurant” rows: a dataset artifact, excluded | 745 | restaurant |
ENTRY: one knowledge-base entry would answer it. TOOL: no entry can; it needs a live lookup or an action.
By gap count it is 57 to 5. But the occurrence split is the honest one, and it argues against us. The product’s job is to tell them apart, which is why it classifies rather than just counts.
Among the 24 substantive gaps alone, 23% of moments (594 of 2,550) are entry-fixable.
What this does not show
MultiWOZ is a research corpus with a bounded database; its misses are mostly database misses, not production knowledge-base gaps. 38 of the 62 named gaps are absent-cuisine rows from an ontology that lists cuisines with no venues. This demonstrates that the engine works on data it has never seen. It does not demonstrate demand.
Every parameter was set before the corpus was read.
- Corpus
- MultiWOZ 2.2, train + dev + test: 10,437 human–human dialogues, 143,044 turns. Text dialogues, so the engine is not voice-specific.
- Go / no-go
- Set in advance: at least 400 candidate moments, or stop. It came back 5,153, so the run went ahead.
- Model
all-MiniLM-L6-v2sentence embeddings of the user’s request, not the system’s refusal.- Threshold
- Cosine similarity 0.58, locked before the corpus was read. Not swept, not tuned.
- Same-gap rule
- Two moments are the same gap if one single knowledge-base entry would have answered both.
- Clusters
- 680 raw micro-clusters, grouped into 62 named gaps. Every merge, and every cluster left out with its reason, is listed in the files below.
- Thresholds
- Set in advance: at least 8 gaps, 15 recurrences in the largest, 40% coverage. Came back 24 substantive gaps, 1,065, and 49%.
My AI receptionist keeps saying it doesn't know. What can I do?
A free 48-hour audit.
Read-only access to whichever platform your agent runs on. Nothing deployed, nothing in the call path. You get back the questions your agent couldn’t answer last week, ranked, with the gaps a single knowledge entry would fix separated from the ones that need a tool.
If it doesn’t find five distinct questions asked three or more times that your agent didn’t answer, there’s nothing to discuss.