Skip to main content

Acasa Sentinel

Give it a number plate. It returns the vehicle's route across a CCTV network.

Type
Case study
Status
Hackathon build, 2026
Platforms
Operator console (web), API
architectureHackathon build, 2026
Acasa Sentinel high-level architecture: source, ingest, analytics, persistence, query, presentation

The architecture as submitted. Green values were measured on the running system.

The problem

Cities run thousands of cameras from different vendors. Tracing one vehicle means people scrubbing footage camera by camera. Plates are often unreadable on wide-area cameras, so plate reading alone is not enough.

A vendor-neutral video analytics system built for the Gujarat Police Hackathon Innovation Challenge 2026. It reads number plates, re-identifies vehicles by appearance across cameras, reconstructs routes, and raises watchlist alerts for an operator to confirm.

What we built

  1. 01

    Ingest from any camera

    RTSP and HLS behind one interface, a worker per camera under a supervisor, and timing taken from the video stream itself rather than from when frames happen to arrive.

  2. 02

    Detection, tracking, and plate reading

    YOLOv8 with ByteTrack for vehicles and people, then plate detection and OCR per track with a multi-frame vote, so each vehicle produces one sighting instead of hundreds.

  3. 03

    Appearance search with vectors

    Every sighting gets a 768-dimension DINOv2 embedding in Postgres with pgvector, so a vehicle can be found across cameras even when its plate is unreadable.

  4. 04

    Candidates, not verdicts

    Route reconstruction rejects physically implausible hops and says why. Watchlist hits go to a queue for an operator to confirm or reject, with evidence crops and an audit trail.

Engineering notes

  • All inference runs locally. No footage or number plate is sent to a third-party API.
  • OCR-aware fuzzy matching on plates, so a misread O for 0 still matches the watchlist.
  • One events table for every analytic: plates, crowd counts, zone intrusion. New alerts need no schema change.
  • Bounded stream timeouts, so a stalled camera returns in seconds instead of wedging a thread.
  • Device fallback from CUDA to Apple Silicon to CPU for the same pipeline.

Stack

By the numbers

Plates matched on proof clip
24 / 24
False alarms in 100,000 unrelated plates
0
Detector at 1080p, Apple Silicon
5.7 ms/frame
Sandbox cameras registered
30

Measured on the running system against the hackathon sandbox, not a production deployment.

Building something like this?

We built Acasa Sentinel. We can build yours.

Thirty minutes on how the work happens today. You leave with a written plan: scope, timeline, and a number.

Start a conversation

No pitch deck. You own the code from day one.

contact@acasalabs.com