DeskFerry Logo

Stop spending Monday morning asking where the hours are

The sweep runs before you're in. Every contractor with a thin week or a missing day has a nudge waiting to be sent, every sheet still sitting unapproved has the manager named, and you get one list instead of thirty-four separate questions.

Week ending 7 Aug — hours logged

34 out, 9 incomplete

Hours logged by contractor and day for the current week
ContractorMonTueWedThuFriTotal

D. Okonkwo

Wexley Group

888832

M. Hallam

Wexley Group

7.58419.5

S. Bright

Calder Rail

8888840

J. Ferreira

Calder Rail

0

Ferreira has logged nothing all week. He might be on holiday. Nobody on the desk knows, and payroll closes at four.

Works with

  • Harvest
  • Clockify
  • Toggl
  • Google Sheets
  • Gmail
  • Slack

It reads whichever time system your contractors already log into, and works out what's missing by comparing against the week they were booked for. None of the time trackers publish a trigger, so this is a scheduled sweep on a morning you choose — which is the right shape anyway, because a timesheet isn't late until the cut-off.

The chore

How this goes right now

  1. Payroll closes at four on Monday. At half nine somebody on the desk opens the time system, exports the week, and starts reading down a list of thirty-four contractors looking for the ones who haven't filled it in. Some have logged nothing. Some have logged three days and stopped. One has put down sixty hours, which is either a genuinely brutal week or a typo, and you have to ask which.

  2. Then there's the second half of it, which is worse: the sheets that were submitted on time and are sitting in a manager's queue unapproved. The contractor did everything right. Payroll still can't run. So you're now chasing two different groups of people about two different problems, and the client-side one requires a politer email because that manager is also the person you want to place two more contractors with in September.

  3. It takes most of the morning, every Monday, forever. It doesn't get easier as the desk grows — it gets linearly worse, because it's one message per person and there is no version of it that scales. And the cost isn't really the morning. It's that a contractor who doesn't get paid on time starts answering other agencies' calls, and you will not find out that's why until they're gone.

The difference

Same cut-off, without the morning spent on it

The work doesn't disappear. It stops being yours to remember, and it stops being thirty-four separate messages you write by hand.

Chasing it by hand
Chased before you're in
Half a Monday, every Monday, reading down an export
One list on your screen, sorted by what blocks payroll first
Two chases running at once — contractors and client approvers
Contractor nudges and manager nudges drafted separately, worded differently
The polite client-side email written thirty times from scratch
Holiday and genuine short weeks separated from silence
Short weeks that are genuinely short, indistinguishable from missing ones
The sixty-hour week flagged as a query, not pushed through
Payroll cut-off arriving before the last approval does
You read, you send, and the morning is yours

Try it

Walk through it yourself

This is the actual shape of the workflow — the same trigger, the same steps, the same draft waiting for your say-so. Click through it.

Chase contractor timesheets

Scheduled checkHarvest

Monday sweep, 07:30

Runs on the morning and time you set, ahead of your payroll cut-off. Harvest, Clockify and Toggl publish no triggers, so this is a scheduled read rather than something that fires on submission — and a sweep is the right shape for a deadline anyway.

What it does

  1. Read the week's time entries against who was booked

    34 contractors expected. 25 complete, 6 partial, 3 with nothing logged. Total 1,180 hours against 1,272 booked.

    Harvest
  2. Cross-check against the placement sheet for holiday and end dates

    Ferreira is booked off all week — removed from the chase. Hallam's assignment ended Wednesday, so 19.5 hours is correct and complete, not short.

    Google Sheets
  3. Separate what's missing from what's waiting on someone else

    4 contractors genuinely haven't submitted. 7 submitted sheets are sitting unapproved — 5 with one manager at Wexley, 2 at Calder Rail.

    Harvest
  4. Draft the two chases, worded for who's receiving them

    4 short notes to contractors naming the days missing. 2 notes to client managers listing the names and hours awaiting sign-off, and nothing else.

    Gmail

Draft list — nothing has been sent

Week ending 7 Aug — what's blocking payroll, worst first

  • Wexley Group — 5 sheets unapproved

    With Alan Brightwell since Friday. 188 hours. Draft ready, addressed to him, names and hours only.

    Blocks payroll
  • D. Okonkwo — Friday missing

    32 of 40 hours logged. Mon–Thu complete. Nudge drafted naming Friday specifically.

    Not submitted
  • Calder Rail — 2 sheets unapproved

    With Priti Nandy since this morning. Not yet late — chase queued for tomorrow rather than today.

    Queued
  • T. Aduba — 61 hours logged

    Booked for 40. Could be genuine overtime on the Calder cutover. Flagged for you to ask; not submitted to payroll either way.

    Query
  • M. Hallam — 19.5 hours, correct

    Assignment ended Wednesday. Complete for the days worked. No chase sent.

    Resolved
  • J. Ferreira — nothing logged, on holiday

    Booked off the full week on the placement sheet. Removed from the chase.

    Resolved

