Flagship project
Provider Search Agent Carnegie Mellon capstone · active development
Provider directories return the wrong doctor and never say so. This one refuses to guess.
Every displayed result is grounded in a live tool call to the CMS national provider registry. When the registry can’t say whether a doctor takes your plan, the answer says exactly that, instead of a confident wrong name. The agents interpret the request, map it to clinical taxonomy, widen the search only as far as the data supports, and screen for providers you can actually book.
- Role
- Author. Five-agent LangGraph system built as the Carnegie Mellon Agentic AI capstone: architecture, agents, orchestration, guardrails, replay-based tests and the streaming viewer.
- Problem
- A directory has to settle two questions the registry doesn't: which person is this, and does this person do what I need. Fixed rules fail silently, so the patient gets the wrong provider, or never sees the right one.
- Users
- Patients and care coordinators searching by specialty, name or plan.
- Agents
- Interpret the request, map it to clinical taxonomy, widen the search adaptively with an honesty report on what the data cannot honor, screen for bookable providers, and route the answer through an answerability agent that refuses to go beyond the evidence. Two guardrail gates, six escalation paths, one durable log of cases a human settled.
- Technology
- agents: Python, LangGraph, Tree of Thought over a ReAct loop with nine tools · data: live tool calls against the CMS NPPES registry and NUCC taxonomy, pluggable semantic encoder · api: FastAPI streaming one event per agent step · viewer: Preact + htm, vendored, no build step · tests: recorded model turns, so the suite spends no tokens
Private repository · Walkthrough on request
- query“cardiologist near 94304 who takes my plan”
- constraintsgeo ✓ · specialty ✓ · plan network ✗ not in registry
- retrieval137 candidates · widening stopped at policy limit
- orchestratortool: practice_volume → 12 with procedure history
- answerabilityanswer states what the data cannot determine
Illustrative agent traceNot a screenshot