15 years ago it was always fix price for undefined amount of work, 10 years ago it was agile where client was promissed something but paid per day.
I prefer the old way of doing things: do the offer for free, commit to a task, and accept, that it might not be a success after all. I'd just loose a week of work, but probably learn a lot.
Commitment ain't what it used to be.