Hourly billing sounds fair until you sit on the other side of it. The agency gets paid more the longer a feature takes, and you have no way to tell whether three days of work was actually three days of work. We don't run engagements that way.
The number comes before the code
Every project starts with a discovery call, not a rate card. We ask what's actually broken, what a good outcome looks like, and what's out of scope. Within 48 hours of that call, you get a fixed quote and a timeline. Not a "ballpark." Not a range with an asterisk.
What happens when scope changes
It happens on nearly every project, and it's not a problem as long as it's handled honestly:
- We flag the change as soon as we see it coming, not at invoicing time
- You get a new fixed number for the added scope before we touch it
- The original quote doesn't quietly balloon to cover it
If a client can't predict their bill, they stop trusting every other number you give them.
Why this is harder for us, not easier
Fixed pricing means we carry the risk when we underestimate something, not you. That's the point. It forces us to actually understand a problem before quoting it, instead of leaving ourselves room to bill our way out of a bad estimate.
It also means we turn down projects we can't scope with confidence, rather than take the work and figure it out on the clock. We'd rather lose the project than lose the trust.