Was just going to say the same thing, you have to know when to estimate and when to quote. I stick to prices in my quote, even if I underbid them. When I have any doubt about a job, such as when unseen variables can drastically change the scope of a project, I write some caveat language into my service agreements and describe to my customer what can potentially alter the price of the project.
For example, we do a lot of regrading, seeding, or sodding projects. I give folks a quoted price on the basis that we do not encounter any unforeseen crap in the soil (buried concrete, foundations, timbers, tree roots, construction waste, etc). I also write language into the quote that if any unexpected stuff is hidden in the soil that can alter the scope of the project there will be an additional fee to deal with it.
Quite a number of times that language in the quote saved me from huge losses or angry clients trying to hold me to a fixed number when we encountered something that is about impossible to quote prior to beginning the work. If you have any doubt because there may be a variable that is impossible to quote with 100% certainty, write something into your contract to cover your behind and/or discuss it with the clients before proceeding.