Inspiration

A family can wonder whether an older parent who lives alone is okay, but constant check-ins can feel intrusive and cameras inside the home cross a line. Porchlight uses the front door as a privacy-conscious signal: it watches only a Ring doorbell and speaks up when the pattern may matter.

What it does

Porchlight looks for a package left outside or taken, a repeat visitor, a missed usual outing, or activity at the door overnight. It uses recent events, the parent's routine, visitor history, and alerts already sent to decide whether the family needs to know. If so, it sends one calm, specific Telegram message with the doorbell image. A family dashboard shows the timeline, open concerns, the care agent's reasoning, and an evening summary. An MCP server lets an assistant answer questions such as “How's Mom today?”

Porchlight never sees inside the home, identifies people by face, unlocks a door, or calls emergency services.

How we built it

The backend connects to the Ring Developer Playground and Ring Partner API. Claude Haiku 4.5 on Amazon Bedrock turns changed video frames into structured observations. A Python/FastAPI service stores activity in SQLite and applies deterministic rules; only when a rule raises a concern does a Strands Agents care agent, using Claude Sonnet 4.6 on Bedrock, investigate context and decide what to tell the family. We built the dashboard with React, Vite, and TypeScript. The service runs on Amazon EC2 and uses an IAM instance role for Bedrock access, with no AWS keys stored on the server.

Challenges and what we learned

The Ring sandbox has no recordings or useful event history, its live sessions last only a few seconds, and Playground actions do not send webhooks. To demonstrate the whole system, we built a replay that seeds 14 days of routine and sends scripted Ring-format events through the same signed webhook handler as live events. Replay data is clearly labelled and kept separate from the live door, so a demo cannot create a false live alert. The live door starts without a learned routine until it has enough history.

We evaluated 30 replayed days with the real Bedrock care agent: all 21 situations intended to reach the family produced a message, while five types of normal day produced none. The quiet normal days were filtered by deterministic rules before the agent was called; this does not measure the agent's own restraint. These scripted results are an integration check, not a broad real-world accuracy benchmark.

Building Porchlight taught us to evaluate the whole path—from a Ring frame to a useful family message—and to show uncertainty and data source clearly. We also contributed a small Ring-frame-to-Bedrock example to Amazon's official Ring API sample: PR #48.

Built With

Share this project:

Updates

Submission history