Inspiration

Six in ten people living with dementia will wander at least once, and many do it repeatedly (Alzheimer's Association). It often happens at night, while the person caring for them is asleep. The first hour matters most, and families usually find out too late.

Millions of homes already have a Ring doorbell on the front door. We wanted that camera, plus a Ring contact sensor, to do one more job: notice when someone vulnerable walks out at 2 AM and doesn't come back.

What it does

Threshold is a Ring Appstore-style app for caregivers.

  1. Notices. The front-door contact sensor opens inside a risk window the caregiver sets (say 10 PM to 6 AM).
  2. Confirms. The porch camera reports motion with sub_type: human within 90 seconds. Vehicles, deliveries and animals are ignored, and so is a door opened with nobody going out.
  3. Waits. If the door reopens within the grace period, they're back inside and nobody is woken up.
  4. Alerts. If not, the caregiver gets an email (Amazon SNS), the dashboard turns red with a live view of the porch, and any phone with the dashboard open rings like a call: a loud two-tone alarm, vibration and a full-screen alert until someone taps "I'm on it".
  5. Describes. A frame from the camera goes to Amazon Bedrock (Nova Lite), which writes a search-ready description: "Person in a light robe, no coat, walking left toward the street." Clothing and direction only, never faces or identity.
  6. Follows up. If the door opens again after an alert, Threshold sends a "may be back inside" email, so nobody keeps searching for someone who is already home.
  7. Shares. One tap opens a search-party page for neighbors or police: photo, description, time and direction, behind an unguessable link.
  8. Spots the trend. A weekly chart of night exits. A rise is an early warning to raise with their doctor before a real emergency.

How we built it

  • Next.js + TypeScript app modeled on Ring's ring-api-helloworld sample.
  • Ring Partner API: device discovery, /capabilities (to tell cameras from contact sensors), /status, /configurations (to read e2e_encryption.enabled), Event History, Image Snapshots, and WHEP live video over WebRTC.
  • Ring webhooks v1.1: contact_sensor_faulted / contact_sensor_cleared (sensor support, early access) and motion_detected with sub_type, verified with HMAC-SHA256 over the raw body and deduplicated on request_id.
  • A pure state machine for the night-exit logic (risk window across midnight and time zones, corroboration window, return grace, no-camera mode), covered by unit tests.
  • Amazon Bedrock (Converse API, Nova Lite, vision) with a prompt that bans identity and biometric description.
  • Amazon SNS for caregiver alerts.
  • A simulator that sends real Ring-format, HMAC-signed webhooks into the same endpoint Ring uses, so the demo runs the production code path.

  • A phone as a stand-in porch camera for the demo (Ring hardware and webhooks aren't available to us in India): a /camera page streams the phone's back camera, motion triggers an Amazon Rekognition person check, and a confirmed person becomes the same door-open, door-close and motion_detected: human events a Ring sensor and camera send, through the same pipeline. A dashboard switch flips the porch camera between the phone and the real Ring camera.

We also tested against the Ring Developer Playground from India: real device discovery, status, configuration, event history and live WHEP video, all working.

Challenges we ran into

  • The Playground doesn't record live views. Snapshot and clip downloads always returned 416 MEDIA_NOT_FOUND, so the alert photo couldn't come from the snapshot API in testing. We added a live porch view to the alert and capture a frame from Ring's WHEP stream when no recording exists. It's a better feature anyway: the caregiver sees the porch now.
  • The sample vs. the docs. Ring's hello-world sample offers sendrecv audio in its WebRTC offer, but the WHEP docs say only recvonly tracks are supported. Our first stream connected but showed black until we followed the docs.
  • Black first frames. The first frames of a stream are often blank, so we check brightness before saving a frame searchers will rely on.
  • Encryption. With TAKE/E2EE rolling out, video requests can succeed but return unreadable content. Threshold reads e2e_encryption.enabled up front and drops to sensor-only alerts rather than failing.
  • New-account AWS limits. Our Bedrock account came with a Nova Lite quota of 0 tokens a day, which needed a support case.

Accomplishments that we're proud of

  • The whole Ring pipeline runs against Ring's real API: discovery, capabilities, live WebRTC video and frame capture.
  • Privacy by design: no face recognition, encrypted cameras respected, share links unguessable and unindexed.
  • A separate open-source MCP server, ring-partner-mcp, so any AI agent can read Ring devices and events.

What we learned

The Ring Partner API is well documented; the details that matter (null capabilities, the 303 pre-signed media redirect, time-gated history, encryption flags) are all in the docs if you read closely. Building for caregivers also meant designing for 2 AM: one clear alert, a calm status screen, and no alarm when they simply step out and come back.

What's next for Threshold

  • Publish to the Ring Appstore as a private-use app for a few caregiver families, then public.
  • Alexa+ announcements ("The front door opened, and they haven't come back") through ring-partner-mcp over Streamable HTTP.
  • Multiple doors, a "walk with me" mode for daytime, and a shared caregiver rota.

Built With

Share this project:

Updates

Submission history