Mario Lucas3 min read
My voice agent read its own notes to a caller
A test call went wrong in a way no transcript warned me about. What happened and what we changed.
Picture a student ringing back about a course.
The agent says hello, asks a couple of questions, then starts reading out what sounds like its own to-do list. Check eligibility. Confirm the course. Offer a booking slot.
Then it goes quiet. For close to a minute.
That was a test call in July, with me on the other end and not a real student. It was also the version we were about to put in front of real ones.
What went wrong
Text agents get better when you let them think before they answer. You write a reasoning step into the prompt, the model works through it, and only the final answer reaches the person.
A phone call has no hidden step. Everything the model produces gets spoken, or it's silence. So the reasoning got spoken, and while the model worked through the longer bits, the caller heard nothing at all.
It wasn't the first slip either. Earlier, the agent had dropped character on a call and named one of its own internal tools. Small on paper. On a call it sounds like the machine just took its mask off.
What we changed
We stopped calling. Nobody new heard the agent until it was fixed.
Then we went back to the last prompt version that behaved well on real calls, rebuilt from there, and tested every step of the call again before we switched it back on.
How we check the agent now
Red teaming before every release. Each new version gets attacked on test calls before a real lead hears it. Callers who aren't eligible, callers who change their mind, callers who try to pull it off script. If it breaks, it doesn't ship.
Versioned prompts with regression testing. The prompt is code. Every change gets a version number and gets retested against the calls that broke earlier versions, so fixing one thing can't quietly break another.
LLM-as-judge scoring. A second AI model reads the calls and scores each one against our checklist. Did the agent stay in character, check eligibility, offer the right next step and stick to facts it was given? Low scores get flagged.
Human review on the audio. Flagged calls get a person listening, because a transcript can't show you a minute of dead air or a voice that sounds like it's reading a script. What we find goes straight into the next version.
Conversation analytics that can't flatter us. A call only counts as a conversation when a real person spoke. Voicemail greetings transcribe as speech, so without that rule the numbers look better than they are.
Outcome attribution. Every enrolment gets matched back to the calls and texts behind it. That shows us which conversations actually turned into students.
Reasoning stays off the call. If the agent has to work something out, the call is built so it doesn't do that live, in front of the caller.
If you run voice agents, how do you test them before a real customer hears one? Scripted calls, staff playing callers, or something else?