{"slug": "build-a-healthcare-appointment-agent-with-amazon-nova-2-sonic", "title": "Build a healthcare appointment agent with Amazon Nova 2 Sonic", "summary": "AWS announced a new healthcare appointment agent built with Amazon Nova 2 Sonic and Amazon Bedrock AgentCore, enabling voice-based patient authentication, appointment management, and pre-visit data collection. The agent uses speech-to-speech AI to retain vocal context and reduce no-show rates, with serverless deployment on AWS services.", "body_md": "[Artificial Intelligence](https://aws.amazon.com/blogs/machine-learning/)\n\n# Build a healthcare appointment agent with Amazon Nova 2 Sonic\n\nIf you run a clinic or hospital network, you already know the cost of missed appointments. The average no-show rate across US healthcare sits between 5–30 percent, [depending on specialty](https://www.healthcarefinancenews.com/news/missed-appointments-cost-providers-150-billion-annually-report-says). Each empty slot represents lost revenue, idle provider time, and delayed patient care. The standard fix, calling patients one by one to confirm or reschedule, doesn’t scale.\n\nIn this post, you will learn how to build a voice agent that handles appointment reminder conversations using [Amazon Nova 2 Sonic](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-conversational-speech.html) and [Amazon Bedrock AgentCore](https://aws.amazon.com/bedrock/agentcore/). The agent authenticates patients by voice, manages appointments (confirm, cancel, or reschedule), collects pre-visit health information, and escalates to human staff when needed. You handle routine calls at scale, which can help reduce no-show rates. This sample focuses on the agentic side of the problem: voice conversation and tool orchestration. A browser-based interface is included for testing. To connect the agent to actual phone lines for outbound dialing, you would integrate a telephony service such as [Amazon Connect Customer](https://aws.amazon.com/connect/).\n\nThis walkthrough takes you through the full build. You get a working voice agent on Amazon Bedrock that conducts natural appointment conversations using the speech-to-speech capabilities of Amazon Nova 2 Sonic, plus seven healthcare-specific tools built with the Strands Agents SDK for patient authentication, scheduling, and escalation. The serverless deployment runs on Amazon Bedrock AgentCore with [Amazon Cognito](https://aws.amazon.com/cognito/) authentication, [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) persistence, and [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns/) notifications. A browser-based React frontend streams bidirectional audio over authenticated WebSocket connections.\n\n## Solution overview\n\nTo automate appointment calls effectively, you need a conversational AI system that handles multiple steps in a single interaction: verifying identity, presenting appointment details, processing changes, and collecting health information.\n\nA traditional approach chains together separate services. A speech-to-text model transcribes the patient’s words, a text-based large language model (LLM) generates a response, and a text-to-speech model reads it back. Each handoff introduces latency and drops context. The transcription step discards vocal cues like tone, hesitation, and urgency. The LLM doesn’t hear *how* the patient said something, only *what* they said. In healthcare, where a patient’s anxiety or confusion should change how the agent responds, that loss matters.\n\nThis agent takes a different approach by combining two AWS services.\n\n### Amazon Nova 2 Sonic\n\nAmazon Nova 2 Sonic is a speech-to-speech model available on Amazon Bedrock that enables real-time conversational AI with bidirectional streaming. Instead of chaining separate transcription, reasoning, and synthesis services, Nova 2 Sonic processes speech natively in a single model—so vocal context like tone and pace isn’t lost to transcription. For more information about how Nova 2 Sonic processes speech and adapts to acoustic context, see the [Introducing Amazon Nova Sonic](https://aws.amazon.com/blogs/aws/introducing-amazon-nova-sonic-human-like-voice-conversations-for-generative-ai-applications/) blog post.\n\nFor this agent, Nova 2 Sonic provides several key capabilities. Its native speech-to-speech processing retains vocal nuance across turns, so the agent picks up on hesitation or concern without losing context. Tool-calling accuracy keeps multi-step healthcare workflows on track. The model knows when to authenticate, when to query schedules, and when to book. Low-latency bidirectional streaming keeps conversations responsive. The model is also designed to handle background noise common in home and clinical environments, and accented English. Finally, multilingual support lets the agent switch to the patient’s preferred language mid-conversation without configuration changes. See the [Amazon Nova 2 Sonic documentation](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-conversational-speech.html) for supported languages.\n\n### Amazon Bedrock AgentCore\n\nAmazon Bedrock AgentCore provides a serverless, framework-agnostic runtime for running AI agents at scale with enterprise security. You deploy your agent logic as a container, and AgentCore handles infrastructure, scaling, and AWS Identity and Access Management (IAM)-authenticated WebSocket endpoints. This implementation uses the Strands Agents SDK’s `BidiAgent`\n\nclass to manage bidirectional voice streaming with Nova 2 Sonic.\n\n## Architecture\n\nThe following diagram shows how the components connect. A React frontend communicates with Amazon Bedrock AgentCore through a SigV4-signed WebSocket connection. The Strands `BidiAgent`\n\n, powered by Nova 2 Sonic, handles real-time voice conversations and invokes healthcare tools that read from and write to DynamoDB tables and publish to Amazon SNS.\n\n*Figure 1: Architecture for the healthcare appointment agent*\n\nThe React frontend captures microphone audio in the browser and streams it to the agent over a WebSocket, a protocol that keeps a persistent two-way connection open between client and server. To secure that connection, the frontend authenticates users through Amazon Cognito (an identity service that issues temporary AWS credentials) and signs each request with SigV4, the standard AWS request-signing protocol.\n\nAmazon Bedrock AgentCore Runtime hosts the containerized Strands `BidiAgent`\n\n, managing infrastructure and scaling. Nova 2 Sonic receives audio input, reasons for the conversation, invokes tools when needed, and generates audio responses. Three DynamoDB tables store patient records, appointment details, and available time slots. Amazon SNS publishes escalation notifications when a patient asks to speak with a human.\n\n### Wiring it together\n\nThe Strands SDK handles the complexity of bidirectional voice streaming. The entire agent setup fits in a few lines:\n\nYou pass your tools list and system prompt to `BidiAgent`\n\n, point it at Nova 2 Sonic, and the SDK manages the streaming session. It receives audio, invokes tools when the model decides to, and sends audio responses back.\n\n## Healthcare tools\n\nThe voice agent uses seven tools to move through each call. Each tool is implemented as a Python function decorated with the Strands Agents SDK’s `@tool`\n\ndecorator. Nova 2 Sonic decides when to invoke each tool based on what the patient says. For example, when a patient asks to reschedule, Nova 2 Sonic calls `find_available_slots`\n\nto query DynamoDB, presents the options by voice, and then calls `book_appointment_slot`\n\nto finalize the change.\n\nThis tool-based design means you can swap or extend individual tools without rewriting the rest of the agent. To add a new capability (for example, collecting insurance information), you write one new `@tool`\n\nfunction and update the system prompt.\n\nTool |\nWhat it does |\nHow it works |\n`authenticate_patient` |\nVerifies identity using first name, last name, and last four digits of SSN. | Queries the DynamoDB Patients table through a\n|\n\n`confirm_appointment`\n\n`Scheduled`\n\nor `Rescheduled`\n\nto `Confirmed`\n\nin DynamoDB. Includes idempotent checks to prevent double-confirmation.`cancel_appointment`\n\n`Canceled`\n\nwith a timestamped note. Only operates on `Scheduled`\n\n, `Confirmed`\n\n, or `Rescheduled`\n\nappointments.`find_available_slots`\n\n`AvailableSlots`\n\ntable through the `ProviderDateIndex`\n\nGSI. Returns up to three options to keep the voice conversation concise.`book_appointment_slot`\n\n`record_health_update`\n\n`escalate_to_agent`\n\n`Escalated`\n\n, and publishes an Amazon SNS message with patient information and the escalation reason.## How the agent handles a call\n\nWhen the agent connects to a patient, the `BidiAgent`\n\nmanages the full conversation through four phases. The conversation flow is defined in the [agent’s system prompt](https://github.com/aws-samples/sample-Nova-Sonic-AgentCore-Healthcare-Call-Center/blob/main/backend/prompts/healthcare_system_prompt.txt), which you can customize for your use case. Here is an excerpt from the reschedule flow, which shows how the prompt drives multi-tool orchestration:\n\nNova 2 Sonic follows these instructions to decide when to invoke each tool. You can add new flows or modify existing ones by editing the prompt.\n\n**Authentication**– Nova 2 Sonic greets the patient and asks for their full name and the last four digits of their Social Security Number. Before verifying, the agent repeats back what it heard and asks the patient to confirm. This catches speech recognition errors on names or digits. The`authenticate_patient`\n\ntool queries DynamoDB to verify the identity. If verification fails after three attempts, the agent escalates to a human for security.**Appointment management**– After verification, Nova 2 Sonic presents the upcoming appointment details, including provider name, date, and time. The patient chooses to confirm, cancel, or reschedule. If they reschedule, the agent gathers preferences (morning or afternoon, preferred dates), queries available slots, presents up to three options, and books the new time.**Health information collection**– For confirmed or rescheduled appointments, the agent collects pre-visit health information. It asks about existing medical conditions, allergies, whether someone will accompany the patient, and any specific concerns for the visit. Each question is asked one at a time for natural conversation flow.**Escalation**– At any point, if the patient asks to speak with a human, the agent captures the reason, generates a six-digit reference number, and publishes an Amazon SNS notification so staff can call the patient back within 24 hours.\n\n## Deploying the agent\n\nThe complete source code is available in the [GitHub repository](https://github.com/aws-samples/sample-Nova-Sonic-AgentCore-Healthcare-Call-Center). Follow these steps to deploy the agent in your AWS account.\n\n### Prerequisites\n\nBefore you start, make sure you have the following:\n\n- An\n[AWS account](https://aws.amazon.com/free/)with access to[Amazon Bedrock](https://aws.amazon.com/bedrock)and the Nova 2 Sonic model in your target AWS Region. [AWS Cloud Development Kit (AWS CDK) v2](https://docs.aws.amazon.com/cdk/v2/guide/getting-started.html)installed and[bootstrapped](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)in your account.[Python 3.12](https://www.python.org/downloads/)or later.[Node.js 20](https://nodejs.org/en/download)or later.[Docker](https://docs.docker.com/get-docker/).\n\n### Step 1: Clone the repository\n\n### Step 2: Deploy the infrastructure\n\nThe AWS CDK stack provisions all the resources you need: Cognito user and identity pools, DynamoDB tables, an Amazon SNS topic, and the AgentCore Runtime with your containerized agent.\n\nWhen the deployment finishes, note the AWS CloudFormation outputs. You need the Cognito User Pool ID, Client ID, Identity Pool ID, and AgentCore Runtime ARN to configure the frontend.\n\n### Step 3: Create a test user\n\nCreate a Cognito user for testing. Replace `<UserPoolId>`\n\nwith the value from your CDK output:\n\n### Step 4: Configure and run the frontend\n\nCopy the environment template and fill in the values from your CDK output:\n\nOpen `http://localhost:5173`\n\nin your browser, sign in with your test user, choose a patient from the menu, and choose **Start Call** to begin a voice conversation.\n\n### Step 5: Seed demo data\n\nThe CDK stack seeds sample patient records automatically during deployment. If you need to re-seed or customize the data, run:\n\nFor testing, use any of these pre-configured patients:\n\nPatient name |\nSSN last 4 |\n| John Smith | 1234 |\n| Jane Doe | 5678 |\n| Michael Johnson | 9012 |\n\n## Sample conversation\n\nThe following transcript comes from a test deployment. It shows a complete rescheduling interaction where the agent authenticates the patient, finds a new time slot, books it, and collects pre-visit health details.\n\n*Figure 2: The Healthcare Voice Assistant interface during a live patient call*\n\nWatch the [full demo on YouTube](https://www.youtube.com/watch?v=KsTOk5iizoo).\n\n**Agent:** “Hello, this is Nova from Acme Healthcare. I’m calling about your upcoming appointment. For verification, may I have your full name and the last four digits of your Social Security Number?”\n\n**Patient:** “John Smith, 1234.”\n\n**Agent:** “Let me confirm. I heard John Smith, one, two, three, four. Is that correct?”\n\n**Patient:** “Yes, that’s right.”\n\n**Agent:** “Thank you for verifying. I’m calling about your Annual Checkup with Dr. Johnson scheduled for June 14th at 4:30 PM. Would you like to confirm this appointment?”\n\n**Patient:** “Actually, I need to reschedule.”\n\n**Agent:** “I’d be happy to help. Do you prefer morning or afternoon?”\n\n**Patient:** “Morning works better.”\n\n**Agent:** “I found these morning slots with Dr. Johnson: Tuesday July 1st at 9:00 AM or Thursday July 3rd at 10:30 AM. Which works for you?”\n\n**Patient:** “Tuesday at 9 AM.”\n\n**Agent:** “I’ve rescheduled your appointment. Before we finish, I’d like to gather some information to help Dr. Johnson prepare. Do you have any existing medical conditions we should know about?”\n\n**Patient:** “I have high blood pressure.”\n\n**Agent:** “Thank you. Do you have any allergies?”\n\n**Patient:** “I’m allergic to penicillin.”\n\n**Agent:** “Noted. Any specific concerns for this visit?”\n\n**Patient:** “I’ve been having some knee pain.”\n\n**Agent:** “I’ve documented everything for Dr. Johnson. Your appointment is confirmed for Tuesday July 1st at 9:00 AM. Have a great day!”\n\n### Multilingual support\n\nNova 2 Sonic detects and switches to the patient’s preferred language mid-conversation without any configuration changes on your part. You can find [Spanish and Hindi demos in the GitHub repository](https://github.com/aws-samples/sample-Nova-Sonic-AgentCore-Healthcare-Call-Center?tab=readme-ov-file#demo).\n\n## Important considerations\n\nThis sample is a reference implementation for demonstration purposes. Amazon Nova Sonic isn’t designed to provide opinions or advice, including medical, legal, or financial advice, and shouldn’t be used as a substitute for clinical judgment. Production deployments that handle protected health information (PHI) require a HIPAA compliance review, an executed Business Associate Addendum (BAA) with AWS, and security and clinical reviews appropriate to your use case.\n\n## Clean up\n\nTo avoid ongoing charges, delete the resources when you finish testing:\n\nThe `cdk destroy`\n\ncommand might not remove all Amazon CloudWatch log groups. Check the [CloudWatch console](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups) for any remaining log groups created by this deployment and delete them manually.\n\n## Conclusion\n\nIn this post, you learned how to build a voice agent that handles appointment reminder conversations using Nova 2 Sonic and Amazon Bedrock AgentCore. This architecture can also adapt to other industries that handle a high volume of customer calls, such as retail or hospitality, by replacing the healthcare tools with your domain’s logic.\n\n## Next steps\n\nClone the [repository](https://github.com/aws-samples/sample-Nova-Sonic-AgentCore-Healthcare-Call-Center) and deploy the agent in your AWS account using the steps in this post. The README covers customization, production readiness, and compliance considerations.", "url": "https://wpnews.pro/news/build-a-healthcare-appointment-agent-with-amazon-nova-2-sonic", "canonical_source": "https://aws.amazon.com/blogs/machine-learning/build-a-healthcare-appointment-agent-with-amazon-nova-2-sonic/", "published_at": "2026-06-24 18:20:27+00:00", "updated_at": "2026-06-24 18:39:37.439226+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-agents", "generative-ai", "ai-products", "ai-tools"], "entities": ["Amazon", "Amazon Nova 2 Sonic", "Amazon Bedrock", "Amazon Cognito", "Amazon DynamoDB", "Amazon SNS", "Amazon Connect", "Strands Agents SDK"], "alternates": {"html": "https://wpnews.pro/news/build-a-healthcare-appointment-agent-with-amazon-nova-2-sonic", "markdown": "https://wpnews.pro/news/build-a-healthcare-appointment-agent-with-amazon-nova-2-sonic.md", "text": "https://wpnews.pro/news/build-a-healthcare-appointment-agent-with-amazon-nova-2-sonic.txt", "jsonld": "https://wpnews.pro/news/build-a-healthcare-appointment-agent-with-amazon-nova-2-sonic.jsonld"}}