Reduced healthcare patient onboarding from 47 minutes to 8 minutes using a CrewAI multi-agent system handling form-filling, EHR lookup, and eligibility checks.
Patient onboarding at a multi-location healthcare provider required 47 minutes of clinical staff time per case. Three separate systems, manual copy-paste, eligibility checks via phone. Staff were processing 30 intakes per day — the bottleneck before any actual care was delivered.
The tasks were 90% mechanical. The 10% requiring judgment (flagging unusual eligibility situations) still needed a human — but didn’t need a human doing the other 90%.
A CrewAI multi-agent system with 4 specialized agents orchestrated by a supervisor:
Form Agent — Extracts structured data from patient intake forms (PDF/web). Handles messy handwriting via a vision model fallback. Writes to the staging Postgres schema.
EHR Agent — Queries the existing EHR via HL7 FHIR API (custom MCP server). Checks for existing patient records, pulls prior visit history, flags duplicates.
Eligibility Agent — Calls the insurance eligibility API (Change Healthcare). Parses the 270/271 transaction response into a human-readable summary. Flags edge cases for human review.
Summary Agent — Synthesizes the above into a structured intake packet: demographics, insurance status, flagged issues, recommended next steps. Formatted for the clinical coordinator’s review.
Supervisor Agent — Runs the workflow, handles retries, escalates to human queue on any agent failure or confidence threshold miss.
The EHR integration used a custom MCP (Model Context Protocol) server I wrote to wrap the FHIR API. This let Claude call EHR tools via natural language (“look up patient by DOB and last name”) without hardcoding every query shape. The MCP server handled auth, rate limiting, and audit logging.
I ran a 2-week parallel test: agents processed 300 intakes alongside humans. Clinical staff reviewed both outputs blind. Agent accuracy was 94% on structured data fields, 97% on eligibility determination. The 6% error rate was concentrated in name/DOB edge cases (typos, nicknames) — now caught by a dedicated fuzzy-match pre-check.
The supervisor agent’s retry logic was too aggressive — on transient API failures, it would retry 3× before escalating, which created a 3-minute delay spike. I’d use exponential backoff with a 30-second cap and immediate escalation on specific error codes.
30 minutes, free, no deck. We'll figure out if I'm the right fit for your project.