Schedulz: What Happens When You Replace a Scheduling Spreadsheet
Hundreds of shifts. One security operation. Zero room for gaps.
Multi-site security operations run on scheduling. If a post is uncovered at 3am — even briefly — you have a liability problem, a contract problem, and potentially a safety problem. The margin for error is zero.
Most operations manage this with a spreadsheet. A head scheduler builds it manually every week — cross-referencing officer certifications, site requirements, overtime limits, callout history, and union rules. It takes hours. It breaks constantly. And when someone calls out at midnight, the fix happens over text.

What Schedulz replaced
The client had a spreadsheet-based system that had grown into something only one person fully understood. Staff changes, site additions, and shift complexity had outgrown the original structure. Mistakes were happening. Payroll prep was taking a full day every two weeks.
Schedulz automated the weekly build. Officers are loaded with their certifications, site assignments, and availability. The system fills shifts, flags conflicts, and outputs a payroll-ready summary. Callouts get handled through a replacement flow that surfaces qualified, available officers for the open slot.
What "production" means in this context
This isn't a demo with synthetic data. It runs hundreds of real shifts across multiple sites. When it breaks — or when requirements change — the client calls. That accountability shapes everything about how the system is built.
Error handling is conservative. Export formats match what the payroll processor expects. The UI is designed for someone using it from a phone at 11pm, not a product manager in a demo.
The pattern
Schedulz is one instance of a pattern I keep finding: an industry-critical workflow that's running on tooling that was never designed for it. The spreadsheet was a workaround that became infrastructure.
The replacement doesn't need to be clever. It needs to be correct, auditable, and fast enough that no one misses the spreadsheet.