A shift is one officer's run of scans with no break longer than the "new shift" gap (default 5 hours). Night shifts that cross midnight stay together; a day shift and a night shift by the same officer are scored separately.
Rounds completed = scans ÷ checkpoints at the site. Expected rounds = shift hours × 60 ÷ required round interval, where shift hours is the larger of the scan span and the assumed minimum shift — so scanning for 2 hours of an 8-hour post is not rewarded.
Missed-round gap = a stretch between two scans longer than round interval × multiplier (default 60 × 1.5 = 90 minutes). Idle % is the share of the shift spent inside those gaps — the "sleeping" signal.
Coverage = distinct checkpoints scanned ÷ checkpoints at the site. Catches officers who only scan the codes near the guard shack.
Burst scanning = share of scans made in the same minute as another scan by the same officer. High burst plus long gaps usually means a cluster of codes scanned at once, then sitting down.
Risk score = 40 × (1 − round compliance) + 30 × idle % + 20 × (1 − coverage) + 10 if the burst pattern shows with at least one missed-round gap. RED ≥ 50, YELLOW ≥ 25.
Posts. One site can hold several posts (Warehouse 2, Rover, Warehouse 1 …), each with its own QR list on the Posts tab. An officer's post for a shift is the post whose codes they hit most. Scans at codes outside that post are counted separately. Shifts whose scans match no post fall back to the site-level numbers on the Sites tab.
Hourly-patrol posts. Required hits = codes × rounds per hour × productive hours, where productive hours = hours on post (at least the assumed minimum shift) minus the break minutes per 8 hours, scaled. Warehouse 2: 30 codes × 7 productive hours = 210 hits for 8 hours, 315 for 12. Compliance = hits at the post ÷ required. The allowed gap between scans is 60 ÷ rounds per hour × the multiplier.
Scheduled-round posts. Each round has a window (start–end) and a period from its window start to the next window start (the last round runs to shift end + 1 h). A round is ON TIME if a scan lands inside the window and at least 90% of the post's codes were scanned in the period; LATE if the codes were scanned but the round did not start inside the window; INCOMPLETE if fewer than 90% of codes were scanned; MISSED if there were no scans at all. Only complete rounds count toward compliance. On top: +15 risk points per MISSED round, +10 per INCOMPLETE, +5 per LATE, and +10 if the first scan of the night comes after round 1's window has closed. One shift per scheduled shift day, regardless of gaps.
The Cove at Marina Bay is pre-loaded as a scheduled-round post: 23 codes, shift 10:00 PM–6:30 AM with a 30-min unpaid lunch, three full patrols — round 1 starts 10:00–11:30 PM, round 2 2:00–4:00 AM, round 3 5:00–6:30 AM. AIVRES Fremont is pre-loaded as three hourly posts: Warehouse 2 (30 codes), Rover (15 codes) and Warehouse 1 (2 codes), 50 break minutes per 8 hours.
PARTIAL marks short shifts whose first or last scan sits within 20 minutes of the start or end of the export — those were cut off by the export window, not necessarily by the officer. Export whole shift days (e.g. 6 AM to 6 AM) to avoid it.
Checkpoint risk. The officer scorecard rates a whole shift; this tab rates one QR code at a time. For every code at a defined post, expected scans (the same per-round expectation used for compliance) and actual scans are added up across every shift that matched that post in the period on screen. A code with zero hits despite expected coverage is flagged NEVER SCANNED; one running at 50% or less is RED; 51–75% is YELLOW. This catches a specific spot nobody ever checks even when the officer's overall shift score looks fine.
Limits: an officer who never scanned at all does not appear — compare the scorecard with the schedule to catch no-shows. Timestamps are at one-minute resolution.