An AI agent that checks a patient's dental insurance before surgery, so the practice's insurance coordinator doesn't spend hours on hold.
Coverage Agent was built in two weeks for the AWS Community Day 2026 Agentic AI Hackathon, whose challenge was "Hand it off": build an agent that takes over a task a specific person does by hand every week. I partnered with engineer Nidhi S. I led the product management, UX/UI design and website design, and Nidhi built the agent, its integrations and the AWS deployment.
Scope of Work

This was a two-person team, and we split the work cleanly:
At a small oral surgery practice, one insurance coordinator checks benefits for every upcoming surgery: extractions, wisdom teeth, bone grafts and implants. The insurer's electronic check often leaves out what a surgery depends on, like how much of the annual maximum is left, so most checks end in a phone call. By her count, that's about 75% of checks, roughly 15 minutes on hold each and more than 20 calls a day: close to 25 hours a week on hold.
And the numbers have to be right. The deductible left, the coinsurance and the annual maximum set the patient's estimate and deposit, so a misheard number becomes a billing error.

Coverage Agent works through the same steps the coordinator would, cheapest channel first:

Nidhi's first version worked, but it looked like a generic dark developer dashboard: teal on near-black, emoji icons and dense blocks of text. The people who'd use this work in a dental practice, and the product needed to feel calm, trustworthy and clinical without feeling cold.
I rebuilt the visual identity from the ground up. I designed a new C+ logo mark and a Coverage Agent wordmark pairing Vend Sans with Playfair Display italic, and built a palette around a fresh blue, with parchment pages, white cards and a navy dark mode, all defined as design tokens. The navigation became a frosted-glass floating bar with a full-screen menu on phones, keyboard-accessible with a focus trap.

The site follows each visitor's system setting, so I designed both themes from the same design tokens. Light mode uses parchment pages and white cards; dark mode switches them to navy. The stats band and the number check work the other way round: they're navy in light mode and light in dark mode.

An agent is invisible by default, so the main design challenge was showing what it does in a way a coordinator, and a judge, would get in seconds. On the home page I added a stats band that puts the coordinator's week in numbers, and two animated snapshots of the agent at work.
The first stages the insurer call as two iPhones, the agent and the insurer's benefits line, with live captions, call-phase chips (Dialing, On hold, Connected, Read-back checks, Benefits confirmed) and a signal animation between them. It makes the read-back, the part that protects the patient, the thing you watch.
The project's rule is: the AI decides what to do next, never what's true. I designed the second snapshot around that rule. It shows the agent's reading next to what the insurer confirmed, field by field, and nothing is written until every row has a check.

The hackathon required showing what happens when things go wrong, so I designed the Agent Demo around three recorded cases: one successful verification and two failures. Each replay has a stepped progress bar with markers for each step, a play bar, the real call audio and an animated visual for every step.
In the conflicting-benefits case, a misread was injected on purpose: the agent reports $1,500 left on the annual maximum, but the insurer confirmed $1,000. The mismatch turns red, the case is locked and nothing is written, so a wrong number never reaches the patient. In the refusal case, the rep won't talk to an automated caller, and the case goes to the coordinator with a checklist.

The dashboard is the coordinator's view: totals for verified and flagged cases, a card for each scenario, and a table of every case with its payer, procedure, status and data source. A banner makes it clear that every case is synthetic. I also redesigned the patient estimate as a printable document with Save as PDF.

As the product lead, I wanted the site to be clear about its limits. The insurers shown are fictional, with a "Simulated insurers. No affiliation with any carrier." note, every case is synthetic, and the demo replays are labeled as recorded runs, not live agent calls. The home page motion has a Pause control (WCAG 2.2.2), and the README explains what's real and what's simulated in plain language.
Each turn, a model on Amazon Bedrock (Claude Haiku 4.5) reads the case history and picks one of five tools: check eligibility, phone the insurer, submit coverage, write the record or escalate. Plain Python enforces the order (no call before the electronic check, at most one call, an 8-turn limit), compares every value with the insurer's own answer and does all the patient math. The model never sees the patient's name, date of birth or member ID.

Design and website: Next.js, TypeScript, CSS design tokens and next/font. Engineering (Nidhi): Python, FastAPI, Amazon Bedrock, Amazon Polly, AWS Lambda, API Gateway, Amazon DynamoDB, AWS Amplify and the Stedi eligibility API, backed by 539 backend and 145 front-end tests.
Running the agent weekly on its own, so every upcoming case is checked before Monday without anyone starting it; routing between medical and dental plans, since oral surgery like impacted wisdom teeth is often billed to medical first; and more channels, with insurer portals before a call, then real calls through Amazon Connect where carriers allow automated callers.