Skip to content

Part 3 of 7 · Timesheet validator series ~6 min read

How a timesheet gets compared

None of these five checks is interesting on its own. Any of them could be done by a careful person with the roster open, and that is precisely the point — they are exactly the checks nobody does, on every sheet, every week, because doing them properly is twenty minutes of tedium per person. What matters is which of them the submitter can settle and which of them require somebody with authority.

Key takeaways

  • Five checks: missing day, unmatched job, break rule, day length, overtime threshold.
  • Three are closable by the submitter. Two need a manager, because they cost money or carry risk.
  • Every check reads a rule from the sheet, so changing a threshold is an edit, not a deploy.
  • A day past the maximum is always a manager question, even when the person confirms it.
  • The comparer never edits. Its entire output is a state and a list of questions.

The five checks

The five checks a week of timesheet rows passes throughA vertical chain of six steps entered by a box labelled Rows for a week, from Part 2. Step one asks whether every rostered day has hours, comparing against the Roster; a gap exits to Ask the submitter, naming the day. Step two asks whether every day has a job or a stated reason, comparing against the Job log; an unmatched day exits to Ask which job with a short pick list. Step three asks whether the breaks satisfy the rule read from the Rules tab; a short break exits to Ask about the break, one day at a time. Step four asks whether each day is within the maximum length; a day over exits to Manager decides, because it is risk rather than memory. Step five asks whether overtime has been declared, comparing the week total against the threshold; undeclared overtime exits to Manager approves, because it costs money. Step six is Clean sheet, with nobody told. A note says the first three go to the person and the last two go to somebody with authority.AWS ACCOUNTRows for a weekfrom Part 2Every rostered day?gaps against the rosterRosterwho was on whenAsk the submittername the daygapJob on every day?or a stated reasonJob logwhat ran that dayAsk which jobshort pick listunmatchedBreaks satisfied?rule from the sheetRules tabbreaks, OT, max dayAsk about the breakone day at a timeshortDay within the max?Manager decidesrisk, not memoryoverOvertime declared?week total vs thresholdManager approvesit costs moneyundeclaredClean sheetnobody is toldThe first three go to the person. The last two go to somebody with authority.
Fig 1. The five checks in order, with the three that the submitter can close and the two that need authority. The split is not about difficulty; it is about who is allowed to decide.
  • App integration
  • Machine learning
  • Management
  • Analytics
  • People

Missing days

The roster says who was expected. A rostered day with no row is the single most common finding and the single easiest to fix, provided you ask on Friday. It is also the check most likely to be wrong, because people swap shifts and the roster is often a week behind reality. So it is phrased as a question and never as a correction: “Thursday is blank and the roster had you on — hours, or were you off?”

Unmatched jobs

Every day with hours should point at something: a job, a site, a cost code, or an explicit reason like training or holiday. This is the check that pays for the system in businesses that bill time, because an unmatched day is an hour that was worked and will never be invoiced. The pick list comes from the jobs that actually ran that day, which is usually three or four options rather than a search.

Breaks, and why they are a rule and not a policy

The break rule is somewhere between a legal obligation and a house rule depending on where you are, and it changes. It lives in the sheet as two numbers — after how many hours, and how long — and the check is a subtraction. Getting it wrong is not a rounding error; in several jurisdictions it is a fine, which is why it is worth checking on every day of every sheet rather than on the ones somebody happens to look at.

The two that need authority

The split between what the submitter can close and what a manager must see is the most consequential decision in this design, and it is not about trust.

The five findings split by who is allowed to close themA horizontal row of five boxes. Missing day: the submitter closes it. Unmatched job: the submitter closes it. Short break: the submitter closes it. Long day: a manager, because it is a risk question. Overtime: a manager, because it costs money. A note says three are memory questions and two are decisions with consequences attached.WHO CLOSES WHAT, AND WHYMissing daysubmitter closesUnmatched jobsubmitter closesShort breaksubmitter closesLong daymanager: riskOvertimemanager: costThree are memory questions. Two are decisions with consequences attached.
Fig 2. Which findings the submitter can settle and which need a manager. The first three are questions about what happened; the last two are decisions about risk and money.

A missing Thursday, an unmatched job and a short break are all questions about what happened. The person who was there knows, nobody else does, and their answer is the correct one. Routing those to a manager adds a day of delay and produces a worse answer, because the manager will just ask them.

A fourteen-hour day and an undeclared overtime week are different in kind. The person confirming “yes, I worked fourteen hours” does not settle anything — it confirms the number and raises the actual question, which is whether that should have happened and who is paying for it. Those two carry a cost or a liability, so they need somebody who can accept one.

What the comparer never does

  • It never edits an hour. Its entire output is a sheet state and a list of questions.
  • It never applies a rounding rule silently. If your rules tab rounds to the nearest quarter hour, the rounded and unrounded values are both stored and both visible.
  • It never compares one person’s week with another’s. A long week is a fact about a week, not evidence about a person.
  • It never treats a roster mismatch as an error. Shifts get swapped constantly and the roster is usually the thing that is out of date.

Next: what the question to the submitter looks like, and how a week gets closed.

All posts