
Ask a patient whether they have been taking their tablets and almost all of them say yes. Self-reported adherence overstates reality by a wide margin, which is why a good nurse does not listen to the word yes. They listen to the half-second before it. Every voice agent throws that half-second away. Tell keeps it. Its agent cannot write to the record by itself: it must call a tool, and that tool is gated on how the answer sounded. No adherence fact is recorded unless the patient sounded certain, or was asked again. A real run: the patient says "Uh... yeah, yeah, I've been taking them", 1.9 seconds to start, the filler held for 1.7. The agent calls record_adherence with took_all. The gate refuses at 44% certain, citing 1.6 seconds of dead air, and returns one instruction: ask which days they missed. The agent asks. The patient says "Okay, honestly, I missed Tuesday and Wednesday." Recorded at 81%. Without the gate, the record reads took_all. One microphone, two AssemblyAI sockets. The Voice Agent API runs the conversation at 24 kHz: turn-taking, LLM, voice, tool calls. Streaming STT v3 runs the measurement at 16 kHz, because it is the one returning per-word timings and confidence. Turn boundaries come from the agent, never the transcriber: v3 ends turns on silence, and that silence is the evidence. Because we control when tool.result is sent, the gate holds the turn open until the measurement lands. No race. Eight signals, noisy-OR combined, each scored against this patient earlier in the same call. A naturally slow speaker is not punished; a sudden stall is caught. One re-ask, then it accepts and flags for a clinician, because a third ask is an interrogation, not care. No clinical validation: every number comes from RAVDESS actors and synthesised speech. Hesitation is not deception, and a flag is a prompt for a human to look, never a conclusion.
30 Sep 2026