My first fixed-price project ran 40% over. So did the second. Both times I blamed myself for being slow, which was the wrong diagnosis.

The overrun is never in the design

It was in the rounds of review nobody had scheduled, the stakeholder who appeared in week three, the API that turned out not to exist. None of that is design time. All of it was on my invoice.

Price the decision-making, not the deliverable.

Now every fixed quote names who signs off, how many review rounds are included, and what happens on round four. Projects have not got smaller. They have got calmer.