Inspiration
Preparing for a medical appointment can involve many small but important follow-ups: organising outstanding tasks, preparing questions, checking insurance details, arranging transportation, and remembering medication-related items. These responsibilities can become difficult to coordinate when they are spread across conversations, notes, and reminders.
I built CarePilot to explore how an AI-assisted agent could turn an everyday care-coordination request into an understandable plan, organise follow-up tasks, and keep a human involved when an action needs review.
CarePilot uses fictional demonstration data, including a family caregiver workflow for Margaret Chen and an upcoming cardiology appointment. The project is a prototype exploring care coordination, not a clinical product.
What it does
CarePilot combines task management, agent orchestration, approval gates, persistent application state, and model-generated summaries in one web experience.
Its main features include:
Care overview: A central view of the fictional care recipient, upcoming appointment, outstanding tasks, recent activity, and pending approvals.
Agent workspace: Users can submit natural-language requests, such as preparing for an appointment, creating a task, listing outstanding items, generating a checklist, or summarising the current status.
Structured agent workflow: A deterministic intent parser classifies the request, a planner creates an ordered plan, and tools execute supported actions. The trace makes the request, plan, tool calls, results, and state changes visible.
Five agent tools: create_task, update_task_status, read_outstanding_tasks, generate_preparation_checklist, and produce_summary.
Human approval gates: Designated actions require review. Users can approve or reject pending actions rather than letting every proposed step proceed automatically.
Persistent state: Tasks and relevant application state are saved locally in the browser so the experience can continue after a refresh.
Amazon Bedrock integration: Amazon Nova Lite (amazon.nova-lite-v1:0) generates contextual care-coordination summaries through a server-side Edge Function.
Reliable fallback: If the external model call fails, the application retains a local fallback rather than presenting an unsuccessful model request as a successful one.
How I built it
I built CarePilot as a React, TypeScript, Vite, and Tailwind CSS application. Its agent pipeline separates intent classification, planning, tool execution, state management, and trace presentation.
For Amazon Bedrock, the browser sends the summary request to a Supabase Edge Function. The function reads AWS credentials from server-side environment secrets, signs the request using AWS Signature Version 4, calls Amazon Bedrock, validates the model output, and returns the generated summary to the application.
The browser does not receive the AWS secret access key. The application also distinguishes a real Bedrock summary from its local fallback so that the user can understand which source produced the result.
Challenges I faced
One of the most significant challenges was getting the server-side Amazon Bedrock integration to work reliably and securely.
The initial model configuration returned an error, so I migrated the integration to Amazon Nova Lite and updated the model-specific request and response formats. I also had to resolve a resource-permission mismatch in AWS IAM and correct the encoding used when signing the model identifier in the request.
I verified the resulting integration with a real request to the deployed Edge Function. The request returned HTTP 200, identified its source as amazon_bedrock, and produced non-empty generated summary text. The application retains its fallback for future failures.
Another important design challenge was making the agent understandable rather than presenting it as a black box. I used a visible execution trace, structured tools, approval gates, and explicit task states to show how a request turns into proposed actions.
What I learned
This project taught me how much work sits between a model API call and a dependable AI-powered product. Model selection, IAM resource permissions, request signing, response validation, state management, error handling, and honest user-facing status messages all matter.
I also learned that agentic experiences benefit from visible steps and clear boundaries. Showing a plan, tool results, and approval points gives users more context than displaying a generated answer alone.
Working with Amazon Bedrock gave me practical experience integrating a hosted foundation model into an application through a secure server-side boundary. I also improved my understanding of testing, fallback design, and the importance of distinguishing verified behaviour from assumptions.
Technology and verification
CarePilot's current automated verification report records 45 passing tests, a successful TypeScript typecheck, and a successful production build. A real Amazon Bedrock invocation has also been verified. Direct manual verification of every browser interaction remains a separate final check.
Important scope and safety note
CarePilot is a simulated Alexa+ web experience, not an official Alexa+ integration. It does not book medical appointments, order medication, contact healthcare providers, or execute other real-world care actions. All care-recipient information is fictional demonstration data. Amazon Bedrock is used for natural-language summary generation, not for making medical diagnoses or treatment decisions.
The project demonstrates how transparent orchestration, human approval, and AI-generated summaries can support a care-coordination workflow while keeping its limitations visible.
Built With
- agentic
- ai
- amazon-bedrock
- amazon-nova-lite
- javascript
- react
- supabase
- tailwind-css
- typescript
- vite

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