Something that I and colleagues sometimes struggle with is creating accurate quotes / estimations / timings, whatever you call them. These quotes are usually given in hours or days, which is translated into an actual $$$ cost. The hard part is making them as accurate as possible, so that we don't let the scope creep, smash past our budget and end up having a very awkward conversation with a client.
It seems that they are two main ways to attack this; either you do whatever you can to understand as much as possible about the task or project beforehand, or you intentionally leave some ambiguity and room in the project and in the budget to allow for some wiggle room.
Both options seem to have positives and negatives, as with the former, it can be very difficult to lock down every possible eventuality that can arise with some clients. I can spend an hour, a day or a week on a specification sometimes and (apart from already haven taken up a week) I can still be blindsided by something that me or the client overlooked or that we understood would work differently.
The latter option however where we leave the project somewhat open-ended is a more difficult sell initially, and doesn't really seem to address the issue and help me to be more accurate.
I am addressing this problem from an agency standpoint. So the projects, clients and even tech can vary quite a bit. We do what we can to sell what we know best, but that is always evolving and changing.
I'd really be interested to hear what anyone else does in these sorts of situations or in similar circumstances!