Send the 4 contractor nudges and the 2 manager emails?

Every draft opens as a normal email. Most desks send the contractor ones as written and rewrite the client-side ones, because the tone you use with a manager you're mid-negotiation with is a judgement only you can make. You can also send some and hold others.

Once you approveSlack

Chased, and the desk can see where it stands

The nudges go out under your name from your mailbox. A short summary posts to your desk channel — outstanding count, hours at risk, who's blocking — so nobody has to ask you for a status update. Tomorrow's sweep picks up whatever hasn't moved and escalates it rather than sending the same message again.

Monday morning, already done.

It drafts the nudges and hands you the list. Nothing goes to a contractor or a client until you've read it.

Start free

How it works

What it's actually doing

Built around the time system your contractors already use, and the sheet you already keep. It never invents an hour, and it never submits anything to payroll.

  1. 1
    • HaHarvest
    • ClClockify
    • ToToggl
    • Google Sheets

    Reads the week against what was booked

    Expected days come from your placement record, not from a guess. That's the difference between spotting a missing day and pestering someone who worked four.

  2. 2
    • HaHarvest
    • ClClockify

    Separates missing from waiting

    A sheet nobody filled in and a sheet nobody approved are different problems with different recipients. They get chased differently because they are.

  3. 3
    • Google Sheets
    • ExExcel

    Knows who's off, and stays quiet

    Holiday, a finished assignment, a bank holiday, a contractor on a four-day week. Read from your sheet before anything is drafted, so you're not apologising for a chase that shouldn't have gone.

  4. 4
    • Gmail
    • OuOutlook
    • Slack

    Drafts, escalates, and reports

    Two tones for two audiences. Repeats get firmer rather than identical, and the desk channel gets the picture without anyone assembling it.

You stay in control

It chases. It never decides what anybody gets paid.

Hours are money, and a mistake here reaches a real person's bank account. So the boundary is drawn hard: it reads what was logged, works out what's missing, and drafts the ask. Everything downstream of that — approving, adjusting, submitting, paying — stays exactly where it is today.

  1. Step one

    It drafts

  2. Step two — you

    You read it and approve

  3. Step three

    Only then does it send

Nothing is submitted to payroll

It has no write access to your payroll run and never asks for it. The output is a list and some drafts. What goes into payroll is what you put into payroll.

It never approves a timesheet

Approval is a client's contractual decision, and forging it would be a genuinely serious thing to automate. It tells you a manager hasn't approved. It cannot approve on their behalf, and there's no setting that lets it.

It doesn't adjust hours

A sixty-one-hour week is flagged as a query, not trimmed to forty. If the number looks wrong it surfaces it with the booking beside it and waits — because sometimes it really was a sixty-one-hour week.

Client-side emails are always read first

A hiring manager sitting on approvals is also your route to the next three placements. Those drafts are deliberately plain, and we expect you to rewrite them. The contractor ones you'll mostly send as-is.

Setup

What setting this up involves

  1. 1

    Connect

    • Harvest, Clockify or Toggl — whichever your contractors log into
    • Google Sheets or Excel, holding your placement and booking record
    • Gmail or Outlook, so the chases come from your own mailbox
    • Slack, if you want the desk summary posted rather than emailed
  2. 2

    Tell it how you work

    • Your payroll cut-off — the day and time everything has to be in by
    • When the sweep runs, which should be far enough ahead to be useful
    • What a full week looks like per client, since not every assignment is five days
    • Who approves for each client, and how long you leave them before chasing
    • Your escalation rule — when a second chase goes to the manager's manager, and when it comes to you instead
  3. 3

    Then it runs

    About 40 minutes, once

    Most of it is mapping approvers to clients, which is a list you already hold in your head. After the first Monday you'll adjust the timing once and then leave it alone.

Edge cases

Where it's careful, and what it won't do

