Skip to main content
Exemplar

A box carried past your door, and a box left on your steps, look the same to a motion alert.

Exemplar lets you teach your Ring camera the difference, by example.

A box left on the steps

  1. 0.6 s

  2. 15.6 s

  3. 19.4 s

A person in a dark jacket walks up the driveway to the steps, approaches the cardboard box lying there, and is about to reach it as the clip ends.

Package rule: firedscore +0.45

A box carried past

  1. 14.4 s

  2. 15.6 s

  3. 16.9 s

A person in a dark jacket carrying a cardboard box walks along the sidewalk past the front walkway and steps, then exits the view to the right.

Package rule: droppedscore −0.45

Two windows of a CC BY doorstep video, three whole frames of each, in time order. The verdicts are the deployed package rule’s recorded scores. The second window is one of the examples the rule was taught from.

What this site is

  • Runs in your browser: the rule checker, the solver and the calibration. It’s the same logic as Exemplar’s engine, and the rule checker matches the engine on over 46,000 test cases.
  • Replayed from real recordings: what Claude saw in each clip, the agent’s drafts, and the live events on the Ring Developer Playground.
  • Why it isn’t live: the full app signs in to your Ring account and calls Claude on Amazon Bedrock. A public page shouldn’t hold your Ring credentials or spend AI credits on every visit, so here you explore a real recorded session. The full live loop is in the video and the repository.

The rule it learned

Taught by example from real video (Ring Playground recordings and a real doorstep video) and printed in plain English.

Chosen by the user and deployed

There is a package k such that (k is on the steps or k is on the porch) continuously for at least 15 s.

exists k: Package: holds_for >= 15 (in_zone(k, steps) or in_zone(k, porch))

The agent’s sketch left one blank; the solver filled it in: d = 15 s.

exists k: Package: holds_for >= ?d (in_zone(k, steps) or in_zone(k, porch))

Printed from the rule by code; never paraphrased by a model.

It ran on the Ring Developer Playground

Five events were simulated. Two rules were deployed: the package rule and the vehicle rule.

The two package events fired only the package rule, the two vehicle events fired only the vehicle rule, and the bird event fired neither rule.

Each frame is shown as Ring exported it, watermark and all. A rule that fired on an event is shown as fired; “dropped” means it did not.

What backs it up

Each figure is a recorded result or a published number, and links to where it comes from.

Reading one event

$0.0014–$0.0015 per watched event in our live runs

Claude on Amazon Bedrock reads each event once.

See it on the Live page

Running a rule

about a tenth of a millisecond

Once the facts are read, every rule runs on them with no model call.

See it on the Live page

Checked against a second method

3,850 randomized cases

The solver’s encoding had to agree with a separate evaluator and a brute-force search, with zero mismatches. 7 of 7 deliberately planted solver bugs caught.

See a rule explain itself

How it works, in four steps

From a few examples to a rule that explains every alert.

  1. Perceive once

    Claude on Amazon Bedrock reads each clip once into facts.

  2. Sketch with blanks

    A Strands agent drafts rule sketches.

  3. Fill the blanks

    Z3 fills in the numbers.

  4. Bound false alarms

    Calibration bounds false alarms.