Skip to content

Part 4 of 7 · Timesheet validator series ~5 min read

How a timesheet question gets answered

A validator that sends five separate emails about one week has not saved anybody anything; it has moved the tedium from a payroll clerk to twenty-two people. So the asker batches, waits a few minutes for a sheet to settle, and sends one message with every question about that week in it. This post is about the shape of that message and about what happens when it is ignored.

Key takeaways

  • One message per sheet per week, never one per finding.
  • Sent a few minutes after submission, so it lands while the person is still at work.
  • Every finding has a one-tap answer, and the common answer is first.
  • Answering a question re-runs the checks, so a fix can reveal the next thing cleanly.
  • An unanswered week escalates to a manager and is carried forward, never silently dropped.

One message, all the questions

How a timesheet question reaches the person who can answer itThree boxes across the top outside the AWS account. The Submitter, who is usually still at work. The Manager, who receives only the cost and risk findings. And Payroll, which reads the state of each sheet rather than any email. Inside the account, three components. The Batcher, which waits a few minutes for a sheet to settle and then sends one message. The Question builder, which makes one card per finding with the most likely answer first. And the Escalator, which nudges, brings in a manager and carries an unanswered week forward. Arrows show the submitter answering with one tap, the manager receiving cost and risk items, and payroll reading a per-sheet state. A note says payroll never reads an email; it reads whether every sheet is clean.AWS ACCOUNTSubmitterstill at work, usuallyManagercost and risk onlyPayrollreads the state, not the mailBatcherwaits, then sendsone messageQuestion builderone card per finding,common answer firstEscalatornudge, manager,carry forwardone tap backcost and riskstate per sheetPayroll never reads an email. It reads whether every sheet is clean.
Fig 1. Who hears what. The submitter gets one batched message, the manager gets only the two findings that need authority, and payroll reads a state rather than a mailbox.
  • App integration
  • Management
  • Analytics
  • People

Why it waits

Somebody filling in a form will often submit, realise Wednesday is wrong, and resubmit ninety seconds later. Sending a question in between is how a system teaches people to ignore it. So the batcher holds a submitted sheet for a few minutes, and a resubmission inside that window replaces the draft and resets the timer. The message that eventually goes out is about the sheet as it finally stands.

What the message looks like

One card per finding, and nothing else

  • Thursday 9 July is blank. The roster had you on the Aldershot job. → I worked, here are the hours · I was off
  • Tuesday has no job. Three jobs ran that day. → J-4471 · J-4480 · J-4492 · Something else
  • Monday shows 9 hours with a 15-minute break. The rule is 30 after six. → The break was 30 · It really was 15
  • Nothing else in the message. No sheet total, no policy text, no link to a portal, and no sentence beginning “Please be advised”.

The order of the answers matters. “I worked, here are the hours” is first because it is right about eight times out of ten, and a person scanning on a phone taps the first plausible button. Putting “I was off” first would produce a measurable number of people accidentally giving away a day’s pay, which is the kind of bug that does not show up in testing.

Answering re-runs the checks

Filling in Thursday can create a new finding — the week now crosses the overtime threshold, or Thursday itself has no job. So an answer does not close a finding; it updates the rows and re-runs the comparer. If new findings appear, they are batched and sent as a second message, which is the one case where somebody gets two messages about one week and it is unavoidable.

When a week is never answered

What happens to a timesheet week nobody answersA vertical chain of five steps. First, Asked and waiting, from Friday afternoon. Second, on Monday morning, still open, exiting to a Nudge with the same questions written shorter. Third, on Wednesday, still open, which pulls the person's manager from the roster and exits to Manager is told, with the questions included. Fourth, at the payroll cut-off, still open, exiting to Pay what is known and carry the rest forward. Fifth, Week closed, with the state and history kept. A note says an unanswered day is never paid as zero; it is carried and stays visible.AWS ACCOUNTAsked, waitingFriday afternoonStill open?Monday morningNudgesame questions, shorteryesStill open?WednesdayTheir managerfrom the rosterManager is toldwith the questionsyesStill open?payroll cut-offPay what is knowncarry the rest forwardyesWeek closedstate and history keptAn unanswered day is never paid as zero. It is carried, and it stays visible.
Fig 2. The escalation ladder for an unanswered week. The important step is the last one: at payroll cut-off the known hours are paid and the open questions are carried, rather than the gaps being treated as zeros.
  • App integration
  • Machine learning
  • Management
  • People

That last step is the one worth arguing about, and the argument is short. A blank Thursday at payroll cut-off has two possible meanings: the person did not work, or the person did not answer an email. Paying zero assumes the first. Carrying it assumes nothing, pays the twenty-eight hours that are not in dispute, and leaves a visible item that somebody will resolve in the first week of the next month — by which point the roster, the job log and a colleague’s memory are all still available.

Next: what a closed week actually produces, and the one report worth reading.

All posts