Skip to content

Series · 7 parts Published July 10, 2026

Timesheet validator

A small system that reads each timesheet as it arrives, checks it against the roster, the job records and the rules that actually matter, and asks the person who filled it in about anything odd — immediately, while they still remember the week. Payroll opens on the 28th to a set of sheets that are already right. Seven posts on the same system — one diagram at a time — with a cost breakdown and an engineering reference at the end.

  1. 01

    A timesheet validator on AWS for a few dollars a month

    The whole system on one page — a reader, a comparer and an asker — and the one decision that makes it work: check on Friday, not on the 28th.

  2. 02

    How a timesheet arrives

    Three lanes: a form, a spreadsheet upload, and a photo of a paper sheet. All become one row per person per day, and anything the reader cannot read confidently is marked unreadable rather than guessed.

  3. 03

    How a timesheet gets compared

    Five checks: missing days, unmatched jobs, break rules, day length and the overtime threshold. Three can be closed by the submitter; two need somebody with authority, and the split is the whole design.

  4. 04

    How a timesheet question gets answered

    One message per sheet rather than one per finding, sent while the week is still fresh. One-tap answers for the common cases, and an escalation ladder that carries a week forward rather than expiring it.

  5. 05

    How a payroll week gets closed

    What a closed week leaves behind: an immutable record carrying the rules it was judged against, a regenerable period export, overrides stored with a name on them, and a five-number report.

  6. 06

    What the timesheet validator costs

    About $3 a month. One Bedrock read per sheet is the only line that grows; the queue, the table, the mail and the storage are rounding errors. Plus the three ways the bill could surprise you.

  7. 07

    Engineering reference: the timesheet validator architecture

    Same system, drawn purely for engineers. Service names, region, Lambda inventory, IAM scopes, the schemas and the exact model id.

What is a timesheet validator?
A small serverless system that checks each timesheet when it is submitted rather than at payroll time. It compares the hours claimed against the roster and the job records, applies the break and overtime rules you wrote down, and asks the person who submitted it about anything that does not line up. A person approves; the system only ever asks.
Does it change anybody’s hours?
Never on its own. The only way a number changes is that the person who submitted it changes it, or a manager overrides it and the override is recorded with their name on it. The system’s output is a question and a flag, not an edit.
What does it check against?
Three things: the roster, which says who was expected where; the job records, which say what work was actually logged; and a rules tab holding the break, overtime and maximum-day rules for your business. All three are things a small business already keeps.
What happens if somebody forgets a day?
It is caught the moment the sheet is submitted, which is usually Friday afternoon rather than the 28th. The person gets one message naming the day and what the roster expected, and a one-tap way to fill it or confirm they were off.
What does it cost to run?
A few dollars a month at small-business volume. Nothing is always-on. See part six.
All posts