Payroll pre-run verification
When the person who checked payroll left, I replaced the check, not the checker, with a read-only rule engine.
Payroll used to get a human sanity-check before it ran: missed punches, abnormal hours, salary drift. That person resigned. Rather than rehire the seat, I rebuilt the check as software. Managers still run payroll themselves. The engine just tells them whether it is safe to.
How it works
A read-only rule engine (rules R1 through R14) scores each property's draft payroll and emails each manager a GREEN, YELLOW, or RED card before they run it. RED auto-escalates to me. It never writes to the payroll system and never moves money. Read-only by design.
- Checks missed punches, abnormal hours, salaried-manager pay drift, per-property threshold violations, and abnormal leave hours with California break-law logic
- Reads the live draft payroll via a company-scoped GraphQL page and ties gross to the penny
- Delivered as private per-manager email, so payroll figures never touch the public dashboard hub
Stack: a Python stdlib rule engine (20-plus offline tests), a Chrome-driven GraphQL scraper for the draft, scheduled on the mini for run-day, and HTML email out.
The engine is built and validated end-to-end on real data, and I am piloting on a couple of properties before all ten. It is the clearest version of the whole bet: a departed department seat, re-expressed as a gated, testable, always-on check that makes fewer errors than the manual pass it replaced.