-
-
Voice-first daily check-in: older adults reply to morning prompts in Hindi or English voice notes. No typing or new app install.
-
Omnichannel RCS: family anywhere can approve prescription refills with one tap, with automatic SMS fallback.
-
Live AWS execution: Bedrock invokes `request_refill_approval`, logging `simulated: false` in DynamoDB.
-
Starts on WhatsApp (voice note), approves on RCS (tap card), executes via SES (pharmacy order email), and confirms via WhatsApp voice.
-
CloudWatch monitoring and alerts: zero public HTTP endpoints, event-driven via SNS and EventBridge, with automated email alarms.
-
Serverless AWS CDS: End User Messaging, SES, Bedrock Nova 2 Lite, AgentCore Memory, Polly, Transcribe and DynamoDB.
Inspiration
As parents grow older, the distance feels harder. Mine live in India. They use WhatsApp because it's simple, but there's no way to know from here if they took their morning tablets, if they slept okay, or if today was harder than usual. We find out something is wrong when it's too late.
Then I looked at the bigger picture.
According to the India Ageing Report 2023, India's population aged 60 and above is projected to grow from approximately 149 million in 2022 to 347 million by 2050. Meanwhile, HelpAge India's 2024 research found that 59% of surveyed older adults had no access to digital devices, and only 20% felt comfortable using them. The challenge is not just providing more technology. It is making support accessible to people who may struggle with the technology itself.
That changed how I approached the problem. What if older adults did not need to learn another interface? What if the interface was simply a conversation?
I built AuraSenior around that idea: a voice-first eldercare companion that works through familiar messaging channels, understands what an older person says in Hindi or English, and helps connect everyday needs to the people who can act on them.
What it does
AuraSenior is a voice companion that lives inside WhatsApp. The elder gets a morning check-in and replies with a voice note. The agent understands the reply via Amazon Transcribe, responds with a warm Amazon Polly voice, and keeps family informed across RCS, SMS and email.
One conversation can start in WhatsApp and complete an action in another channel. The elder says "BP tablets ran out," and the agent sends a refill card to family over RCS with two tap buttons: Order refill or Remind me later. A tap sends the order straight to the pharmacy via Amazon SES. The elder never sees the coordination. She just talks, and things happen.
Safety-critical steps never go through the model. STOP, fall and help words, approval taps, the pharmacy order, the check-in chain, and the weekly summary are all plain deterministic code. A hardened wording rule runs on every outbound message to enforce it never says "you have" a condition, never names an illness, never changes a dose, never scores health. It only ever nudges: "worth a call today."
AuraSenior does not diagnose illnesses, prescribe medication or independently verify a person's health. It helps people communicate, keeps reported needs organized and makes appropriate follow-up easier.
How we built it
AuraSenior runs end to end on AWS Communication Developer Services. Two Lambda functions handle everything with no public HTTP endpoint. Every inbound event arrives via Amazon SNS or Amazon EventBridge, so the attack surface is zero.
The WhatsApp voice path goes: voice note in, Amazon Transcribe, Amazon Bedrock Converse with Nova 2 Lite and tool use, Amazon Polly voice reply out. AgentCore Memory sits in the middle so the agent remembers context across turns with automatic DynamoDB fallback.
The outbound path runs through a single guard on every send: it checks consent, the WhatsApp 24-hour messaging window, the no-diagnosis wording rule, and an hourly rate cap. If any check fails, the message is dropped with a log trace. No exceptions.
RCS and SMS are sent via AWS End User Messaging with automatic SMS fallback when RCS is not delivered. Family gets interactive cards with tap buttons routed back through the inbound Lambda. Email goes out via Amazon SES with delivery events coming back through Amazon SNS. A CloudWatch error alarm fires and emails on any failed send.
Channel choice is data driven. Each person has a language, a preferred channel and a fallback stored in DynamoDB. The same code runs an India-based elder with a US son or a US-only household without changes.
AWS SAM infrastructure as code provisions the entire stack. Every service is serverless, pay per use, on demand.
Challenges we ran into
Keeping the model out of safety decisions while still sounding warm. I pinned the agent to specific tool functions for logging, looking things up, and requesting refill approval. Every outbound message passes through the wording guard before it goes out. The guard catches patterns like "you have diabetes" or dose changes and blocks them before they leave the system. The prompt teaches the model to defer, not decide, which took rounds of testing to tune.
Making RCS work on deployed Lambda. The runtime boto3 did not ship SendRcsMessage yet, so I pinned the latest boto3 in requirements so the function carries it. The test device sent postback data nested deep in the message body JSON, which meant writing a custom parser to route a tap to the approval handler instead of the model.
One guard, no exceptions. Every send goes through the same outbound path: consent check, messaging window, wording rule, rate cap. I used to have separate paths for alerts and summaries, which meant two places to enforce the same rule. Consolidating to one guard made the logic simpler and safer.
Accomplishments that we're proud of
Voice changes everything. A typed message forces the elder to sit down, open an app, and type. A voice note is instant. She just talks. That shift made the whole interaction feel natural instead of like homework.
Omnichannel is not just convenience. Family does not check WhatsApp every hour, but they see an RCS card instantly and can tap to act without switching apps. The pharmacy needs a structured email with the order details, not a text message. Each channel solves a different problem, and routing between them automatically is what makes the system work.
WhatsApp and RCS running live on AWS. The elder sends a Hindi voice note, Amazon Transcribe understands it, the agent responds, and Amazon Polly speaks back. The family gets an RCS card with tap buttons, and a tap triggers the pharmacy order via Amazon SES. End to end, working on the deployed stack.
327 passing tests. Every safety rule, every channel path, every consent check and the full offline scenario are tested. The test suite runs completely offline with no AWS account needed, with channels and model responses mocked and clearly labeled [SIMULATED].
What we learned
Safety must be deterministic. Early on, the model would say helpful-sounding things that crossed medical lines. Moving all safety logic into plain code with a wording guard on every outbound message made the system trustworthy. The model can talk warmly, but it cannot diagnose, prescribe, or score health.
Transparency beats perfect. I built a demo-replay mode that shows the full flow locally with all AWS channels stubbed and clearly labelled [SIMULATED]. It can run without an AWS account and see exactly what the agent does. When I showed real device footage in the video, The system automatically records simulated=false in the DynamoDB trace for live interactions, making it easy to distinguish real executions from simulated ones.
The channel is the interface. Meeting people where they already are is not just easier for them, it is the only way to reach the hundreds of millions who will never install another app. HelpAge India's 2025 research found that 66% of surveyed older adults found digital technology confusing and 51% feared making mistakes. Voice-first design addresses that fear.
What's next for AuraSenior
Production SMS number. Right now SMS uses the AWS simulator origination number. A 10DLC number is the one remaining step for real SMS delivery.
Launch the RCS agent. RCS delivery is live to registered test devices. Launching with Google and carriers opens it to everyone.
Try AgentCore Runtime. I built the agent loop manually around Bedrock Converse and AgentCore Memory. The new AgentCore Runtime could handle the loop natively and simplify the code.
Field test with real families. The design is based on real family needs, but testing with a wider group will surface edge cases I have not seen yet. A small, consent-based usability study with older adults and family caregivers would measure task completion, ease of use, and user-reported confidence.
Built With
- amazon-bedrock-agentcore-memory
- amazon-cloudwatch
- amazon-dynamodb
- amazon-ses
- amazon-sns
- amazon-web-services
- amazonpolly
- amazontranscibe
- aws-sam
- awsendusermessagingsms
- awsendusermessagingsocial
- bedrock
- eventbridge
- lambda
- python

Log in or sign up for Devpost to join the conversation.