Why Ring

The Ring camera at the entrance is the only sensor that sees every arrival. The Guide turns its motion events into an arrivals index, counts only, so the venue knows "quieter than usual" without a headcount, a clip or a face. That label drives the quiet-hour offer and the greeting a guest sees when they scan the sign. Without Ring the Guide would not know what is happening at the door.

The value in one line

Fewer repeated questions at the host stand, and quiet hours filled instead of wasted.

Inspiration

Imagine a bistro owner who cannot tell a slow Tuesday from a normal one. Every guest who walks in asks the same four questions: what's good, where's the restroom, what's the Wi-Fi, how long is the wait. Her Ring camera already watches the door. We asked what would happen if the door itself could answer.

What it does

For the guest (the Guide). A QR sign at the door opens a phone page carrying the venue's name. Five tabs:

  • Home: ask the Guide anything, plus four big actions.
  • Order: a link to the venue's menu on CueSave, the partner ordering app.
  • Book: a table by seating tier, an upgrade to the patio or a private room, the price difference shown.
  • Map: a floor plan the owner enters once, with a sketched path from the entrance to your table and written directions beside it. The path is a simple sketch for now; it does not yet route around walls. Servers tap the area they are working, so you can see where to find one. Camera view: point the phone and a compass arrow swings toward your table from the entrance or the last spot you confirmed (indoor compasses drift, so the written directions stay on screen), with tap-able markers for your server's area, the restrooms, the bar and the exits. The camera feed never leaves the phone and the screen says so.
  • Help: Wi-Fi, phone, exits, delete my session.

Returning guests are greeted by name and visit count. That memory lives only in their own browser.

For the venue. Motion events a person caused become an arrivals index: counts only, deduped, opening hours only. The dashboard shows them relative to the venue's own normal for that hour, "quieter than usual" instead of a number. A quiet hour is one tap from an offer, listed on the Guide and queued for the partner feed. Staff tap the area they are working on their own page. "Call a server" reaches them, and "Done" tells the guest their server is on the way.

For a partner app. One endpoint, GET /api/venues/:id/busyness, returns the label and ratio only. CueSave, the partner ordering app, is the first reader; the Guide works without it.

How we built it

Node 22, Express 5 and node:sqlite, no build step. Every page is server-rendered HTML with one small stylesheet and one small script. Ring events come in through one webhook route (verified with HMAC-SHA256 when the signing key is set; the public demo runs in unsigned demo mode). One dispatcher gives each event to the module that owns the camera. Server-Sent Events, a one-way push from the server, update open pages in about 300 ms.

Amazon Bedrock (Converse API, Nova Lite) answers as the Guide, with the venue's notes and the guest's booking as facts. Every call has a rules fallback and reports which path answered, so the page never waits on a model.

The camera view is a compass pointer, not room tracking. Bearings come from the floor plan's heading and scale; the phone's orientation sensor turns the arrow; the marker positions are computed on the phone. No frame is sent anywhere.

Playwright records the demo video and runs an axe-core WCAG 2.1 AA audit on 22 page states at phone width, in light and dark schemes. A budget test fails the build if the guest page grows past 30 KB or the page-load script past 8 KB.

How it was tested against Ring

With a Ring Playground token the app listed the Playground device and read its event history over the real API (npm run ring:check). The Playground's simulated events do not reach a partner webhook, so the demo buttons inject the same motion_detected payloads through the same signing and dispatch code.

On 2026-10-21 the Guide's server also started a real Ring live view over WHEP on that Playground device (/v1/devices/{id}/media/streaming/whep/sessions): 1280x720 video, connected in about 1.1 s, with the token kept on the server and never sent to the page. That recording closes the video. Live mode on a Playground token also polls the device's event history, so a real doorbell press reaches the same dispatcher as a webhook.

Challenges

Ring has no speaker or two-way-talk API for partners, so the Guide lives on the guest's phone. The webhook body was documented late in the window, so the normaliser accepts the v1.1 payload and the earlier variants. Motion events are an index, not a headcount, so busyness is always relative to the venue's own history and the copy never claims a number. The full list is in docs/FRICTION-LOG-RING.md.

Accomplishments

A guest page of 13.4 KB that paints with one 8 KB script. A floor plan that sketches the path and writes the directions. A camera view that points by compass with no tracking and no upload, in a second 7.8 KB script that loads only after a tap. Servers findable without tracking anyone (they tap their zone). Zero serious or critical axe findings across 22 page states. 82 unit tests and 19 browser tests (the three demo flows, accessibility and feature checks), green locally and against the live site. Failure paths are tested too: Bedrock erroring or hanging falls back to the rules answer within one timeout, bad input gets a clear 400, and the visitor's entry code still arrives when live updates are blocked.

What we learned

Counts beat images. A written direction beats a map, and from a known spot an arrow beats a dot on a map. "Quieter than usual" beats "17 people."

What's next

  • Real indoor routes: the owner drags rooms and doorways onto a photo of the venue's fire-exit plan, routes follow that graph, and a printed QR code in each room tells the Guide exactly where the guest is standing. No walk-through scan and no camera mapping needed. Ship the Guide inside CueSave, the partner app, with a geofence push as the second channel. A spoken Guide through Amazon Polly. Pilots with five Fort Worth restaurants, a museum, two events and a block party.

Built during the window

Every commit is from the hackathon window. The first commit is dated Sep 27, 2026 (git log --reverse); the submission period opened Aug 31, 2026. Nothing in the repo predates it.

Built With

Share this project:

Updates

Submission history