Point a camera at anything. Deterministic code does the perception — detect, track, measure — and LLMs do the meaning: judging significance, narrating in any persona, watching for conditions, acting on them, predicting what happens next, and answering questions about everything it has seen. The two layers check each other: every narrated claim is verified against measured geometry, and every prediction is scored against what actually happened.
One frame’s journey: the browser sends a motion-gated JPEG → the tracker updates IDs and trajectories → deterministic triggers decide when to look → the memory records everything measurable → and only then, behind cost gates, do LLMs decide what it means — narrate it, verify it, predict from it, or act on it. Results stream back over the same WebSocket as overlay geometry, conversation, and voice.
Every capability is generic — none of them knows what soccer is. Domain flavor (the “GOAAALLL!”, the hushed documentary awe) lives in persona packs: pure data entries bundling match keywords, narration style, cadence, detection profile, and voice.
What it isAfter the narrator commits a line, a verifier checks the claim against the tracker’s measured state — each in-scene object’s identity, position, and trajectory-derived motion — and badges it ✓ grounded or ⚠ unverified (with honest abstention when there is nothing trackable to check). The UI highlights the supporting objects and draws their measured paths on the video: language bound to pixels.
Why it mattersThe deterministic layer acts as a lie detector for the LLM — “a dog ran across” is flagged when no dog was ever tracked; “he sprinted away” is flagged when the person measured still.
What it isA persistent low-confidence detection makes the agent crop that region, upscale it, and look again with the vision model — resolving what the full-frame pass could not. Task-gated, rate-limited, once per object.
What it isWhile commentating, the agent periodically predicts the single most likely next event as a specific, checkable claim with a time horizon; when the horizon elapses it grades itself against what the narrator actually recorded. Running accuracy is always visible. Unscoreable windows don’t count.
What it isWatches inspect the live frame for the condition (a real detector, not keyword-matching), with per-condition cooldowns and scene-change gating. A conditional task carries a then: when the watch fires, the agent composes the actual line from the live frame and speaks it — and the utterance joins the timeline as part of the story.
What it isEVERY processed frame is recorded to rolling video segments, with every detection indexed into an object↔frame graph (SQLite locally; Blob + Cosmos in the cloud) — browsable in the World Explorer — a session browser and debug tool (pick any past recording, scrub with raw per-frame metadata, inspect any object's full history). Chat retrieves visually four ways: LOOK NOW (live frame), LOOK <moment> (a narrated moment’s sequence), LOOK BACK (recent snapshots), LOOK AT a time (the recording) — all carrying conversation context so pronouns resolve, all named with what is known NOW.
What it isStable objects get local appearance embeddings (no LLM). When a NEW track stabilizes, it is matched against the galleries of ABSENT objects and merged on a confident match — name, taught facts, and full history inherited, and the object↔frame graph unifies across the re-entry. Identity is a property of the object, not the track: names also apply retroactively to earlier frames (the person who was turned away). Conservative gates: candidates must be absent (never co-present) and require class agreement or overwhelming similarity.
Why it mattersNamed identities also persist to a cross-session store at a stricter threshold — "Dennis" survives a restart ("🌐 recognized from a previous session"). The same gallery matched across feeds is the multi-camera identity mechanism — in the cloud, a vector index shared by all cameras.
What it isIdle gates, per-capability cadences, adaptive NONE-backoff (strong events punch through), scene-change gating for watches, batching and per-object retry caps for identity, single-flight latest-wins TTS, and strict-JSON verdict roles on the cheapest model tier. Fully idle ≈ $0/hr; measured worst-case persona commentary ≈ $2–3/hr.
Overwatch is the video-intelligence limb of the LumicIQ ecosystem (see the
feature architecture map):
the same deterministic-perception → gated-LLM pattern that the platform applies to retail event
streams, applied to live camera feeds. In production, Overwatch’s deterministic perception layer ships
as the platform’s .NET edge service (LumicIQ.Edge,
ADR-0009): the same detect → track → re-ID runs at the edge and emits typed video events plus a
world-state aggregate onto the spine, while the expensive visual “meaning” becomes a cloud cascade
over archived segments — perception at the edge, meaning in the cloud. Its trigger/gate discipline mirrors
the platform’s InterestingnessDetector; its grounded verification is the same audit instinct as the
immutable LlmCallRecord; and its narrated
moments and watch events are natural RelayEvent producers for the store agent.