Payroll & Staffing

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

FieldWhy it needs care
Worker name or numberNames on timesheets rarely match payroll records exactly — a lookup Cleaner maps them.
Date or week endingDetermines which pay period the hours belong to, and is easy to misread across a period boundary.
Start, end and break timesExtracting the components rather than just the total lets the total be verified.
Total hoursWorth extracting as submitted and comparing to the computed total.
Overtime and premium hoursDifferent rates, so misclassification is a pay error rather than a rounding one.
Cost code or projectDrives 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