Skip to content
GTHome
All projects

Developer (Solo) · 2026

Open SourceAmazon Developer Hackathon 2026Source-available

Jirani

A privacy-first caregiving agent for older adults who live alone: it learns a daily rhythm from Ring sensors, never the camera, asks her first when a day breaks pattern, then a neighbour, then family with the evidence, and reports slow drift in plain words.

TypeScriptAWS LambdaDynamoDBAmazon BedrockAmazon NovaMCPAWS CDKNext.jsReact Native
Jirani preview
Jirani screenshot
Jirani screenshot
Jirani screenshot
Jirani screenshot
Jirani screenshot

Problem

Sixty-three million Americans are family caregivers, and Amazon's caregiving subscription, Alexa Together, ended in 2025. What's left is calling every day, which feels like checking up, or a camera, which feels like spying, and timer alerts can't tell a lie-in or a weekend away from an emergency.

Approach

Statistics decide and the LLM only explains. A pure TypeScript rhythm engine learns robust baselines per Ring signal and detects deviations and slow drift; remembered context ("I'm at my sister's this weekend") suppresses false alarms; an escalation ladder asks her first by voice and on her Fire TV, then the neighbour, then family with the evidence, and only with her prior consent offers a look at the front door.

Tech highlights

An MCP server (spec 2025-11-25, stateless Streamable HTTP) with 10 tools filtered per speaker; a Strands agent on Amazon Bedrock running Amazon Nova that reaches Jirani only through MCP; six Lambda functions behind Function URLs and EventBridge Scheduler, one DynamoDB table with Streams, SES and Secrets Manager, all in AWS CDK; HMAC-verified Ring webhook v1.1 parsing; a Next.js dashboard with a voice client on Vercel behind Clerk; a React Native check-in card running on the Vega Virtual Device; 113 automated tests in CI.

Results

Submitted to the Amazon Developer Hackathon with a 2:30 demo. On 40 simulated households the drift test caught a three-week rise in night-time trips in 31 and falsely flagged 0 steady routines, and 1,024 signed events in Ring's documented v1.1 payload were accepted on AWS with 0 rejected. The event simulator built for it, ring-routine-sim, is published on npm.

Challenges

The Ring Developer Playground has no sensors and records no events, so every event-driven feature needed realistic data; the first webhook parser followed an older payload shape and was rewritten against Ring's documented examples; and an every-minute evaluator could race a replay and leave a stale alert open, so alerts now close themselves when late events show activity.

Written about this build

More like this