Try to give any proper estimations before actually starting that kind of project, when the scope is not known and there is no buy-in to spend half of the time just to plan all little details.
It is not just "give an estimation", but a whole procedure to complete.
I love these general contractor analogies because it tells me that these people don't understand software engineering.
Here's an answer for you: the vast majority of software engineering is less like repetitive contracting and more like unpredictable lab experimentation.
It is up to management and business to decide if they are skilled and willing to accept the nature of software engineering.
I kind of doubt this, but have no numbers to back me up. Do you have any numbers or actual facts to support that statement?
I don't have a measure of it but Google and Facebook did - and they found that estimation is BS and never achieved. They never institute scrum/kanban/agile nonsense as a result.
Without data, the constant and persistent failure to estimate projects - over 40 years - should be good enough data.
Estimation of tasks and projects are two completely different things.
I'm a big fan of estimating beyond two sprints, because the business' horizon is often a quarter or beyond that. Obviously initial estimates are very rough and uncertain, which you can show by using bandwidths. Then just keep updating the estimate depending on the work done, the requirements getting clearer and the technical challenges becoming known. It's a great tool to steer the scope conversation.
It also allows the engineering effort to be without day-to-day estimations. Just pick up the work that is most important and trust that people will put in their best effort.
In the real world I can demand an estimate because I'm giving them an architect's plan showing every dimension and material and the location of every counter, fitting, and electrical outlet.
You could call it a "specification document"...