How We Estimate
Turning a scope into a number without underquoting.
How We Estimate
Method#
- Break the scope into deliverables. Not features — deliverables. "User authentication" is a deliverable. "Login page" is a component of it.
- Estimate each in days, assuming focused work.
- Add the parts that always get forgotten: deployment, environment setup, documentation, client revision rounds, handover, the recorded walkthrough.
- Multiply the total by 1.5. Not a contingency — a correction for a known and consistent bias.
- Multiply by the day rate.
- Compare against the floor. If below, it is either a floor-priced engagement or it is declined.
The 1.5 multiplier#
Software estimates are optimistic by default because the estimate is made while imagining the work going well. It rarely does. The multiplier is not padding; it is calibration.
Track actual hours against quoted hours on every project. After three or four projects there will be a real multiplier specific to this operator's estimating bias. Until then, use 1.5.
Things that are always underestimated#
| Item | Why |
|---|---|
| Authentication and roles | Every role multiplies permission logic across every route |
| Third-party integrations | Documentation lies; sandbox behaviour differs from production |
| Client revision cycles | Assume more rounds than agreed; cap them in scope |
| Data migration | Real data is always messier than the sample |
| Deployment and DNS | Never as fast as expected, especially with a client-owned domain |
| Documentation and handover | Genuinely takes days, not hours |
Fixed price vs. weekly sprints#
Fixed price when scope is genuinely clear and bounded. Better for the client's certainty, higher risk for the studio.
Weekly sprints when scope is exploratory or the client is still deciding. Better for the studio, requires more client trust.
Default to fixed price for a first engagement. A new client buying an unknown quantity needs certainty more than flexibility.
Payment structure#
Default: deposit before work begins, remainder tied to milestones.
Never start work before the deposit clears. This is not distrust — it is the mechanism that confirms the client is committed, and it filters out the ones who are not.