The recurring thing here seems to be that consultants keep putting limits on themselves and then justify it.
“I have to charge hourly because...”
“I have to agree to go out of scope because...”
To expand on this, at the end of every contract is an SOW (statement of work). This explicitly and very clearly outlines what work is to be performed, how it will be performed, when it will be performed, and how long it will take.
At the end, I like to put a small sentence. The client can always request to change the scope or add things to the scope, the consultant will provide a cost and timeline for the change and once paid for, the consultant will perform the work.
I always say "yes" when a client asks for additional work. Then I tell them how much it's going to cost in addition to what we already agreed.
The number 1, cardinal rule, always is ... never work for free. If you don't value your work, nobody else will either.
Whether I have to work 5 hours or 8 hours on your project, either way my day is largely shot.
EDIT: for clarity, I build RESTful API back-ends on AWS and support them with DevOps; I can see how my method may not work for other industries.
OTOH, a while back I had a client that told me to stop detailing everything on my invoices. They just wanted a total number of hours. I think maybe it had to do with the review process upstream. Fewer details gave the higher ups less to scrutinize and complain about, I guess. And none of the other contractors were providing such detail.
This doesn't mean you can't over-forecast the hours needed in a week to deliver x, it can be an iterative/incremental process. But don't think for a second a client won't want to see how you came up with your pricing model before signing an SOW.
In my six years I’ve never had to switch to hourly billing. The most pushback I encounter to this idea is from other consultants, often before they even try it.