Been going at it for a couple years now with consulting and freelancing. I've finally gotten good at hitting my estimates. What worked for me was to keep strict time of everything (shoutout to toggl.com, love it!), so I could learn from my mistakes.
The trouble is now though, my competition seems to be underbidding me, but in reality they're providing those ~33% estimates they will never realistically keep, while I'm at ~100% estimates. Not really sure how to relay that to clients. One of the many reasons people like me need a salesperson in front, I guess.
You're probably losing more business than you think - customers have no idea who is accurate or who is just faster, etc. They will generally go with the lowest quote regardless of other factors unless they've been burned before multiple times. Most people haven't.
I don't have a solution here though other than noticing that underbidding and then getting skilled at convincing clients to do paid extensions later actually appears to make the most money at the cost of your ethics. I'd avoid that approach, but it does seem to work for a lot of companies.
My personal approach is to quote for very bare projects with only the bare essentials (eg, poor UI design, minimum possible feature for the client to see what they're asking for, etc). This can usually be done a lot cheaper than most people think as 90% of the work is in the last 20% of the features. Then once the client has something, you can give them a quote to touch up the parts they need. Basically you split the project up into many small projects each with their own quote which helps you to estimate tasks as they appear and helps your client to minimize costs by leaving off features that are more expensive than they initially appear.
The other side of that coin is that often the clients I get via referrals have no reasonable alternatives. They often have done all business through referrals and so the alternative to me is the open market which is intimidating and has a significant barrier to entry. The end result is that we build a solid and stable client relationship that generally only gets upended if/when money runs out.
It's a great position to be in, provided you have the throughput to expand to other clients and aren't dependent upon a single client for income.
What worked for me was to keep strict time of everything (shoutout to toggl.com, love it!), so I could learn from my mistakes
Right, that was part of my method as well. I learned to keep really good notes of each part of the project. At the end of each project, I compared my "what I thought it would take" with "what it actually took". In subsequent projects, I tried to match up similar complexity items with "what it actually took" notes to remind myself of the pain.
Same! And I'm sure the reason it didn't take that long with getting good at it, was it hurts like hell when you do the 33% thing on a couple large projects, when you're on your own.
If you're really good at estimates, try to play that you can keep not only the final delivery, but also the partial ones. Something like "you can be sure I'll get 100% done because you can check when 10% is going to be done". Sure it's not a guaranteed sale - and it's harder to keep both partial estimates and totals, comparing to only totals - but it's still something.
Good luck. I found myself in a similar situation with pretty good estimates, but unable to bid low. I'd be bidding double or triple the competition. One time, I was bidding at triple, and the previous dev had failed totally. They went with another dev who bid nearly the same price. He failed, too. By that time, I was like, I'm not even going to bother - they don't want to pay what it takes, and buy failure over and over.
It's common in the fixed-bid world to deliberately underbid and charge exorbitant rates for the inevitable change orders. There's an opportunity to compete there, but maybe not an easy one.
The trouble is now though, my competition seems to be underbidding me, but in reality they're providing those ~33% estimates they will never realistically keep, while I'm at ~100% estimates. Not really sure how to relay that to clients. One of the many reasons people like me need a salesperson in front, I guess.