Three hundred alerts a shift and nobody opens them
In short
A queue of 300 alerts a shift that nobody opens is almost never a supervisor problem. It is a system emitting 1 alert per detection instead of 1 incident per event: a person standing in a zone for 40 seconds is 1 thing that happened, and a detector running at 12 frames a second saw it 480 times. Fix aggregation, zone schedules and rule scope before anyone touches a confidence threshold.
Key takeaways
- Instrument 3 counts before changing anything: alerts raised, alerts opened, alerts closed with a stated disposition.
- A person in a zone for 40 seconds at 12 fps is 480 detections and 1 incident. Emitting per detection is the fault.
- Aggregate detections to a track, tracks to an incident, then hold a cooldown per track, zone and rule.
- Dwell time buys volume by spending latency, so it cannot be used on rules where the harm is instantaneous.
- Set the interruption budget for the recipient first, then choose thresholds to fit it, not the other way round.
A shift that raises 300 alerts and closes 6 of them does not have a discipline problem. It has an aggregation problem: the system is emitting 1 alert per detection instead of 1 incident per event, and no amount of briefing will train a supervisor out of that. The same detector, with the same accuracy, produces a workable queue once detections are collapsed into events, zones are armed only when the hazard exists, and rules are scoped to the areas that have the hazard.
Nothing else on this page matters until the counts exist. Most safety analytics deployments report alerts raised and nothing else, which is the one number that cannot tell you whether the system is working. Raised against opened against closed is the whole diagnosis, and it takes an afternoon to instrument.
Raised, opened, closed: the 3 counts that end the argument
Pull one week of the notification log and group it by rule, by camera and by shift. Then join it to whatever the console records about human action. If the console records no human action, that is the first defect, because without it every conversation about alert quality is 2 people trading impressions.
| Count | How to derive it | What a bad value tells you |
|---|---|---|
| Alerts raised, per rule and per camera | Group the notification log by rule and source over 1 shift | One rule holding half the volume is a rule fault, not a site fault |
| Alerts opened | Any human action: clip viewed, acknowledged, reassigned | Below 1 in 5, the queue was abandoned and the rest of the funnel says nothing |
| Alerts closed with a disposition | Closed as real, false, duplicate or out of scope | Dispositionless closures destroy the only ground truth you get for free |
| Median minutes from raise to open | Timestamp difference across opened alerts only | A rising median leads abandonment; it moves before the open rate does |
| Duplicate share | Alerts sharing a rule, an area and a 60-second window | Above a third, aggregation is the only change worth measuring |
Insist on the disposition field. It costs a supervisor 2 clicks and it is the only artefact that tells you later which cause was actually dominant on your site. A console that captures it, plus the rollup that reads it, is the sort of small system we build under internal tools and ops.
Five ways a shift gets to 300, in the order worth checking
These are ranked by volume removed per hour of engineering, not by how interesting they are. The last one is where most teams start, which is why the queue is still unworkable 3 months later.
| Cause | What it looks like in the log | The change | Effect on the count |
|---|---|---|---|
| One event per frame, per person | Bursts sharing a rule, an area and a few seconds | Aggregate detections to a track, tracks to an incident, with dwell and cooldown | A 40-second presence becomes 1 record instead of hundreds |
| Zones armed outside the hazard's hours | Timestamps cluster into cleaning, changeover and maintenance windows | An active schedule per zone and a named exception path for planned work | Removes a class of alerts that were never violations of anything |
| A rule applied where the hazard is not | One camera dominates a rule, and its alerts are correct but irrelevant | Scope the rule to the zones with the hazard, not to the site | Falls with the area removed, with no loss where it matters |
| Two cameras on one aisle, both alerting | Pairs of alerts seconds apart on adjacent overlapping views | Map cameras to areas and deduplicate at area level, keeping both clips | Roughly halves the count inside every overlapped area |
| Genuinely low precision | Opened alerts closed as false, with no duplicate or schedule pattern | Re-site the camera, retrain the class, or retire the rule | The most expensive fix, which is why it belongs after the other 4 |
Only the last row is a model problem, and even then the cause is usually physical. A rule firing on people who are wearing their hard hat is its own trace, worked through in tracing a false PPE violation. If the detector cannot see what it is being asked to judge, the decision moves back to placement, settled during the site survey that decides what the model can see, and to whether a learned detector was the right instrument at all rather than a geometric test, argued in deep learning versus rule-based machine vision.
One person, 40 seconds, 480 frames
The arithmetic is the argument. A detector running at 12 frames a second, watching someone stand inside a restricted zone for 40 seconds, produces 480 positive detections. Emit on each one and you have 480 alerts from a single thing that happened. Throttle to 1 a second and you have 40, which is still 40 notifications for 1 person who walked in and walked out. The unit of alerting has to be the incident, and the incident has to be constructed.
- Detect per frame, and stop there. Per-frame detections are evidence and belong in storage; they are not events and must never reach a person.
- Associate detections into a track. A track is 1 person across consecutive frames, with an identifier local to that camera. Everything downstream keys off the track.
- Open a candidate when a track satisfies a rule. Inside the zone polygon, no hard hat associated, forklift within a distance band: the rule tests the track, continuously.
- Apply a dwell threshold before a candidate becomes an incident. Three seconds of continuous satisfaction removes the transit case, where someone clips a corner of the polygon.
- Hold a cooldown keyed on track, area and rule. Re-entry inside it extends the open incident, so someone working at the boundary produces 1 record, not 20.
- Close on exit, and attach a clip with pre-roll and post-roll around the whole span rather than around 1 frame.
Deduplicating across cameras deserves one caution. Collapsing 2 alerts into 1 incident is right; discarding the second camera's clip is not. The angle you throw away is often the only one that shows what happened, and the cost of that decision only becomes visible during an investigation, which is the situation reconstructed in auditing camera coverage after an incident.
Zones armed while the hazard is switched off
A restricted zone around a press is a hazard while the press is energised. At 22:00, with the line down and the cleaning crew in, the polygon is still there and the rule is still running, and every mop produces a violation. This is the cheapest volume on the site to remove and the most commonly left in place, because arming logic is treated as configuration rather than as part of the rule.
- Give every zone an active schedule. Shift patterns rather than clock hours, on a calendar that knows about planned shutdowns.
- Interlock to machine state where a signal exists. If the controller can publish whether the press is energised, the zone should follow it rather than a timetable that drifts.
- Write down the exception path. Maintenance inside a live zone needs a documented way to disarm it, with a named approver and an automatic re-arm, or people stop reporting.
- Show armed state on the console. A disarmed zone that looks armed is worse than no zone, because it manufactures confidence in coverage that does not exist.
- Do not use scheduling to hide a rule you no longer believe in. If it is off more than it is on, retire it and say so.
Which rules deserve a phone, and which deserve a page in the morning
Severity is not a property of the detector, it is a property of what the recipient is expected to do. Sorting rules into 3 response classes is what makes the real-time queue small enough to be credible, and it costs nothing technically.
| Response class | Rules that belong here | Channel | Volume this can carry |
|---|---|---|---|
| Intervene now | Entry inside an energised guard boundary, intrusion after hours | Push to the supervisor on shift, with an acknowledgement window | Under 10 a shift, or the class stops being believed |
| Same shift | Repeat pedestrian entry into a forklift aisle | Console queue, read at the break and before handover | Tens, if each carries a clip and a suggested action |
| Trend only | Hard hat missing in a low-consequence walkway | Daily digest of area counts, no notification at all | Unbounded, because nobody is interrupted |
The digest does more work than it looks. Low-severity rules carry most of the volume and almost none of the urgency, and as a morning page they become a trend read in 90 seconds; what belongs on it is modelled in a week of automated safety reports. Who receives the top class and what they must do is a separate artefact, owned by the escalation table somebody has to own.
The interruption budget, and setting it before the thresholds
Work it from the recipient backwards. Opening an alert, watching a 20-second clip, deciding whether it is real and doing something about it takes 2 to 4 minutes honestly. Fifteen real-time alerts in an 8-hour shift is therefore up to an hour of a supervisor's shift spent on the queue, on top of the job they were already doing. That is the budget. Every threshold, dwell setting and zone schedule is then chosen to fit inside it.
An alerting system whose volume is decided by the detector rather than by the person receiving it will converge on being ignored, and it will do so quietly.
When the budget cannot be met with the rules currently live, the answer is to run fewer of them rather than to raise every confidence threshold until the numbers look tolerable. Thresholds trade a false alert for a missed one, silently, and the missed one is the expensive direction. Reducing scope until the queue is credible, then expanding, is the staging argued in starting with one zone and one hazard, and it applies just as well to a system already deployed as to a new one.
Prove each change before anyone is asked to trust it: run the modified rule silently for a week, count what it would have raised against the week before, and show both numbers to the supervisor who abandoned the queue. Sometimes the honest conclusion is a different instrument, since a forklift proximity rule producing constant alerts and no behaviour change may be the wrong sensor entirely, which is the choice in camera versus wearable tag for forklift proximity. All of it sits inside the wider safety, PPE and site monitoring programme we build for manufacturing and industrial vision.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
How many safety alerts per shift is too many?
Too many is any number above what the recipient actually opens, which for a supervisor with a job to do is usually under 10 real-time alerts a shift. The absolute count matters less than the open rate and the median time to open: 40 alerts all opened and dispositioned is a working system, while 300 with 6 opened is an abandoned one. Set the budget from the recipient's available minutes, then tune the rules to fit it.
Will raising the confidence threshold fix alert fatigue?
Rarely, because the volume is usually structural rather than statistical. If most of the queue is the same person alerted on repeatedly, or a zone armed while the hazard is switched off, a higher threshold removes some of every category including the true detections you needed. Fix aggregation, scheduling and rule scope first; the threshold is the last dial, and it trades a false alert for a missed one.
Should duplicate alerts from two cameras covering the same area be merged?
Yes, merge them into one incident at the area level, but keep both clips attached. The duplicate exists because 2 cameras saw 1 event, so the supervisor should see 1 record; the second angle is frequently the only one that shows what actually happened, and discarding it saves nothing while costing an investigation later. Deduplicate on rule, area and a short time window rather than on camera identity.
Is a daily digest good enough for PPE compliance?
For low-consequence areas, yes, and usually better than a notification. Nobody can intervene usefully 40 seconds after a missed hard hat in a walkway, so the value is the trend by area and shift, which a morning page carries. Keep notifications for rules where somebody must act immediately.
How long should the dwell threshold be before a zone entry becomes an incident?
Long enough to exclude transit and no longer, which for a walk-through zone is usually 2 to 5 seconds. Pick it empirically: replay a week of candidate events, count how many survive at each setting, and take the point where transit cases fall away and genuine occupancy does not. For rules guarding against instantaneous harm, dwell is not available as a tuning option at all.
- video analytics
- alerting
- safety
- operations
The work behind this page
Builds from our portfolio that this page draws on.
Open Vision PPE Monitoring
Boundary surveillance, PPE compliance monitoring, and intrusion detection via real-time video analytics. Runs fully on-premise — no cloud required.
Safety & ComplianceFactory OS
Production planning and task management for a tier-1 apparel manufacturer — replacing Excel with automated milestone planning, SOP gate enforcement, and real-time visibility.
ManufacturingRead next
- The incident nobody has footage of: auditing coverage after the factMissing footage is a finding, not a dead end. Five causes look identical in the moment and carry completely different remedies, and only one of them needs a new camera.diagnostic
- Wearing a hard hat and still flagged: tracing a false PPE violationOpen the evidence clip and ask whether the head is visible at all. That one question splits false PPE flags into three groups that need three unrelated fixes.diagnostic
- A PPE violation is a record with an owner, not a red box on a screenA red box on a monitor is not a violation. The record underneath it — zone, rule version, duration, clip, owner, state — is what a supervisor actions and an auditor reads.definition
- Drawing a restricted zone on a camera view: what the polygon meansThe polygon is the smallest part of a zone. The entry rule, the dwell condition and the assumption about where the floor is are what decide who gets alarmed on.definition
- Everything works until the cameras switch to infrared at duskThe collapse tracks the camera's day-night switch, not sunset. Once the infrared cut filter drops out, a colour-keyed vest class is scoring on a monochrome frame it has never seen.diagnostic
- What a camera may call a near miss, and what still needs a human reportCameras measure distance, speed, dwell and crossings. A near miss is a claim about what nearly happened — so camera events belong in the process as candidates, not as counts.definition
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation