Guide
Reconstruct a client timesheet from work history
Forgot to track a week? Work history can rebuild a draft: what you worked on, when, and the evidence behind it. Recorded activity isn’t billable time, so review the draft, fix overlaps and gaps, and apply your client’s rules before it goes on an invoice.
An invoice line has to survive a question from the client: “what was the six hours on Tuesday?” A reconstructed timesheet is only useful if every entry can answer that from a source. The method below builds a draft you can check, then turns it into something you can send.
Pick one client and one date window
Start with a single client and fixed dates, in your timezone. Mixing clients makes it easy to put a call or a document under the wrong account. If two clients share a project or a repository, decide up front how you split it.
Ask for a draft with the gaps visible
Review my work for [client or project] from [start date] to [end date] in [timezone]. Make a table of date, activity, active time, source and anything uncertain. Don’t fill gaps, don’t round, and don’t mark anything billable.
A draft with visible gaps is more trustworthy than one that conveniently adds up to eight hours a day. If the assistant gives you round numbers without sources, ask for the source of each row.
Fictional practice data: the client, entries and corrections below are invented to show the review. They are not output from a tested Cachejay session.
| Date | Activity | Active time | Source | Uncertain |
|---|---|---|---|---|
| Mon Oct 12 | Checkout redesign in Figma | 2.4 h | Screen activity, Acme file | — |
| Mon Oct 12 | Call with Acme’s product lead | 0.8 h | Call transcript | Doc open during the call |
| Mon Oct 12 | Spec doc edits | 0.5 h | Screen activity | Overlaps the call |
| Tue Oct 13 | acme-storefront repository | 3.1 h | Agent session, editor | — |
| Wed Oct 14 | (no record) | — | — | Client workshop on site, away from the Mac |
Check overlapping and missing work
A document open during a call is not two periods of work. In the example, the spec edits happened during the call, so Monday has 0.8 hours of call, not 1.3. Pick the actual task for each overlapping period instead of adding both.
Missing records need the opposite check. Thinking time, travel, phone calls away from the Mac and on-site work leave no trace. Wednesday’s workshop is real work with no captured record; add it from your calendar or notes, and mark it as your own entry.
Also look for activity that isn’t the client’s: a personal tab, another client’s email, admin you don’t bill. Activity under a client’s project is a lead, not a conclusion.
Apply the client’s rules after the review
Only now apply the agreement: what’s in scope, the rounding increment, minimums, whether calls or travel are billable, and any cap. Those terms come from your contract, not the assistant’s guess. Do the arithmetic yourself or check it.
| Date | Reviewed hours | Billed (rounded to 0.25 h) | Why |
|---|---|---|---|
| Mon Oct 12 | 3.2 | 3.25 | Design and call; spec edits counted once |
| Tue Oct 13 | 3.1 | 3.0 | Repository work |
| Wed Oct 14 | 4.0 | 4.0 | Workshop, added from your calendar |
Keep the review notes. If the client asks, you can show how each figure was reached.
Write descriptions without changing the hours
Rewrite these reviewed entries as short, client-facing descriptions. Keep the hours exactly as given. Don’t add work, round, or mention other clients or private material.
Read the result once more against your table. Assistants sometimes “helpfully” merge or rebalance entries. The client sees descriptions; the sources stay with you.
Where Cachejay fits
Cachejay counts active time on your Mac by project, and stops when the screen sleeps, locks or sits idle. It also keeps call transcripts and project notes, which is where the “what was it for” comes from. See time tracking and the freelancer workflow.
To get the draft, ask Claude Code or Codex connected on your Mac for your time by project over the window. For a spreadsheet, choose Export Timesheet › Last 7 Days… or Last 30 Days… in the menu bar: it saves a CSV of date, project and hours. For another window, the Cachejay engine prints the same CSV:
/Applications/Cachejay.app/Contents/MacOS/cachejay-engine time --days 14 --csv Hours come from captured activity, so gaps from exclusions, pauses and offline work are expected. Captured text and notes sync to your account by default; check the privacy controls before capturing client work.
Try it on a week you remember well. The goal is a timesheet you can defend line by line, not one that only looks complete.