Shift that never ended alert

An hourly sweep notifies the crew leader and owners when someone has been on the clock for twelve hours, once per shift, and never closes the shift itself.

What it is

A cron route finds every entry clocked in more than twelve hours ago with no clock-out and no prior alert, resolves names through the shared roster, and fires a routed notification. It stamps stale_notified_at so the alert fires once per shift.

Also called: forgot to clock out · 19 hour day · open shift alert · stale shift

See it
Shift that never ended alert
CustomerBuildingAmountStatus
Delia YoderBarndominium$14,690Paid
Ivy BrubakerHobby Shop$14,880Approved
Delia Yoder30×40 Garage$16,590Draft
Sutter KlineRiding Arena$8,420Open
Marlin HooverHobby Shop$15,070Approved
The notification card: 'Dave Miller never clocked out — Hilltop Barn · On the clock since Tue 6:12 AM', with an Open schedule CTA. Sample data — no customer information appears here.
How it works
  1. 1GET /api/cron/crew-open-shifts runs behind cron auth and scans open entries older than the 12-hour cutoff.
  2. 2Names come from one roster pass per org, keyed by org AND id so a project name can never reach another tenant's alert.
  3. 3notifyEvent fires the 'shift_never_closed' event through the org's own routing matrix, so who hears about it is a setting.
  4. 4stale_notified_at is stamped whether or not anyone was reachable, because the flag means 'we have handled this shift'.
Why we built it

A man drives home still on the clock. It happens in week one and most weeks after, and left alone it becomes a 19-hour day on a payroll report and an argument nobody can settle, because by the time anyone looks nobody remembers what time he actually left. After twelve hours the crew leader is notified, and an owner after him. It never guesses a knock-off time and closes the shift itself, since putting a number nobody chose onto someone's pay is worse than the gap, and it fires once per shift, because an alert that repeats every hour is an alert people mute.

The problem
  • Runaway shifts discovered at payroll instead of the same evening.
  • Alerts that name nobody and therefore cannot be acted on.
  • Automatic guesses writing invented hours onto someone's pay.
Sound familiar?
What you get
The correction happens while someone still remembers the day.
One alert per shift, so it stays worth reading.
A human sets the real time, stamped with their name.

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →