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

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
- 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.
- 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.
- 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.
- 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
- Python
- FastAPI
- YOLOv8 + ByteTrack
- ONNX plate OCR
- DINOv2
- Postgres + pgvector + PostGIS
- FFmpeg / OpenCV
- Next.js
- Leaflet
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.
Services in this project
For your industry
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.
More work
- 01NoteTubeA lecture becomes a study system: chat, flashcards, quizzes, all grounded in the source.Live
- 02KraftrOne flat-lay photo becomes catalog-ready 4K on-model imagery.Live
- 03PullsyInstagram analytics that keep the numbers Instagram throws away.Live
- 04GymFastMembers, billing, classes, and workout plans for a gym, in one platform and three apps.Live
- 05SigmaCPMConstruction project management where AI reads the tender and shows its work.Early access
- 06Siona JewelsA jewellery manufacturer's catalogue that buyers find on Google and in ChatGPT, and that turns a design number into a lead.Live
- 07The Sharp InteriorsThe site, the project gallery, and the IT behind an interior design studio.Ongoing IT partner
- 08Options trading platformMicrosecond market-data handling for index options, with risk checks that never sleep.Confidential client