Inspiration
Insurance companies deny hundreds of millions of claims a year — and the appeal system is designed to exhaust you. Fighting one denial means 45 minutes on hold, a rep reading a script, and a practice staffer who eventually gives up. Denials work because arguing back doesn't scale. We asked: what if it did?
One of us works on Praxigen, a payer-policy platform with a curated database of 1,343 sourced coverage rules across 61 payers — every prior-auth requirement, medical-necessity criterion, and required document, with citations. That dataset is the perfect ammunition for an AI advocate. The dataset is pre-existing; the voice agent is what we built today.
What it does
NeverHangUp is an AI voice agent that calls the insurance company for you and argues a denied claim until it gets a result:
- Pick a denied claim → the agent dials the payer (ElevenLabs Conversational AI over Twilio)
- It argues the appeal live, quoting the payer's own published policy back to them — criteria, required documents, submission portals
- It counters brush-offs ("we don't see the documentation") with the specific criterion on file, escalates when stonewalled, and won't end the call without a reference number
- Grounding is enforced at dial time: the payer's actual rule is pulled from the database and injected into the call. If no verified rule exists, the agent says so honestly — it never fabricates policy, codes, or patient details
We also built the inbound direction (call our number and ask "does Aetna require prior auth for a lumbar MRI?") and a payer-call-prep tool that assembles a minimum-necessary call brief — grounded in the same database — for the calls humans still make.
How we built it
- Voice: ElevenLabs Conversational AI agents (one info-gatherer, one denial-fighter) connected to a Twilio number for inbound + outbound calls
- Grounding: a keyword-search layer over the 1,343-rule snapshot; the matched rule is injected as a dynamic variable at dial time, so every policy fact the agent asserts traces to a sourced row
- Brains: Gemini 2.5 Flash / Claude Haiku behind a provider selector (phone latency matters), with a guardrail-first system prompt: no-guess rule, payer+plan attribution, PHI refusal, codes-never-invented
- App: Node/Express serving the demo UI, live chat, call-prep brief builder, and the one-button "call me and argue" fight demo with live status + post-call transcript
Challenges we ran into
- Grounding an LLM on a phone call: a voice agent that hallucinates a policy number is worse than useless. We inject the payer's actual rule text at dial time and hard-rule the prompt to argue only from it — and to say "no verified rule" when the database is empty.
- Phone latency: tool-use round-trips are too slow mid-call, so we do the coverage lookup in code before the call starts instead of mid-conversation.
- Twilio trial quirks (verified-number gates), webhook HMAC verification needing raw request bodies, and three people + AI agents shipping to one repo all day — solved with a HANDOFF.md single-source-of-truth discipline.
Accomplishments that we're proud of
Figuring out how payers and their requirements behave and integrating that into phone calls that could save patient lives and prevent provider burnout. Overcoming technical challenges was rewarding, but creating something that could inspire real-world impact was the accomplishment that we're most proud of.
What we learned
The moat isn't the voice — it's the grounding. Anyone can make an agent that talks; making one that quotes Horizon's Uniform Medical Policy 148 correctly, and refuses to answer when it can't, is what makes it usable in healthcare.
What's next for NeverHangUp
This ships as a feature of Praxigen: autonomous status checks, benefit verification, peer-to-peer scheduling, and denial appeals — with human review of every transcript, and BAAs in place before any real patient identifier touches a call.
Built With
- claude
- elevenlabs
- java
- twilio
- typescript
Log in or sign up for Devpost to join the conversation.