Live demo · working prototype
Ask a video what happened.
Upload a short clip. FactoryLens reads it frame by frame, then answers your plain-language questions with the timestamps as proof. Click any timestamp to jump the video to the evidence.
Samples are Pexels stock footage (not customer or factory data). Each carries human-annotated expected-content labels the evals harness grades answers against.
- Private to this browser. Your clip is never uploaded to the server or shown to anyone else; uploads are remembered only on this device.
- Only ~10 downsized stills are sent for analysis - not the video.
- In production, raw video never leaves the plant - perception runs at the edge. (This browser demo is the exception, by necessity.)
Pick a clip from the bar above (or drop your own), then ask it anything.
The control an EU works-council review actually inspects: who asked what, of which footage, answered from where, at what measured faithfulness. Each entry’s SHA-256 covers the previous entry’s hash - edit one in devtools (localStorage) and the badge above flips to chain broken on reload.
No queries logged yet this browser - ask the footage something and the entry appears here, hashed onto the chain.
Query audit logP0.6 · running here Every question is appended to a SHA-256 hash-chained log and the chain is re-verified on load (src/prototypes/factorylens/lib/auditLog.ts).
Evals faithfulness gateP0.7 · running here Each answer is graded by the deterministic rubric; below-gate answers are flagged in the UI, and the score lands in the audit log.
Grounded-or-silentP0.3 · running here The model must cite [m:ss] frames or decline; silence is logged as a declined query, never dressed as an answer.
Worker anonymizationP0.5 · design-stage Design-stage. Nothing in this demo blurs faces; production runs blur at the edge before storage.
RBAC + SSOP0.6 · design-stage Design-stage. The demo has no roles; production scopes queries and playback by role.
Honest scope: this log lives in your browser’s localStorage and is clearable - a working demo of the tamper-evidence mechanism, not the deployment. Production writes the same chain server-side to write-once storage under RBAC, where “clear log” does not exist.
The manufacturing event ontology - in code, not copy
These typed definitions live in src/lib/factorylens/ontology.ts and are load-bearing twice: injected into the vision model’s system prompt (so it is held to the observable cue, with the false-positive guard), and used by the evals grader to score answers. The guard column is the domain knowledge - what must not count.
| Event | Domain · severity | Observable cue | Guard (must NOT count) |
|---|---|---|---|
| Hard-hat compliance | safetyhigh | A person in an active work area without a rigid-shell protective helmet. A hard-hat is a rigid shell with a brim, usually a solid bright colour. | A baseball cap, beanie, hood, or bare head styled like headwear is NOT a hard-hat - the single most common VLM confusion. If the shell/brim cannot be resolved, report 'unsure', never 'yes'. |
| Hi-vis compliance | safetymedium | A person in a vehicle/equipment area without a high-visibility garment (fluorescent yellow/orange vest or jacket, usually with reflective strips). | A plain bright-coloured shirt without reflective strips is a weak cue - report 'unsure' rather than counting it as hi-vis. |
| LOTO breach (lockout/tagout) | safetycritical | A person with body parts inside a machine's guarded envelope or service area while no lockout device (padlock/hasp/tag on the isolation point) is visible. | Standing NEAR a stopped machine is not a breach. Energization state usually cannot be read from a still frame - if no isolation point or lock is visible, say the frames cannot support a LOTO judgement rather than inventing one. |
| Forklift-pedestrian proximity | safetycritical | A powered industrial truck (forklift, reach truck) moving within roughly one vehicle-length of a person on foot in a shared aisle, with no physical separation. | A parked or unmanned forklift is NOT a proximity event. A hand pallet jack is not a powered truck. If no forklift is visible in any frame, the grounded answer is 'none' - not a guess. |
| Restricted-zone entry | safetyhigh | A person crossing visible floor markings, barriers, or gates into a marked exclusion or machine-guarded area. | Only count when the marking/barrier itself is visible in frame. Faded or ambiguous markings -> 'unsure'. Do not infer zones that are not visible. |
| Spill / walkway obstruction | safetymedium | Liquid, debris, or stored material blocking a pedestrian walkway or emergency route. | Normal work-in-progress material at a workstation is not an obstruction; the cue is material IN a walkway/aisle. |
| Micro-stoppage | opsmedium | A station that is inactive in some frames while adjacent stations remain active - visible as an operator waiting, a machine stopped mid-cycle, or material starved/blocked. Requires evidence across at least TWO frames. | A single still frame cannot prove a stoppage (it may be mid-cycle dwell). One-frame evidence -> 'unsure, needs temporal confirmation'. |
| Idle station / line | opsmedium | A workstation or machine unmanned or inactive across consecutive frames while the area is otherwise in an active shift. | An empty area with no evidence of an active shift is just an empty area - do not label it idle time. |
| Cycle complete | opsinfo | A unit of work visibly completed - a piece leaves a station, a weld/stitch/assembly step finishes, a package is sealed. | Motion alone is not a completed cycle; the cue is a unit visibly finishing or leaving the station. |
What’s real here, and what isn’t
A trust product should not oversell its own demo. Each row names the code path so the claim is checkable - tap to expand the proof.
Sample clips are Pexels stock footage, labelled as such, with human-annotated expected-content labels committed in code (src/lib/factorylens/evals.ts) so the grading is auditable.