My biggest concern with doing something like this would be that you'd burn all your time negotiating - because clients are going to show up with a "3 months to implement" idea, and you're may spend more (unpaid!) time stripping the thing down to a reasonable MVP than actually coding.
"We'll agree beforehand on a list of features" has a lot of complexity hidden inside; if a client shows up with an idea "be the next Google" and hands you a list "1. SEARCH TEH INTERNETZ", what will you do?
I know you were joking, but I once had a guy complain about just that. I contributed a (very basic) search feature to some FOSS software and a user complained because it "wasn't as good as Google".
My response was something like "If I could write a search engine as good as Google in my spare time, I'd be living a lifestyle somewhat more luxurious than the one I actually have."
"We'll agree beforehand on a list of features" has a lot of complexity hidden inside; if a client shows up with an idea "be the next Google" and hands you a list "1. SEARCH TEH INTERNETZ", what will you do?