Inspiration
A doorbell camera is very good at recording a parcel being taken and not much use at stopping it. By the time the owner opens the notification, the person and the parcel are gone, and all that's left is a clip. We wanted the camera to notice the moment that matters, someone with no reason to touch the parcel picking it up, and to act while they are still at the door.
What it does
DemaFur is a Ring companion that watches what happens to your parcel, not who is at the door.
- Reads the situation. Camera events (parcel delivered, person approached, parcel handled, picked up, person left, carried inside, doorbell) are weighed against context: is a pickup scheduled, did the person come out of the house, or did they arrive from the street?
- Acts in seconds. When a stranger handles the parcel and no pickup is expected, the risk turns suspicious and the porch lights and a spoken warning fire straight away. If they leave with it, it becomes a high-risk incident.
- Knows what normal looks like. A resident taking the parcel inside, or a pickup inside a window the owner scheduled, raises no alarm.
- Explains itself. Every risk level comes with plain-language reasons, a timeline and an AI-written incident report.
- Hands over evidence. One click on "Report parcel missing" prepares a ZIP with the timeline, a police report draft, a neighbourhood notice and a SHA-256 checksum of every file.
- Respects privacy. No face recognition, identity or demographic inference. Scores are heuristics, not verdicts, and the owner always makes the final call.
Try it
- Open https://dema-fur.vercel.app/dashboard and choose Try the demo without an account.
- Press Play demo footage. One of three recorded scenarios plays (a theft, a hand-over to the resident, a courier drop-off) and its events are sent to the backend as they happen on screen. Watch the risk level and the counters change.
- Open View report for the timeline, the incident report and the automatic responses.
How we built it
Ring integration (backend, Python/FastAPI).
- Ring-driven account linking with nonce verification, OAuth token exchange and refresh, and household identity check via
/v1/users/me. - A webhook endpoint that verifies Ring's HMAC
X-Signature, validates the v1.1 envelope and household, rejects stale events, deduplicates them and routes each device to the parcel it is watching. - A worker that downloads event recordings and samples frames for optional vision analysis.
- Because the Ring Developer Playground does not deliver webhooks and our team has no Ring device, we added a Ring sandbox: a synthetic doorbell whose events are signed with our real HMAC key and sent through the same handler, plus
ring_simulator.py, which posts signed events to the public webhook URL exactly as Ring would.
Risk engine. Deterministic, explainable rules (risk.py) combine removal, handling, lingering, who came from the door and scheduled pickup windows into a level and a list of reasons. Actions (owner alert, porch lights, spoken warning) are created, reactivated or stood down as the risk changes.
Edge detector (Python, Ultralytics YOLOE + ByteTrack, OpenCV). Runs beside the camera, tracks people and the parcel on every frame, turns them into doorstep events, sends them as signed webhooks and runs the deterrents the backend asks for. It serves a live annotated stream to the dashboard.
AI incident reports (Groq). Only event facts are sent (kinds, times, confidence, whether the parcel was carried); no images, camera IDs or identities. A rule-based summary is used if the model is unavailable, and reports are cached until the delivery changes.
Data and hosting. Firestore stores deliveries, events, actions and evidence. The API runs on Render; the Next.js 16 dashboard runs on Vercel with Firebase Authentication (Google or email, with password reset).
Challenges we ran into
- No Ring hardware, and no webhooks from the Playground. We could not see a single real event, so we built the signed sandbox and simulator to exercise the real handler end to end.
- Firestore latency and read costs. Each event took about 17 Firestore round trips one after another, and the dashboard took about 8 seconds to open. Parallel reads, batched writes, bulk queries and a cache that only rebuilds after a write brought it down to under a second, and kept polling inside the free read quota.
- Defining "suspicious" without identity. We wanted no false alarms for residents and couriers, so the rules rely on context (came out of the door, scheduled window, carried inside) rather than on who someone is.
- Working across three countries and time zones, with one shared repository and nightly hand-overs.
Accomplishments that we're proud of
- The system acts during the theft instead of only recording it.
- Every alert explains itself in plain language, and the owner stays in control.
- The whole pipeline, from a signed Ring webhook to an AI report and an evidence bundle, runs on free-tier infrastructure.
What we learned
- How Ring's partner model works: Ring-driven linking, signed webhooks and household scoping.
- That cost and latency on a document database come from round trips, not from the amount of data.
- That explainable rules plus an LLM narrative are easier to trust than a black-box score.
What's next for DemaFur
- Validate against a real Ring camera and recordings.
- Real porch lights, sirens and chime announcements if Ring opens owner-approved control endpoints.
- Per-user sign-in on every API call (Firebase ID tokens) and multiple households.
- Push and email alerts, and running the edge detector on a home hub.
Demo footage: Getty Images previews, used for illustration only. Ring events in the demo come from the signed webhook simulator described above; no physical Ring device was used.

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