Durvy
Back to blog
3 min read

Project budget tracking for freelancers

A budget you only check at the end is a post mortem. How to set hour budgets, watch the burn, and have the scope conversation while it still helps.

Fixed fee projects fail quietly. There is no moment where the loss announces itself, just a slow accumulation of extra revisions and small requests until the project that was worth 130 an hour is worth 60. A budget with a threshold turns that invisible drift into a specific day when you notice.

Set an hour budget even on fixed fees

The fee is the client's number. The hour budget is yours. Derive it from the fee and your target rate:

Budget hours = project fee divided by target hourly rate.

A 6,000 project at a 120 target is a 50 hour budget. That number now has meaning: crossing it means the project has dropped below your target rate, and crossing it early means something is wrong with the scope, the brief, or the client.

Track against it as you go

The whole value is in the middle of the project, not the end.

  • Log time against the project, including calls, emails, and revisions.
  • Check the burn weekly, not monthly. On a six week project, a monthly check gives you one useful data point.
  • Set a threshold at around 80 percent of budget. That is the point where you can still act.
  • Compare burn against progress, not against the calendar. Sixty percent of budget at eighty percent complete is fine. The reverse is not.

What to do at the threshold

Hitting 80 percent of budget is information, and there are only a few reasonable responses:

  • The scope grew. Have the change conversation now, with the tally of out of scope requests to hand. This is the outcome the threshold exists to enable.
  • The estimate was wrong. Absorb it, and record the multiplier so the next quote for this type of work is correct.
  • The process is inefficient. Too many revision rounds, unclear approvals, or an undefined decision maker. Fix the process for the remainder.
  • The client is expensive to serve. Note it. That is a renewal and pricing decision, not a this project decision.

The wrong response is to work faster and say nothing, because that guarantees the same outcome on the next project at the same price.

Communicating a budget problem

If the overrun is caused by scope, say so early, factually, and with a choice attached:

"We are at about 42 of the 50 hours budgeted, with the second gallery page and the two extra revision rounds accounting for most of the difference. To finish everything on the current list I would estimate another 15 hours. Options are to add that as an extra at the hourly rate, or to drop the gallery page from this phase and pick it up later. Which do you prefer?"

Numbers, cause, options. No apology and no blame.

What to record when the project closes

  • Budget hours, actual hours, and the ratio.
  • Effective hourly rate.
  • How much of the overrun was scope, estimate error, or process.
  • One sentence you would tell yourself before quoting the next one.

Five projects of this and quoting stops being a guess. This is the same dataset that improves your estimates, which is why it is worth keeping even when a project went fine.

What we built

Timely holds a budget in hours per project with a configurable alert threshold, shows the burn as you log time, and surfaces it inside the invoice form so you can see how a project is tracking at the moment you bill it. Projects and clients are shared across the Durvy apps, so the same project rolls up hours, invoices, and expenses in one place.

TL;DR

  • Derive an hour budget from the fee and your target rate, even on fixed fee work.
  • Check burn weekly against progress, not against the calendar, with an alert at about 80 percent.
  • At the threshold, diagnose scope, estimate, process, or client, then have the conversation with options attached.
  • Record budget versus actual at close. That dataset is what makes your next quote accurate.