Inspiration

In May 2023, the U.S. Senate Committee on Finance released an investigation titled "Ghosts in the Network", revealing that over 80% of listed mental health providers across 12 major commercial health plans were phantom listings—unreachable, disconnected, or no longer taking patients. In parallel, CMS national audits showed that 52% of provider directory locations contained material errors.

When directories rot silently, consumers and patients bear the cost: making 10 to 15 successive calls during acute medical crises just to reach a single doctor. Traditional manual audits cost between $25 and $50 per listing and take months. We built Muster to replace manual surveys with programmatic, empirical telephony verification using autonomous voice agents at scale.

What it does

Muster ingests a directory (CSV or JSON) and programmatically places autonomous voice calls via CALL-E, asking a single benign qualifying question: "Are you currently in-network and accepting new patients?"

It isolates the callee's response, verifies operating signals, and certifies each listing:

  • Present: Active staff explicitly confirms network status and open patient intake.
  • Ghost: Disconnected line, wrong business, or explicit confirmation that the provider departed or retired.
  • Unreachable: Terminal carrier busy, no-answer, or disconnected IVR loop.
  • Uncertain: Ambiguous dialogue or early operator hangup before verification.

Every verdict is backed by an auditable verbatim cited quote and a confidence score ( c \in [0.0, 1.0] ). Muster then computes the headline mathematical Ghost Rate:

$$GR = \frac{N_{\text{Ghost}}}{N_{\text{Present}} + N_{\text{Ghost}}} \times 100$$

and the consumer access barrier multiplier:

$$N_{\text{access}} = \frac{1}{1 - \left(\frac{GR}{100}\right)}$$

where ( N_{\text{access}} ) quantifies the average number of calls a patient must dial before reaching a verified, active provider. Results stream live to a Mission Control switchboard UI where confirmed ghost nodes crack and drop away upon completion.

Evidentiary Decision Matrix

Verdict Meaning Confidence Trigger Conditions Sample Spoken Proof
PRESENT Active, verified participant ( 0.80 - 0.98 ) Staff confirms network participation and intake. "Yes, we are in-network with BlueCross and currently accepting new patients."
GHOST Phantom listing ( 0.85 - 0.98 ) Reaches wrong entity, provider departed/retired, or dead line. "Dr. Jenkins retired three years ago. This number is now an accounting firm."
UNREACHABLE Non-responsive failure ( 0.70 - 0.90 ) Rings without answer, busy/reorder tone, or IVR menu loop. Carrier signal: NO_ANSWER or terminal IVR loop.
UNCERTAIN Inconclusive interaction ( 0.40 - 0.60 ) Operator answered greeting but disconnected before verification. "Mount Sinai Hospital, how can I direct your call? [Call Ended]"

How we built it

  • Directory Ingress: Python parser with spreadsheet formula injection protection (=, +, -, @) and E.164 pre-call anomaly detection (rejecting dummy digits and duplicate lines).
  • Core Engine: Asynchronous runner with concurrency controls and a Credit Guard modal in the Web UI to prevent unintended credit consumption.
  • Telephony Gateway: Subprocess client orchestrating the CALL-E CLI with a 4.0-second SIP line release cooldown, paired with an offline deterministic Mock harness.
  • Evidentiary Classifier: Deterministic turn parser that isolates callee speech from assistant prompts (get_callee_turns) to eliminate self-citation bugs.
  • Mission Control Switchboard: FastAPI backend with Server-Sent Events (SSE) driving a Vanilla CSS/JS switchboard with circular SVG adequacy dials and cracking ghost nodes.
  • Agent Integration: Exposes a FastMCP server tool (audit_directory) and a reusable Agent Skill for multi-agent workflows.

Challenges we ran into

  1. Classifier Self-Citation: Early runs matched affirmative phrases in the assistant bot's own question (e.g. "accepting new patients"), falsely classifying disconnected operator calls as Present. We built strict callee turn isolation (get_callee_turns()) to eliminate bot self-citations.
  2. SIP Concurrency Collisions: Simultaneous outbound cellular calls caused carrier line contention. We enforced sequential execution with a 4.0-second SIP trunk cooldown between calls.
  3. Cross-Platform Process Piping: Windows terminals failed on UTF-8 emoji and glyphs during subprocess capture; resolved by enforcing explicit UTF-8 decoding with character replacement fallbacks.

Accomplishments that we're proud of

  • Placed verified live CALL-E phone calls to active New York clinic switchboards, validating real intake receptionists with verbatim transcript evidence.
  • Achieved a zero-live-calls guarantee in automated testing: 33 unit tests execute in 0.13 seconds with 100% offline determinism.
  • Submitted upstream PR #513 contributing Muster as a reusable Agent Skill to CALLE-AI/awesome-phone-call-agents.

What we learned

Autonomous voice agents are only as reliable as their boundary classification rules. Telephony edge cases—such as multi-tier hospital IVRs, hold music, and receptionist re-routing—require conversational turn isolation rather than naive transcript text matching. Defensive CSV sanitization is also essential when exporting automated phone ledger reports.

What's next for Muster

  • Multi-Sector Expansions: Pre-baking schemas for state licensing boards, commercial contractors, and marketplace vendor registries.
  • Automated Carrier Webhooks: Pushing instant audit webhooks to health insurers when a provider listing is certified as a ghost.
  • Scheduled Continuous Monitoring: Running periodic, non-intrusive re-audits every quarter to prevent silent directory rot.

Built With

Share this project:

Updates

Submission history