Skip to content
Varsha Kotegar
← All case files

Case file 01

VoxelQ

Real-time queue wait-time estimator. Solves lagging feedback by tracking camera streams using YOLOv8 & ByteTrack, computing stable estimates via Little's Law.

YOLOv8nByteTrackFastAPIWebSocketsPostgreSQLRedisReactTypeScriptDocker Compose
01

Problem

Queue and crowd density are usually reported after the fact, if at all — by the time a manager sees a wait-time report, the line has already moved. There was no low-cost way to get a live, trustworthy estimate from an ordinary camera feed.

02

Context

Built as a lead portfolio project (evolved from an earlier concept called NetraScan) to prove out an end-to-end perception-to-decision pipeline: detect, track, model, serve, visualize — not just a detector demo.

03

Data

Live and recorded video streams processed frame-by-frame; per-frame detections are converted into zone-level occupancy counts rather than raw bounding boxes, which is the actual unit the wait-time model needs.

04

Approach

YOLOv8n handles detection and ByteTrack handles identity across frames, feeding a zone-counting layer. Wait time is estimated with Little's Law (L = λW) rather than a black-box regression, with a custom ArrivalFilter debounce layer added to stop the raw arrival signal from producing noisy, flickering estimates.

05

Analysis

Built in ten defined phases — detection, zone counting, Little's-Law estimation, the debounce layer, a FastAPI + WebSocket serving layer, PostgreSQL/Redis persistence, and a React dashboard styled like an operations board rather than a chart gallery.

06

Key findings

Hardened performance to process real-time streams with sub-50ms inference latency on standard frames, maintaining low-variance wait estimations.

07

Decision

Chose an interpretable queueing-theory model (Little's Law) over a purely learned estimator, trading some accuracy ceiling for a number a non-technical operator can actually reason about and trust.

08

Result

Deployed with a containerized Docker Compose stack across Render/Vercel; actively being hardened against out-of-memory errors.

09

Limitations

Little's-Law estimates assume a roughly steady-state arrival process, which breaks down under sudden bursts; the current debounce layer smooths noise but doesn't yet model burst regimes explicitly.

10

What I learned

That the hardest part of a real-time system isn't the model — it's the layer that turns a noisy raw signal into a number stable enough for a human to act on.

Next case file

SentinelAI