A fixed-price quote is, underneath the number, a bet on how much effort a piece of work will take. Once a feature calls a model, there is a second variable in the bet, and it doesn't move the way effort does.
The variable that isn't effort
Effort mostly compresses with experience: the tenth similar feature takes less time than the first. A model's behaviour on a given input doesn't compress that way — the hundredth similar prompt can still surprise you, because the variability lives in the input, not in the team's familiarity with the task.
Where this bit us once
We quoted a fixed price for a document-classification feature based on effort to build it, and built it well within that estimate. What we hadn't separately quoted was the operating cost curve, which depended on document volume and shape that nobody could know precisely until real usage started. The build was fixed-price; the cost of running it wasn't, and the two got confused in the client's mind until we walked through them separately.
How we scope it differently now
- Split the quote into two lines explicitly: the engineering effort to build and test the feature, fixed-price as normal, and the expected running cost, quoted as a range with the assumptions stated.
- Name the assumption that could break the range — typically input size or volume — in the document itself, not just in a conversation, so it's there to point back to if usage shifts.
- Include the guardrail work in the effort line, not as an afterthought, because validation, retries and fallback behaviour are a large share of what makes a model-backed feature ship safely and they are genuinely effort, not variance.
What we still can't fully fix
Even with this split, a client sees one number on an invoice and a different one on a monthly bill, and that gap needs explaining more than once. We now include a plain-language paragraph in the proposal itself — not just the technical appendix — explaining that the second number can move with usage and will be reviewed monthly.
A fixed-price quote makes a promise about effort. It should never quietly make a promise about a model's running cost too.
The upside of separating them
Clients have, without exception, preferred the two-line version even when the total looks larger on paper, because it tells them which number is a commitment and which number is a forecast, and lets them ask sensible questions about the forecast instead of treating the whole thing as fixed.
