BenefitBack AI: an agent that helps members use the benefits they already have
Turning unused benefits into completed claims and booked appointments.
Inspiration
Medicare Advantage plans include supplemental benefits for everyday needs, such as over-the-counter (OTC) allowances and wellness visits. Many of these benefits go unused. Members don't know what is available, forget that an allowance expires, or give up partway through a claim or booking.
So the plan has already funded value that the member never receives.
Plans already send reminders, but they are generic, go out on a fixed schedule, and take no account of a member who has ignored the last three. We wanted an agent that decides who to contact, when, on which channel and with what message, and then helps the member finish the task. Because messaging members about health benefits is regulated, consent-bound and privacy-sensitive, the central design question was how to give a language model that job without ever letting it send something it shouldn't.
The problem: what recent research shows
- Most members leave most benefits unused. Avidon Health's September 2026 review, drawing on the Commonwealth Fund's 2024 Value of Medicare Survey, reports that 3 in 10 Medicare Advantage enrollees used none of their supplemental benefits in the past year. Use of individual benefits was low: 46% used the OTC allowance, 42% dental, 41% vision and 7% hearing. Yet 89% said these benefits were important to them, more than one in five said they didn't know all their benefits or how to use them, and eight in ten said they would like a notice about unused benefits. CMS had required plans to mail members a mid-year notice listing their unused benefits, then delayed it in September 2025 and rescinded it in the 2027 final rule. Plans can still contact members on their own, so closing the gap is now up to them.[^1]
- Members want email and text. A 2025 Commonwealth Fund and SSRS survey found that of enrollees who wanted a notice about unused benefits, 73% preferred email and 27% preferred text messages.[^2]
- More than 90% see the value. A November 2025 Humana Healthcare Research survey of nearly 6,000 Humana Medicare Advantage beneficiaries found that more than 90% agreed supplemental benefits could improve health and save money.[^3]
- OTC availability is shrinking. KFF's June 2026 analysis found that the share of enrollees in individual Medicare Advantage plans offering OTC benefits fell from 79% in 2025 to 68% in 2026.[^4] This measures availability, not use, but it makes the remaining benefits more worth using.
Not every unused benefit reflects an unmet need. Still, members say they want to be told, and email and text are how they want to hear it. That is the gap BenefitBack AI is built for.
What it does
1. OTC benefit recovery
A daily scan scores each member's open benefits by urgency, for example how many days are left and how much is unused. For each candidate, a planner agent reviews the member's context and engagement history and decides whether to send a nudge, wait, or escalate, and it records its reasoning. If a member has ignored three nudges in a row, for instance, the agent may choose to wait rather than send another.
When a member acts, they open a secure link, verify their identity with their date of birth, and complete the claim, including uploading a receipt.
2. Wellness appointment booking
A member can reply to a reminder in plain language, for example "what slots are available?". A conversation agent offers open times, the member picks one, and a confirmation arrives on WhatsApp and by email.
3. Multichannel communication
The system reaches members through AWS End User Messaging Social for WhatsApp, Amazon SES for email, and AWS End User Messaging for SMS and RCS. It respects each member's channel preference and consent. Member replies on WhatsApp flow back through Amazon SNS into the conversation.
4. Privacy and controlled execution
Messages carry only a pointer or a reference number, never benefit amounts or health details. Anything sensitive sits behind the verified link. Every decision, message and action is written to an audit log, and an admin console shows each decision, the tools the agent called, how long each took, and which model made it.
How we built it
The system has two halves with a hard boundary between them.
The agent proposes. We built the planner and conversation agents with the Strands Agents SDK on Amazon Bedrock, using Amazon Nova Lite. They get read-only tools, such as member context and engagement history, and they must answer in JSON. They never send a message, book a slot or change a balance. If the model's output fails validation, the system falls back to a deterministic baseline rule and records that it did.
Deterministic code decides. Everything that could cause harm sits behind code we can test exhaustively:
- a policy engine that enforces consent, quiet hours (21:00 to 08:00 in the member's local time), contact frequency and content tiers;
- a catalog of 17 pre-approved message templates and a content linter, so the model chooses a template and fills its slots but never writes free text to a member;
- a dispatcher, the only component allowed to send anything.
A message goes out only when every check agrees:
$$ \text{send} \;=\; \text{agent proposes} \;\wedge\; \text{policy allows} \;\wedge\; \text{linter passes} \;\wedge\; \text{member consented} $$
A wrong model decision can at worst cost a missed nudge. It cannot produce a harmful message.
AWS services
| Layer | Services |
|---|---|
| Triggers and entry | Amazon EventBridge Scheduler, Amazon API Gateway, Amazon SNS |
| Application | AWS Lambda (scanner, sweeper, API) |
| Agent | Strands Agents SDK, Amazon Bedrock (Nova Lite) |
| Dispatch | Amazon SQS with a dead-letter queue, dispatcher on AWS Lambda |
| Channels | AWS End User Messaging Social (WhatsApp), AWS End User Messaging (SMS, RCS), Amazon SES |
| Data | Amazon DocumentDB (state, outbox, audit log), Amazon S3 (receipts) |
| Security and operations | AWS IAM, AWS Secrets Manager, Amazon CloudWatch |
The frontend is React and TypeScript, and the backend is Python. We kept a written log of design decisions as we went.
Data and testing
The system runs on synthetic data: fictional Medicare Advantage members, benefit balances, appointment slots and claims. That let us exercise benefit scoring, identity verification, claims, booking and every message flow without touching a real member record or any protected health information.
The deterministic core has automated tests for policy rules, intent parsing, templates, channels and the full scan-to-send flow. The agent can run in two modes: live on Bedrock, or a deterministic mode that makes tests repeatable. We verified Bedrock, SES email, WhatsApp delivery and the SNS inbound path live on AWS.
Challenges we faced
- Keeping model output structured. Nova Lite sometimes answered in prose instead of JSON. A worked example in the prompt and a one-step repair follow-up fixed most cases, and the deterministic fallback covers the rest.
- Channel rules the model didn't know. WhatsApp only allows free-form messages within 24 hours of the member writing. The planner sometimes chose an appointment offer for a WhatsApp-first member. We tightened the prompt and added a guard in code that corrects the choice, so getting it right doesn't depend on prompt wording.
- Conversation discipline. Early versions answered a simple "hi" with clinical detail and kept replying. The conversation agent now sends one reply per turn and handles greetings and slot requests explicitly.
- Silent delivery failures. Meta rejected some sends while our WhatsApp display name was awaiting approval (error 131037), and our first version dropped those events. The inbound handler now records failure statuses with their error codes.
- Inbound messaging. Receiving replies took an SNS subscription, signature verification on every notification, and a threaded webhook listener after a single-threaded one stalled.
- No duplicate actions. Retries and scheduled sweeps must never message a member twice or book a slot twice. Conditional writes, an outbox and the audit log keep each action exactly once and traceable.
Accomplishments that we're proud of
- A live agent on Amazon Bedrock that cannot cause harm. Nova Lite makes real decisions, but every one passes through deterministic policy, an approved template and a content linter before anything reaches a member. A bad model answer costs at most a missed nudge.
- Real conversations on real channels. A member receives a WhatsApp reminder, asks "what slots are available?", picks a time, and gets a confirmation on WhatsApp and by email. Every step runs through live AWS services: Bedrock, End User Messaging Social, SNS and SES.
- Decisions you can audit. For every member, the admin console shows what triggered the decision, which tools the agent called and how long each took, which model answered, the agent's reasoning, and what the plain rules would have done instead.
- An agent that knows when not to act. When a member has ignored three nudges in a row, the agent chooses to wait rather than send a fourth, and it says why.
- Privacy by design. Messages carry only a pointer or a reference number. Benefit details sit behind identity verification, and the whole system runs on synthetic data with no real member records.
What we learned
- Keep the model's job small and checkable. The agent is most reliable when it chooses among options we have already approved.
- Show the baseline beside the decision. Recording that the rules would have sent a nudge while the agent chose to wait, and why, makes agent behaviour reviewable rather than opaque.
- Design for outcomes, not notifications. A reminder creates awareness. A completed claim or a booked visit is what delivers value.
What's next
- Complete carrier registration so SMS and RCS can send live; both are already built and tested.
- Add two-way email, which needs a verified domain and inbound mail routing.
- Integrate with authorized plan systems for real eligibility, balances and scheduling.
BenefitBack AI: making benefits easier to discover, access and use.
[^1]: Avidon Health, Medicare Dropped the Unused-Benefits Notice. The Problem Stayed. (September 2026). [^2]: The Commonwealth Fund, Could Notifications Help Medicare Advantage Beneficiaries Utilize Their Unused Benefits? (October 2025). [^3]: Humana, New Survey Offers Important Insights into How Medicare Advantage Beneficiaries View Supplemental Benefits (November 2025). [^4]: KFF, Medicare Advantage in 2026: Premiums, Out-of-Pocket Limits, Supplemental Benefits, and Prior Authorization (June 2026).
Built With
- amazon-api-gateway
- amazon-bedrock
- amazon-cloudwatch
- amazon-documentdb
- amazon-end-user-messaging
- amazon-nova
- amazon-ses
- amazon-sns
- amazon-sqs
- amazon-web-services
- aws-iam
- aws-lambda
- aws-secrets-manager
- boto3
- end-user-social-messaging
- pydantic
- pytest
- python
- react
- react-router
- typescript
- vite
- vitest
Log in or sign up for Devpost to join the conversation.