Skip to content

Retail operations

Netra3 store monitoring

Turns the CCTV a store already has into live incident alerts and a daily footfall report.

Faster response to operational issues
40%Faster response to operational issues
Of alerts marked worth knowing about
91%Of alerts marked worth knowing about
Cameras live across eight stores
62Cameras live across eight stores
To bring a new store online
~20 minTo bring a new store online
A diagram of the system. The screens themselves are not public.

The problem

Nobody can watch a wall of CCTV feeds all day. Incidents were surfacing the next morning in the recording, when they surfaced at all, and head office had no view of what normal looked like across locations.

The approach

Zone-based video analytics running on the cameras already installed: footfall counts, incident detection, alert routing and a daily operations dashboard.

Working with the cameras that are already there

Hardware set the shape of this build. Stores have cameras already, they are rarely the ones you would choose, and replacing sixty of them across eight locations was never on the table. Everything had to run against the feeds as they are: a mix of 720p and 1080p, several streams still behind analogue encoders, framing chosen years ago for insurance rather than analytics, and lighting that shifts from opening through to close.

That ruled out anything needing a clean overhead view or consistent framing. It also ruled out shipping full-resolution video to a server for every camera, because the uplink at a typical store will not carry it. Inference runs on a small box in the back office at around 10 frames per second per stream, and only events leave the premises.

Why zones instead of frames

Analysis is zone-based rather than frame-based. During setup someone draws the areas that matter onto a still from each camera, the entrance, a couple of aisles, the billing counter, and names each one. The system then reasons about what happens inside those regions and reports at that level.

This is the difference between output a store manager uses and output they ignore. "Counter queue above four people for six minutes" is something a manager can act on. A stream of bounding boxes with confidence scores is not, however accurate it is. Zones also make the system portable: bringing a new store online is a setup task of about twenty minutes rather than a modelling exercise.

Alerting was the hard part

Most of the engineering effort went into alerting rather than detection. An alert nobody sees is worth nothing, and a channel that cries wolf gets muted inside a week, after which the system may as well not be running.

Three things did most of the work. Alerts are debounced, so a condition has to persist before anything fires. They route to whoever is on shift rather than into a shared inbox. And every one is acknowledgeable, which gave us the only honest quality measure we have: the share of alerts staff mark as worth knowing about, currently around 91%. Detection precision on its own told us very little by comparison.

What we would do differently

We under-invested in the setup tool. Drawing zones stayed an internal job for months, which put an engineer on a plane every time a store opened. It should have been something a regional manager could do from a tablet, and retrofitting that cost more than building it in would have.

We would also treat the daily report as a first-class part of the product rather than a byproduct of the pipeline. It turned out to be the thing head office actually reads, and for a long stretch it was the least designed surface we had.

Questions we get asked

Do we need to replace our existing CCTV cameras?
No. That constraint drove the whole design. The system runs on existing feeds across mixed resolutions and mounting positions, including analogue cameras behind an encoder. Framing quality affects how much a given camera can reliably report, not whether it works at all.
Does video leave the store?
No. Inference runs on a small on-premise edge box, and only the events go onward: a zone count, or an incident with a timestamp. That keeps footage on site and means store uplink bandwidth is not a limiting factor.
How long does it take to bring a new store online?
About twenty minutes of setup once the box is installed: point it at the streams, then draw and name the zones for each camera. No per-store model training is involved, which is the practical benefit of reasoning about zones rather than raw frames.
How do you stop staff from muting the alerts?
By treating alert quality as the product metric rather than detection accuracy. Alerts are debounced so a condition must persist, they route to the person on shift instead of a shared channel, and each one can be acknowledged or dismissed. Those dismissals are the feedback signal, and right now about 91% of alerts get marked worth knowing about.

Have a problem
worth solving?

Tell us what you're building. We'll help you work out what's actually possible, and say so if we're not the right people for it.