Timesheet and shift record capture
Tavnit reads submitted timesheets, including handwritten and photographed ones, and returns worker, date, hours and cost code as rows. Rules can check the totals before anything reaches payroll, so the errors that turn into pay corrections get caught while they are still cheap.
Why this is painful
Payroll runs to a deadline, and timesheets arrive in whatever form each site or agency uses — a spreadsheet print, a paper sheet photographed at the end of a shift, a PDF from a subcontractor's own system.
Someone re-keys them under time pressure, which is exactly the condition under which transcription errors happen. A wrong figure discovered after the run is a correction, an adjustment and an unhappy conversation.
What to extract
| Field | Why it needs care |
|---|---|
| Worker name or number | Names on timesheets rarely match payroll records exactly — a lookup Cleaner maps them. |
| Date or week ending | Determines which pay period the hours belong to, and is easy to misread across a period boundary. |
| Start, end and break times | Extracting the components rather than just the total lets the total be verified. |
| Total hours | Worth extracting as submitted and comparing to the computed total. |
| Overtime and premium hours | Different rates, so misclassification is a pay error rather than a rounding one. |
| Cost code or project | Drives job costing, and is the field most often left blank. |
What makes timesheets hard
The stated total and the real total disagree more than you would expect
People add up their own hours, and they get it wrong. Extracting start, end and break times as well as the stated total lets a formula Cleaner compute the hours and compare — the discrepancies that surface are usually genuine arithmetic mistakes rather than extraction errors.
Handwritten timesheets are the hard case, and common
Site and shift work still runs on paper photographed at the end of the day. Handwriting is extracted, but confidence varies, and this is a use case where routing uncertain captures to review beats discovering the problem in a payslip.
Names on timesheets are not names in payroll
'Dave S.', 'David Smith' and an employee number all refer to the same person, and payroll needs the number. A lookup Cleaner matches submitted names against your worker list during processing, so unmatched entries are flagged rather than guessed at.
How the pipeline handles it
- Email Integration — Sites and agencies email sheets at the end of the week; forwarding processes them on arrival.
- Splitters — A single PDF of a whole crew's sheets becomes one run per worker.
- Cleaners — Computes hours from times, matches names to payroll records, and flags totals that do not reconcile.
- Human in the Loop — Only the sheets that fail a check reach a person, which is what makes this viable on a payroll deadline.
Common questions
- Can it read handwritten timesheets?
- Yes. Handwriting is extracted alongside printed text, though confidence varies with legibility — which is why routing uncertain sheets to review is worth enabling here.
- Can it check the hours add up?
- Yes. Extract start, end and break times alongside the stated total, and a formula Cleaner computes the hours and flags any sheet where the two disagree.
- What if names do not match our payroll system?
- A lookup Cleaner matches submitted names against your worker list during processing. Entries it cannot match are flagged rather than guessed, so nothing reaches payroll unattributed.
Other document types
Try it on one document
Build a flow, send a real timesheet through it, and see what comes back. Free credits to start.
Start free