me too, I'm always expected to pull numbers out of thin air when they want to know how much something will cost them. If you give them a number that you later find out was low they seem to expect you to honor it anyway, so those off the top estimates anymore are usually inflated just in case. Easier to ask for less later on than to ask for more.
I NEVER give on-site estimates unless I'm 100% certain of the cost for that exact reason.
Opening prices, when calculated for exact material quantities and not just over-inflated to cover your butt, can vary greatly depending on distance, quality of product utilized, etc.
I always stress that I'll come out for a site visit, introduce myself, and discuss the work for free. I try to limit each visit to an hour. During which time I take measurements, think about raceway runs, etc.
They always ask for a number at the end of the visit and I firmly tell them I need 24-48 hours and I will send them a written estimate. They don't like that and want a number NOW because that's the world we live in. I want everything NOW!
I've had to learn the hard way that you just gotta be firm and insist on taking the time to go home, do a little research, and compose a written estimate with terms and all.