What it handles

  • A short week that's supposed to be short

    Assignments that end mid-week, four-day contracts, bank holidays and booked leave. It reads the booking first, so a correct 19.5 hours is marked resolved rather than chased.

  • Hours that look wrong in the other direction

    Sixty-one hours against a forty-hour booking gets surfaced as a question with both numbers shown. Overtime is often real; it just shouldn't reach payroll without somebody agreeing it did.

  • One manager holding up five sheets

    Grouped into a single email naming all five, rather than five separate emails to the same person in the same hour. The fastest way to be ignored is to arrive five times.

  • The same contractor missing three weeks running

    The third chase isn't a copy of the first. It escalates to you instead of going out again, because at that point it's a conversation, not a reminder.

What it does not do

  • Approve anything on a client's behalf

    It cannot mark a sheet approved and never will. Sign-off is the client's contractual act. It only ever tells you it hasn't happened yet.

  • Push hours into payroll

    No write access to the payroll run, by design. The list tells you what's ready; putting it through stays a human action with a human accountable for it.

  • Edit a submitted timesheet

    It reads. If a number is wrong, the contractor or the approver changes it in the system they already use. It won't quietly correct someone's week.

  • Handle umbrella and PAYE differences

    It chases hours. How those hours become pay — umbrella, PAYE, limited company, different rates for overtime — is your payroll provider's job and it doesn't try to model it.

Time back

Three to five hours a week, off Monday morning

Time back
3–5 hrs a week
Spent on
Filling the next contract
What it costs
$49 / monthGrowthplan — see what’s included

How that’s worked out: Based on a desk running 30–40 live contractors, where the Monday chase reliably takes half a morning between finding the gaps, writing the contractor nudges and composing the client-side approval emails. It scales with headcount, which is precisely the problem — every contractor you add makes the morning longer.

Fair questions

The questions contract desks ask first

Our contractors log into the client's system, not ours. Does this still work?

Partly, and it's worth being straight about where the line is. If the hours live in a client system we can't connect to, nothing can read them, and no tool will change that. What it can still do is track submission against your own record — who confirmed they'd filed, who hasn't come back — and chase on that. Most desks running mixed arrangements connect the trackers they own and keep a manual column for the rest, which is still a smaller job than doing all of it by hand.

Won't automated chasing annoy contractors we're trying to keep?

It would if it were indiscriminate, which is exactly why the booking check runs first. The chases that damage a relationship are the ones sent to someone who's on holiday or whose assignment ended — and those are the ones this removes. What's left is a short, specific note naming the day that's missing, sent from your address, that you have read before it went.

Payroll is the one thing we can't get wrong. What's the actual risk here?

The risk is narrower than it first looks, because it holds no write access to anything that pays anybody. It cannot approve a sheet, adjust an hour or submit a run. The worst failure available to it is drafting a chase you didn't need, which you'd catch when you read it. Everything that could actually cost a contractor money still requires the same person to do the same thing they do today.

FAQ

Questions worth answering properly

Which time-tracking systems does it read?

Harvest, Clockify and Toggl are the three verified here, and it can also work straight off a Google Sheet or Excel file if that's how your contractors submit. None of the three publish an event trigger, so it reads them on a schedule you set rather than reacting the moment a sheet is filed.

Can it approve timesheets to save the manager a step?

No, and this isn't a limitation we plan to remove. Approval is the client agreeing they were billed for work that happened — it's a contractual act by a named person. It will tell you a sheet is sitting unapproved and who has it. Marking it approved stays with them.

How does it know a contractor is on holiday?

From your own placement record — the sheet where you already note assignment dates and booked leave. It reads that before drafting anything, so someone on annual leave doesn't get chased. If the leave isn't recorded anywhere, it can't know, and it'll chase; that's the one input worth keeping current.

What happens when the same person is late every single week?

The chase changes rather than repeating. A first miss gets a short reminder, a second gets a firmer one, and by the third it stops sending and escalates to you instead. Somebody who is late every week has a reason, and finding out what it is isn't a job for an email.

Does it handle overtime and different rates?

It reports hours as they were logged, including anything above the booked week, and flags the overage so you can check it. It doesn't apply overtime multipliers or work out pay — that's your payroll provider's job, and modelling it here would just be a second place for the numbers to disagree.

Can the client-side approval chase go out without me reading it?

You can set the contractor nudges to send on approval as a batch, but we'd suggest keeping the client-facing ones in front of you. The manager sitting on your approvals is usually also the person deciding whether you fill their next three roles, and that email is worth ten seconds of your attention.

Get your Monday morning back

Connect the time system your contractors already use and tell it when payroll closes. The next sweep runs before you're at your desk.

Start free