Multi-hotel punch & hours report
One daily report catches every forgotten clock-out across every payroll company before it turns into overpaid hours.
Each hotel is its own payroll company, and a forgotten punch-out (a shift stamped at 23:59:59, or never closed) quietly becomes overpaid hours. With no HR staff, nobody was catching these before the pay-period correction, which is the expensive place to catch them.
How it works
A daily job pulls time records for every hotel from one payroll admin login, groups punches by person and day, and flags the anomalies: auto-capped clock-outs, shifts left open, and implausibly long shifts over 14 hours. It rolls paid hours up per hotel and publishes a single report.
- Covers every worker, not just housekeeping, so front desk and maintenance are in too
- Confirmed 10 of 11 hotels run time tracking, with the one exception skipped by config
- Caught real forgotten punches across multiple hotels on its very first live run
Stack: a Gusto GraphQL replay, Python (reusing the same validated punch-classification logic as the payroll checks), scheduled on the mini, published to the gated dashboard hub, with an emailed digest.
Live. The value is timing. A missed punch surfaces the same day, when the manager can still fix the record, instead of at the end of the period when it is a correction and a headache. The exception rate is the metric here, and this is a big part of what keeps it falling.