How long does it take to write a client report? Measure your next one

· 6 min read

Usually longer than the afternoon you budget for it, because a monthly client report is rarely written in one sitting. It spreads across several days: pulling numbers when the month closes, writing once they settle, formatting, then a round or two of questions and changes. The figure worth having is your own, from one report measured from the first data pull to the version the client accepts, split into those parts. That figure tells you whether to charge more for the report or automate its slowest part.

Why reports feel quicker than they are

Ask someone how long their monthly report takes and they will usually describe the writing: “an afternoon”. The writing is the part they remember, because it is the part that felt like work.

The rest happens in pieces. Forty minutes on the 1st exporting from three dashboards. A message on the 2nd asking the client for last month’s sales figure. Twenty minutes on the 3rd rebuilding a chart because one export changed its columns. The afternoon of writing on the 4th. Half an hour on the 7th explaining why one number differs from what the client sees in their own dashboard. Each piece is small enough to forget, and they land on different days, mixed in with other work.

So the number in your head is the afternoon, and the price was probably set from the afternoon too. If you send reports to several clients, the gap repeats for each one every month.

The four parts, and where each one shows up

Before measuring, decide which lines of the day’s record belong to which part. The apps vary by trade; this is a common spread.

Part Where it usually happens What makes it grow
Pulling data Dashboards in a browser, the Downloads folder, a spreadsheet for cleanup Exports that change format, figures that arrive late
Writing Pages, another word processor, or a shared doc in a browser tab No clear goal for the month, nothing new to say
Formatting Charts in Numbers or another spreadsheet, layout in Keynote or Pages, a last look at the PDF in Preview Rebuilding the same charts by hand each month
Review Mail, team chat, a call No agreed sign-off, questions arriving after the report goes out

Much of a report lives in the browser, which on an ordinary app record is one long line. If you use Chrome, Brave, Edge or Vivaldi, Punchcard’s optional itemized browsing (off by default; switch on “Itemize websites” in Settings) splits that line by site, so the analytics dashboard, the ad account and the shared doc each get a line of their own, competing with your apps for the top five. It keeps only the site name, never the full address or page title, and it does not itemize Safari, Firefox or Arc.

Measuring one report across the days it spans

Pick the next report for one client, ideally one you write every month, so the measurement keeps paying off.

  1. Note the start. In a running note, write the date and time you first open the data for this report.
  2. Let the record run. Punchcard sits in the menu bar and notices which app is in front, by name, with no timer to start or stop. At your closing time it prints a receipt: the top five lines with the time on each, the rest as MISC, and a day total.
  3. Mark the report blocks each day. Punchcard has no projects or clients, so it cannot tell this client’s spreadsheet time from another client’s. A line in your note can: “Report: data pull 9:10 to 10:00; chart fixes after lunch, about 20 min.”
  4. Keep going through review. The report is finished when the client stops asking about it, not when you press send. Include the follow-up mail and the call.
  5. Add time away from the Mac. A walk-through call on your phone, or reading the draft on paper, appears on no Mac record. Write it in the note as you go.

The week and month rolls give the wider view: how the report’s apps sat against everything else you did that month.

Adding it up from the CSV

Daily receipts are good for a glance, but a report spread over six working days is easier to total from the export. Tracking never expires and the CSV export works without a license, so this costs nothing. The first two printed receipts are free; printing after that is a $9 one-time license.

  1. Export the CSV from Punchcard and open it in Numbers.
  2. Each row is one session: its start, end, app, whether it was idle, its length in seconds, and the site when itemized browsing is on. Sort by start.
  3. Delete the rows marked idle, and rows from days outside the report.
  4. For apps and sites you use only for this report (the client’s dashboard, say), keep every row. For shared ones, keep only the rows inside the blocks in your note. If the start and end times do not line up with your note, they may need converting to your time zone; shift them by your offset before matching.
  5. Add a column that labels each row as data, writing, formatting or review. Total the seconds for each label and divide by 3600 for hours.

A few minutes in a spreadsheet, and you have a measured breakdown instead of a remembered one. Export your time data to CSV and keep it forever covers the export itself.

Price it, or automate the slow part

The total and the split point at different decisions.

If the total is well above what the report is priced at, the report is underpriced, and often so is the retainer it sits inside. Make the report its own line at the next renewal, priced from the measured hours. How to price a monthly retainer from hours you really worked has the arithmetic.

If pulling data is the biggest part, it is the best candidate for automation, because it is the same job every month. In rising order of effort: save the export settings in each dashboard that allows it; build a spreadsheet template where this month’s raw exports paste into a fixed tab and the charts update themselves; use a scheduled export where the dashboard offers one; or give the client a live dashboard and write a short summary on top. Measure the report after each change, so you know the automation earned back its setup time.

If formatting is big, stop building charts by hand. A template with the charts already styled and fed from the data tab turns formatting into checking.

If writing is big, the report may be trying to say too much. Ask the client which section they read first. Three observations and one recommendation are often more useful to them and cheaper for you than ten pages of commentary.

If review is big, agree on one review round and one person who signs off, before the next report starts.

What the measurement will not tell you

Punchcard records the app in front on one Mac, plus the sites you used if you switch itemizing on in a supported browser. It does not know which client a block belonged to, has no projects, tags or timers, and has no team features, so if a colleague drafts the report and you review it, each of you measures your own part on your own Mac. It cannot see work away from the screen, and it never records document names, which is why the note is what turns its hours into a per-report figure. To turn one measured report into a quote for a new client, how to estimate hours for a quote shows how to give a range rather than a single promise.

Questions

How many reports should I measure? Two or three months of the same report. The first month often includes one-off setup, such as building a template, and any single month can be unusually quiet or unusually messy.

I write reports for several clients in the same week. Can Punchcard split them? Not by itself; it has no per-client tracking. The daily note with block times does the splitting, and the CSV lets you total the blocks.

Does Punchcard see the client’s figures? No. It records app names, and site names if you switch itemizing on. It never records document names, window titles, page titles, full addresses or screen contents, and the record stays on your Mac.