Guide
Rebuild it from evidence, not memory: block in meetings from your calendar, fill work time from commits, tickets and document history, then check sent messages and browser history, and mark any hours you can't support as gaps. Harvest or Toggl can pull calendar events in, Timing or Memtime help only if they were already running, and Dayflow keeps an automatic Mac timeline so next week needs no rebuild.
It’s Friday at 4 p.m., the timesheet is due by five, and the week is a blur. You remember Tuesday’s long client call and very little else. The usual fix is to type eight hours of “project work” into each day and hope nobody looks closely. That holds until a client questions an invoice line or a manager lines your entries up against the sprint board.
You can do better without any app. A working week leaves a trail: calendar events, commits, sent messages, browser history, file save times. This guide shows how to pull those into a timesheet you can stand behind, and how to be upfront about the hours you can’t rebuild.
A disclosure before we start: Dayflow is our product. It shows up in the final step as one way to stop this from happening again, and the method works fine without it. Tool details in this guide come from each vendor’s own documentation as checked on October 4, 2026. Nothing was benchmarked.
Work oldest day first. Your memory of Monday is the weakest, and evidence from later in the week (“finished the export bug”) often explains earlier gaps.
Before you collect anything, decide what the finished timesheet has to look like. Find the exact date range, the list of codes you’re allowed to use, and the rounding rule. If you bill clients, check the contract. Some specify increments or rule out billing for internal meetings.
Illustration: a contractor bills one client in quarter-hour increments under three codes: development, meetings and support. Internal admin goes on a separate, unbilled line. So the reconstruction only needs to place work into four buckets at 15-minute resolution. Anything finer is wasted effort.
Mistake to avoid: reconstructing at a finer grain than the timesheet needs. Trying to recall whether a task took 40 or 50 minutes burns time and adds false precision. Match the grain to the form.
Meetings are the most reliable anchor you have, because their start and end times were written down in advance. Open your calendar in week view for the period and copy each event onto the draft with its code.
Then go through them one by one and ask whether each actually happened as scheduled. Accepted is not the same as attended. Look for meetings you declined late, left early, or that ran over.
If you already use a timer tool, it can speed this step up. Harvest lists tracking from a connected calendar, and Toggl (formerly Toggl Track) lists calendar integrations, including on its free plan. We cover how Toggl fits on a Mac in Toggl for Mac. Either way, you still check each imported event by hand.
Illustration: Wednesday shows a 9:30 standup, a 1:00-2:00 design review and a 3:30 client call. The design review is on the calendar, but you remember leaving halfway through to fix a production bug. That becomes 1:00-1:30 meetings and 1:30-2:00 support.
Mistake to avoid: treating the calendar as the truth. It records plans. Everything else in this guide is about checking plans against what happened.
Next, look at the things you made. They carry timestamps, and they tell you what you worked on, not just when you were online.
For code, run this in each repository you touched:
git log --author="Your Name" --since="2026-09-28" --until="2026-10-04" --date=iso --pretty=format:"%ad %s"
Then check pull request timelines on your code host and the activity history on tickets you moved. For documents, version history in Google Docs or Figma shows edit sessions, and Finder can search a folder by “Last modified date”.
Illustration: on Wednesday you have commits at 10:12, 11:47 and 4:55, all on the same ticket, plus a ticket comment at 12:05 saying “fix deployed to staging”. A reasonable reading is development from about 10:00 to 12:00, and another stretch late in the afternoon after the client call.
Mistake to avoid: reading a commit time as a start time. A commit marks the end of a chunk of work, so the work happened before it. Also watch for squashed or rebased history, which can fold several days of work into one commit with one date. The PR timeline is a good cross-check.
Communication fills the gaps that artifacts leave, especially for support, coordination and client work that doesn’t produce files.
from:@yourname on:2026-09-30 to see everything you sent that day, in order.in:sent after:2026/09/29 before:2026/10/01.Read your own messages for clues, not just timestamps. “On it” at 2:10 and “should be fixed now” at 3:05 bracket a support task.
Illustration: Thursday has almost no commits. Slack shows a thread with a client’s ops lead from 9:40 to 11:15, with screenshots and log snippets going back and forth. That’s roughly an hour and a half of support, and it explains why there was no code that morning.
Mistake to avoid: treating “sent a message” as “worked on that project”. A two-minute reply to one client while you were deep in another client’s task is two minutes, not the hour around it. And a long silence can mean focus or it can mean lunch. Messages show when you were reachable, not what held your attention.
Your Mac kept some records you didn’t ask for.
EXTENDED_HISTORY is set.Then check whether any tracker was already running. If you have Timing installed, it records time across apps, websites and documents on the Mac automatically, down to specific URLs, so the week may already be there waiting to be assigned to projects. Memtime works in a similar way, recording programs, documents, email, calls, meetings and browser tabs as a timeline you turn into entries, and the vendor says that activity data stays on your device. If you’re weighing either one, see our Timing alternative and Memtime alternative pages. Toggl’s desktop app also lists background tracking with a timeline, worth checking if you had it on.
Illustration: Screen Time shows four hours in Figma on Tuesday. Browser history shows the client’s brand guidelines PDF opened at 10:20 and a staging URL at 3:40. Together they suggest a design block in the morning and review work in the afternoon.
Mistake to avoid: turning app totals straight into project hours. Four hours in a browser could be three clients and a news site.
Now lay out each day from start to finish. Next to each block, note the source and how sure you are:
| Block | Code | Source | Confidence |
|---|---|---|---|
| 9:30-9:45 | Meetings | Calendar | High |
| 10:00-12:00 | Development | Commits, ticket comment | High |
| 1:00-1:30 | Meetings | Calendar, memory | Medium |
| 1:30-2:00 | Support | Slack thread | Medium |
| 4:00-5:00 | Development | One commit at 4:55 | Low |
Illustration only. Your codes and sources will differ.
Add up the day and compare it with how long you were actually at work. If a stretch has no evidence at all, leave it marked as a gap rather than assigning it to whichever project is billable. If your weekly totals feel off in general, the where does my week go calculator is a quick way to check them against the hours you think you work.
When you submit, say what you did. A short note works: “Monday and Tuesday reconstructed from calendar and commits; Thursday afternoon is an estimate.” That note takes ten seconds to write and is far easier to explain than a discrepancy someone finds later.
Mistake to avoid: stretching entries until each day hits exactly eight hours. Neat totals with no gaps are the clearest sign of a timesheet written from memory, and on a client invoice they’re the lines you’d least want to defend.
The reconstruction took effort because the evidence was scattered. The fix is to collect it as you go. There are four realistic options, from most manual to most automatic:
For a wider comparison, our guide to choosing a time tracker for Mac covers more options.
Illustration: next Friday you open the timeline, see Wednesday’s 10:00-12:00 block labeled as work on the export bug, and copy it onto the timesheet under development. The step that took most of this guide becomes a reading exercise.
Mistake to avoid: picking a tool you won’t keep running. A timer you forget to start leaves you exactly where you are today. Choose the option that matches how you already work.
| Approach | Effort | What you get | Cost |
|---|---|---|---|
| By hand (calendar, commits, messages) | High, every time you fall behind | A defensible timesheet with honest gaps | $0 |
| Harvest (timer app) | Start and stop timers, or pull from a calendar | Timesheets, invoicing, expenses | Free plan $0 (1 seat, 2 projects); Teams $9 seat/month billed annually or $11 billed monthly |
| Toggl (timer app) | Timers, timesheets, calendar integrations | Billable rates and team reports on paid plans | Free for up to 3 users; Starter $9 per user per month billed annually or $12 billed monthly |
| Timing (automatic tracker) | Assign recorded activity to projects | Automatic Mac record, billing status, reports | No free tier; Professional $9 per month billed annually or $11 billed monthly; 30-day trial |
| Memtime (automatic tracker) | Turn the timeline into entries | Automatic record on Mac, Windows and Linux | No free tier; Basic $14 per user/month billed annually ($18 quarterly, $12 2-yearly); 14-day trial |
| Dayflow | Read the timeline, copy blocks over | AI-written daily timeline, Markdown export | $0, MIT licensed; optional Pro at $20 a month |
Again, Dayflow is our product. It’s Mac only (macOS 14 or later) and has no invoicing, payroll approvals, team reports or website blocking. Its AI summaries can miss or misread work, so check what it says before it goes on a timesheet. Plan details are on the pricing page.
A forgotten timesheet can be rebuilt. Start with the calendar, fill in from what you produced and what you sent, check your Mac’s history, and mark honestly what you can’t account for. The result is less tidy than a made-up eight hours a day, and much easier to defend.
Then fix the cause. If you’d stick with a timer, Toggl or Harvest is enough. If you bill hours on a Mac and want an automatic record, look at Timing. If you’d rather have the day written out for you by a free, open-source app, try Dayflow.
It's common, but memory alone is the weakest source. Rebuild from evidence instead: calendar events, commits, ticket history, sent messages and browser history. Where you still have to estimate, mark the entry as an estimate and tell whoever approves the timesheet. An honest reconstruction with flagged gaps is far easier to defend than tidy eight-hour days that nobody can check.
Check browser history, Finder's Recents view, each app's Open Recent menu and, if it was turned on, Screen Time in System Settings, which shows app usage by day. Add git log for code and version history for documents. None of these were built for timesheets, so expect to combine several and fill the gaps from your calendar and messages.
Run git log with your author name and a date range, for example --since=2026-09-30 --until=2026-10-01, and print the date and message for each commit. Repeat in every repository you touched. Remember that a commit marks the end of a piece of work, not its start, and that squashed or rebased history can collapse several days into one timestamp.
Leave them as a gap or log them under a general or internal code, and add a short note saying that part of the week was estimated. Don't assign unexplained hours to a billable client to make the day add up. If the timesheet form has no notes field, mention the estimate in the message you send along with it.
No. Dayflow builds its timeline from screen frames it records while running, so it has nothing for days before installation. For a past week, the only option is reconstructing from your calendar, commits, messages and Mac history. Dayflow helps from the day you install it onward, and its AI summaries should still be checked before anything goes on a timesheet.
Yes. Harvest turns tracked time into invoices with online payments, handles expenses and connects to accounting tools such as QuickBooks and Xero. Its free plan covers one seat and two projects, and the Teams plan is $9 per seat per month billed annually or $11 billed monthly. Dayflow has no invoicing, so if billing clients is the point, Harvest is the better fit.
Both list calendar features. Harvest lists tracking from a connected calendar, and Toggl lists calendar integrations, including on its free plan for up to three users. Either can save typing meetings in by hand, but you still need to check each event, since a calendar records what was scheduled, not whether you attended or how long it really ran.
Only if the app was already installed and running. Both record activity automatically: Timing on the Mac, down to specific URLs, and Memtime across programs, documents, calls and browser tabs on Mac, Windows and Linux. If either was running, your week is probably there to assign to projects. Neither has a free tier, and neither can see time from before installation.
Recordings and the timeline are stored on your Mac. Analysis depends on the mode: Local AI keeps screenshot analysis on-device through Ollama or LM Studio, while your own cloud provider or Dayflow Pro processes selected screenshots off-device. Under the privacy policy, Dayflow Pro deletes screenshots after processing and may retain activity data for sync. A provider you configure has its own terms.
Daily is the practical minimum. A few lines at the end of each day, or a quick look at an automatic timeline, keeps detail that is usually gone by Friday. If daily notes don't stick, use a tool that records without your input, such as Timing, Memtime or Dayflow, and spend your effort reviewing the record rather than remembering the week.
Dayflow is $0 and open source. Full recordings stay on your Mac, with local AI available for on-device analysis.
Download for MacOS macOS 14+ · MIT licensed · no account required