One week, from first punch to payroll
The product has one loop and it runs every week. Everything else — teams, holidays, rates, kiosks — exists to make this loop take minutes instead of an afternoon.
People record time
A punch on a phone, a laptop or a shared kiosk. The server timestamps it; the device time is kept alongside, never in place of it.
The schedule decides
Each day is compared to the pattern that was in effect on that date. Present, late, left early, absent, on leave, holiday, holiday worked.
A manager clears the queue
Only the days that need a decision surface. Accept with a reason, or approve a correction the person proposed.
The week is signed and locked
Bulk-approve the clean weeks, lock the period, export the payroll CSV. Reopening later leaves a reason on the record.
What each person actually does
A member clocks in and forgets nothing
One button. Breaks are started and ended from the same panel, and the day so far is on screen while it happens — so a missing punch is noticed on the day, not at the end of the month.
A manager looks once, in the morning
The exception queue holds only their own team, and only the days that need a decision. A daily digest email says how many are waiting, so the queue is a two-minute habit rather than something to remember.
The week is submitted, approved and locked
People submit their own timesheet; an approver signs it. Bulk approval covers everyone clean and refuses anyone with an open exception, so pressing it is never a gamble. Locking closes the period against further edits.
| Day | In | Out | Worked | Note |
|---|---|---|---|---|
| Mon | 08:58 | 17:04 | 7:36 | 30 min break |
| Tue | 09:12 | 17:00 | 7:18 | Late — accepted |
| Wed | 08:55 | 17:02 | 7:37 | |
| Thu | — | — | 0:00 | Annual leave |
| Fri | 09:00 | 16:31 | 7:01 | Corrected 16:31 |
| Total | 29:32 | + 7:36 paid leave |
The rule that never bends: a locked week can be reopened, but only by an owner and only with a reason, and the reopening is recorded next to the original approval.