Treadstone Associates
Case File · Payroll & Tax Compliance

A timesheet rewrite recovers billable hours

Anonymised, illustrative composite. A field crew’s free-text timesheets were quietly writing off real, billable work as overhead — not because the hours were fake, but because nothing on the timesheet forced anyone to say which job they belonged to.

Treadstone Associates · Updated 2026

At a glance

  • • 14-person field crew, quarterly labour base of 7,280 scheduled hours (14 × 13 weeks × 40 hours).
  • • Old timesheet format allowed free-text task descriptions with no required job code or billable flag.
  • • Prior quarter: 612 hours (8.4% of the base) landed in an undifferentiated “overhead” bucket by default.
  • • Rewritten timesheet requires a job/cost code and a billable/non-billable flag before an entry can be submitted.
  • • Next quarter: the ambiguous bucket fell to 96 hours (1.3%) — 516 hours recovered as billable, worth $43,860 at the crew’s $85/hour billed rate.

The situation

A 14-person field crew logged time on paper and free-text digital timesheets: a date, hours, and a task description in whatever words the technician chose — “site work,” “misc,” “cleanup.” Nothing on the form required a job number or a billable designation, and the office had no reliable way to allocate an ambiguous entry to a specific project after the fact.

The problem

An audit of one full quarter — 13 weeks — measured against a scheduled labour base of 14 people × 13 weeks × 40 hours, or 7,280 hours, found 612 hours logged with descriptions too vague to tie to any specific job. The default in the firm’s accounting process was to write those hours off to overhead rather than chase down which project they actually belonged to — not because the underlying work was non-billable, but because nobody had captured enough information at the point of entry to bill it correctly.

Chasing down a vague entry after the fact was rarely worth the effort: by the time the office noticed “site work” with no job number attached, the technician who wrote it often could not remember which of two or three active projects that particular Tuesday belonged to either, especially on weeks the crew split across sites. Writing it off to overhead was the path of least resistance, every time, for every ambiguous entry.

The numbers

612 of 7,280 hours, or 8.4% of the quarter’s total labour, fell into that ambiguous bucket. Against the crew’s own project history, the office judged that a meaningful share of that time was almost certainly billable work that had simply been logged too vaguely to allocate — not shop time, training, or genuinely unbillable travel, which would also show up in the bucket but for legitimate reasons.

The rule that decided it

The firm rebuilt its timesheet around the same structure Procore’s own Timecard tool already uses: entries let a user “enter current-week timecard data…specifying billable hours on projects,” with reports that filter “by date, employee, project, and billable/non-billable status.” The firm applied the same discipline to its own entries — every line now requires a job or cost code and a billable/non-billable flag before it can be submitted at all, closing off the option to log an hour without committing to where it belongs. The firm’s existing time records were already subject to Ontario’s ESA daily and weekly hours-of-work rules, so the rebuilt timesheet was designed to satisfy both purposes from the same entry — job costing and statutory hours records — instead of running two separate systems that each needed their own accuracy check.

The outcome

The following quarter, against the same 7,280-hour base, the ambiguous bucket fell to 96 hours, or 1.3% — the residual now made up of genuinely non-billable time (shop work, training, non-chargeable drive time) rather than billable work miscaptured as overhead. The difference, 612 minus 96, is 516 hours that moved from unbilled overhead to properly coded, billable work. At the crew’s average billed rate of $85 an hour, 516 × $85 is $43,860 in labour that became billable in a single quarter which would not have been under the old format.

For the underlying timesheet-accuracy discipline, see getting timesheets accurate the first time, and for the payroll side of the same reconciliation work, see how the same firm’s payroll close changed shape.

What it would have cost otherwise

Left unfixed, the firm would have kept writing off roughly 8.4% of its scheduled field labour to overhead every quarter indefinitely — not because the work was not real, but because nothing forced anyone to record who it belonged to. Across four quarters, that pattern alone represents well over $150,000 in labour the crew performed and the firm was never billing for, invisible in the numbers because it never appeared as a rejected invoice or a client dispute — it simply never became an invoice line in the first place.

The tell

The tell is a cost bucket labelled “overhead” or “misc” that grows in rough proportion to how vague the underlying data collection is, rather than in proportion to genuinely unbillable activity. If a timesheet, an expense form, or an intake process lets someone submit an entry without committing to where it belongs, the default destination for anything ambiguous is very often overhead — and that default is a data-entry decision, not a fact about the work.

Takeaways

  • • A free-text timesheet with no required job code lets ambiguous hours default to overhead by omission, not by fact.
  • • Requiring a job code and a billable/non-billable flag before submission is a structural fix, not a monitoring fix — it closes off the ambiguous option instead of catching it after the fact.
  • • The recovered $43,860 came entirely from hours that were already being worked; nothing about the crew’s output changed, only how completely it was captured.
  • • Audit what percentage of scheduled hours default to an undifferentiated bucket before assuming that bucket reflects real, unavoidable overhead.

See where AI pays off first in your business.

A 30-minute call is enough to tell you whether AI pays for itself here.