TL;DR: Fixed bids fail when you multiply hope by an hourly rate. Break the job into task hours, apply a risk buffer, then add non-billable overhead. Work the arithmetic in a transparent worksheet or Calculation Assistant so the client sees a price, not a guess.
Start from tasks, not from a round number
Freelancers often reverse-engineer a “sounds fair” total and divide by their rate afterward. That hides scope. Instead, list deliverables as tasks with optimistic, likely, and pessimistic hour estimates. Even three lines—discovery, build, revisions—beat a single lump.
Sum the likely hours first. That figure is your base labor. Optimistic numbers belong in sales conversations only after you have protected yourself with buffer math.
Convert hours to money without mixing tax stories
Base labor dollars = likely hours × hourly rate. Keep tax, payment-processor fees, and expense pass-throughs in separate rows. Mixing “I need $X after PayPal” into the hourly rate makes later change orders impossible to explain.
If the client asks for a day rate, derive it from hours you actually work in a focused day (often 5–6 productive hours, not 8). Inflating a day rate to hide inefficiency creates awkward comparisons when they later request hourly help.
Where people undercount
- Kickoff calls and asynchronous clarification
- Environment setup and access delays
- Two rounds of revisions that the proposal called “minor”
- Handoff documentation the SOW forgot to name
Add those as explicit task lines or fold them into a contingency percentage—do not leave them as silent optimism.
Buffers that mean something
A flat “add 20%” is fine when uncertainty is moderate. For fuzzy scopes, weight the buffer by the gap between likely and pessimistic totals:
Risk hours ≈ (pessimistic − likely) × confidence factor. A confidence factor of 0.5 means you price half the downside; 1.0 prices the full pessimistic case. State the factor in your notes so future you remembers why the number looked “high.”
Buffer is not profit. Profit (or margin) sits above fully loaded cost. If you bury margin inside buffer, you will discount the wrong line when a client negotiates.
Overhead that fixed bids must absorb
Non-billable time still costs you: proposals, invoicing, tool subscriptions allocated to the project, and unpaid waiting on client assets. Either raise the effective hourly rate used for fixed work or add an overhead line as a percent of base labor. Consistency matters more than the exact percentage—pick a method and reuse it.
Example structure:
- Base labor (likely hours × rate)
- Risk buffer (calculated hours × rate)
- Overhead percent on (1)+(2)
- Target margin on the subtotal
- Optional expense allowances (software, stock assets) listed separately
Present the client-facing number as a single fixed fee if that is the deal shape, but keep this stack in your private worksheet.
Change orders without rewriting the original math
When scope grows, estimate new task hours with the same three-point method. Price the delta with the same rate and buffer policy. Resist “just this once” discounts that teach the client your fixed bid was padded nonsense.
If the client wants a capped not-to-exceed instead of fixed, show the cap as base + buffer and bill actuals underneath. Your worksheet still starts the same way; only the commercial wrapper changes.
What the fixed bid does to your cash flow
A fixed fee shifts timing risk onto you. If the work takes longer than planned, you still receive the same total, and the effective hourly rate quietly falls. That is an acceptable trade when the buffer is honest and unacceptable when it was invented to win the bid.
Consider payment milestones tied to deliverables rather than a single payment at the end. Milestones reduce the pain of a long project and also give you an early signal if a client’s approval process is slower than described.
Keep a simple log of actual hours against estimates for every fixed project. The log is the only way to learn whether your buffer is calibrated or decorative, and after three projects the pattern is unmistakable.
Presenting the number without revealing the worksheet
Clients want a price and a scope, not a cost breakdown. Offering the full stack invites line-item negotiation, which defeats the purpose of a fixed bid.
Offer the fee, the deliverables, the revision count, and the exclusions. Keep the hour estimates in your private file, and answer scope questions by clarifying the deliverable rather than by defending an hour count.
If a client demands justification for a specific line, explain the scope driver instead. “The fee reflects two rounds of revisions and a documented handover” is answerable; “I estimated eleven hours” invites a debate about your speed.
Sanity checks before you send the proposal
- Does the fixed fee still look sensible if likely hours slip 25%?
- Are third-party costs excluded or capped?
- Is revision count defined so buffer is not eaten on day one?
- Did you avoid double-counting buffer and margin?
Run the multiplications twice—once by hand in columns, once in a calculator—so a missed parenthesis does not become your discount.
Reusing the same bid math on Calculation Assistant workflows
Save a template: hours columns, rate cell, buffer factor, overhead percent, margin percent. Swap inputs per project instead of reinventing formulas in chat threads. When stakeholders challenge the total, walk them through hours and risk—not vibes. Cross-check the final multiply-and-add chain on www.calculationassistant.com so the published fixed bid matches the worksheet you will use when scope inevitably shifts.

