The problem
Verifying a single patient's dental benefits takes 20-30 minutes of a front-desk person's time, most of it spent on hold and punching through the payer's phone tree. At a 3-to-5-dentist practice that's 15+ hours a week — and tens of thousands of dollars a year — burned on a task that has to happen before nearly every appointment.
Every minute on hold is a minute nobody is answering new-patient calls, scheduling, or helping the person standing at the desk.
The approach
We built an AI that places the outbound call for you. It dials the payer, navigates the interactive voice menus, submits the provider TIN and fax number plus the patient's subscriber ID and date of birth, confirms identity when the system reads it back, and triggers the payer's fax-back so the eligibility document lands in the office inbox — untouched by staff, in a few minutes.
The hard part is real payer IVRs: they often ignore API-driven key presses and don't reliably recognize synthetic speech. We generate in-band DTMF tones directly through the media stream, fall back between spoken and keypad responses, debounce multi-segment menus to avoid double-presses, and detect dead ends and loops so a call ends cleanly instead of hanging.
The system also handles inbound patient calls (appointment scheduling, patient lookup) and learns the optimal path through each payer's phone system over repeated calls.
What I built
- Outbound voice pipeline that navigates multi-level payer IVRs end to end and triggers fax-back delivery of the eligibility PDF
- In-band DTMF tone generation through the live media stream, with spoken-reply fallback, so it works with real payer systems that reject standard API key-presses
- Intent-driven menu selection matched against payer keywords (eligibility, benefits, claim status), confirmation handling, dead-end/loop detection, and per-payer post-eligibility handling
- IVR path graph builder and scorer that learns and reuses the best route through each payer over time
- Inbound patient-call handling (fuzzy patient lookup by name + DOB, availability, booking, SMS confirmations)
- Admin dashboard for queuing verifications and reviewing saved results and per-call transcripts (full audit trail)
- Node.js
- TypeScript
- Fastify
- Twilio Media Streams
- Deepgram (Nova-3 STT)
- ElevenLabs TTS
- Claude Haiku
- PostgreSQL + Prisma
- Redis + BullMQ
- React + Vite
- Railway
Result
Validated end-to-end against a real national payer's production IVR — the AI navigates the full menu tree, verifies eligibility, and delivers the fax-back PDF in ~3-5 minutes, freeing an estimated 15+ front-desk hours per week. Currently piloting with practices.
- Deployed on production infrastructure and run against a live production payer IVR, not a simulator
- Navigates roughly six IVR menu levels and completes the fax-back flow autonomously
- Roughly $1 in telephony per verification versus ~$10 of staff time; HIPAA-aware architecture with explicit, auditable PHI flows