How to estimate hours for a quote when you never tracked the last job
· 6 min read
Rebuild the last job from evidence you already have (file timestamps, sent mail, calendar entries, commit history), turn that into a range rather than a single number, and quote the top of the range with your assumptions written down. Then start keeping a record on this job, so the next quote is built on a receipt instead of a guess.
Why memory is the wrong source for a quote
When you sit down to estimate hours for a quote, the number that comes to mind is not a memory of the last job. It is a memory of the parts you enjoyed, minus the week it sat half-finished while you waited on feedback. People compress jobs after the fact. A project that took six weeks of on-and-off attention becomes “about two weeks” in the retelling, because two weeks is how long the interesting part felt.
That compression goes one way. It almost never makes a job feel longer than it was. So an estimate from memory is systematically low, and a quote built on it is a discount you did not mean to give. There is a longer look at this effect in why your estimate of your own workday is wrong by hours; what happens to a day happens to a project.
The fix is not to try harder at remembering; it is to go and find the evidence.
Rebuild the last job from the evidence you already have
You did not track the last job, but your Mac did, in pieces. None of them is a timesheet, and together they are better than memory.
- Open the project folder in Finder, list view, sorted by Date Modified. The earliest and latest files bracket the job. Days with many modified files were working days; gaps were waiting days.
- Search Mail for the client and look at the Sent folder. Every message you sent is a timestamp of you at the desk on this job. Count the days between the kickoff and the handover that have at least one sent message.
- Scroll Calendar back over those weeks. Calls, review sessions and blocks you put in yourself all count.
- If there is code, read the log. In Terminal,
git log --format='%ad' --date=short | sort | uniq -cprints one line per day with a commit count. - Find the old invoice or proposal. If you quoted a fixed fee, note it. You are about to find out what hourly rate you actually earned.
Write down every working day you found with a rough weight: full, half, or light. The aim is a count of days and a feel for how heavy each was.
Turn the reconstruction into a range, not a number
Suppose you found fourteen working days: six full, five half, three light. Convert it twice.
The low figure counts a full day as five focused hours, a half as two and a half, a light as one: 30 + 12.5 + 3, or 45.5 hours. This is what you would have put on a timesheet if you had only counted the time you were actively producing.
The high figure counts a full day as eight, a half as four, a light as two: 48 + 20 + 6, or 74 hours. This is closer to the time the job actually occupied: the reading, the re-reading, the replies at odd hours.
The truth sits between, and where it sits depends on how much of your day is on the job versus around it. If you have never measured that, assume the high end. People who measure for the first time usually find the gap between hours at the desk and hours on the task is larger than expected; the difference between time spent and time worked goes into why.
Now check it against the old fee. If you charged 2,000 for a job that occupied 74 hours, you earned about 27 an hour. Keep that number in front of you while you write the new quote.
Quote the range, and say what it assumes
“40 hours” is a promise. “40 to 60 hours, most likely around 55, based on the scope below” is an estimate, which is what you were asked for.
Write three things under the number:
- What is included. Deliverables, number of revision rounds, who supplies what and by when.
- What moves the number. Late feedback, growing scope, a third round. Name them before they happen.
- What you will do if it runs long. Warn at 80 percent of the estimate and agree the next step together. This one line prevents most unpleasant invoice conversations.
Then quote the higher figure in the range, or close to it. The low figure is the one your memory wanted to quote, and you now know what your memory is worth.
Start the record on this job so the next quote is easy
Everything above is reconstruction, and reconstruction is work. The way to never do it again is to have a record of this job by the time it ends.
The record that actually gets kept is one you do not have to operate. Punchcard sits in the menu bar and notices which app is in front during the day, then prints a receipt at your closing time: time per app, a day total, a stamp. There is no timer to start, so there is nothing to forget. At the end of a job you have a receipt for every day you worked, and the totals tell you how heavy each day was, which is the “full, half, light” judgment you had to guess at above.
Be clear about what it does not do. Punchcard has no projects, no clients and no billable rates. It will not say that Tuesday was 3 hours on this client and 2 on another; it will say Tuesday was 5 hours 40 minutes, mostly in your design app. If you work on one client at a time for a day or more, the day total is the job. If you split every day across clients, you still need a line in a notes file saying which client had which part, and the receipt supplies the total you are splitting.
A worked example
A designer quotes a brand refresh. The last one, eighteen months ago, “took about three weeks.” The old folder was created on a Monday and last modified seven weeks later. Sent mail shows nineteen distinct days with a message to the client. The invoice was a fixed 3,600.
Nineteen days, weighted as eight full, seven half and four light, gives a low of 64 hours and a high of 100. Her real rate on that job was between 36 and 56 an hour against a stated rate of 85. She quotes the new refresh at 70 to 90 hours with two revision rounds included, turns on a tracker on day one, and the next quote takes ten minutes.
Questions
What if I have no files or email from the last job at all?
Use a comparable job you do have evidence for, or break the new job into parts and estimate each against something recent you can check. Estimating six parts against six known things is far more accurate than estimating the whole in one number.
Should I quote hours or a fixed fee?
Whichever the client needs to see, but build both from the same range. A fixed fee is a range with the risk priced in, so it should sit at or above the high figure multiplied by your rate. If it does not, you are absorbing the risk.
How much contingency should I add?
If the range runs from a realistic low to a realistic high, the high figure is the contingency. Adding another 20 percent to an honest high estimate is double counting. Adding 20 percent to a memory-based number is nowhere near enough.
Does Punchcard tell me how long a project took?
Not directly. It records days, by app, with a total per day. If the project was the only thing you worked on, the sum of the day totals is the project. If not, you need your own note of which days were which; Punchcard has no project or client field and will not gain one.