A demonstration on sample data
The estimate you should not have written.
Everything sold to estimators makes them faster. Faster takeoff, faster quantities, faster proposals. None of it touches the decision that costs the money, which is taken before any of that starts: whether this one is worth pricing at all.
Run it on
You already know one of these numbers.
Who gives you work, and what the work is worth.
Every contractor on the bid log, placed by how often they hand you a job against what those jobs actually earned once they were built. A hit-rate report shows the horizontal axis only, which is why anything low on the vertical one stays invisible however often they say yes.
The list on the desk this morning.
| Call | Contractor | Scope | Value | Due | Est. hours | You win | It earns | Worth | Per hour |
|---|
The whole log.
| Contractor | Bids | Win rate | Revenue | Realized margin | Worth per bid | Per estimator hour |
|---|
Every job won from them, placed by what it actually earned. Crimson is a job that lost money.
The arithmetic
What it read
| Date | Scope | Bid | Result | Earned |
|---|
Run it on your own bid log.
You already keep one, because bonding wants it and so does the Monday meeting. It needs three columns: who invited you, what you bid, and whether you got it. A date, a project type and an actual cost make it much better.
The file never leaves this page. No upload, no server. The reading happens in your browser and disappears when you close the tab.
Without an actual-cost column only half of this works. The win-rate half is real; the margin half is the part that changes your mind, and it needs job costing.
or drop it here
The two things a bid log never carries. Change them and re-read the file; every number on the page moves with them.
What this advice costs you.
Every estimator reading this has the same objection, and it arrives in the first ninety seconds: if I stop bidding them, who absorbs my overhead? It is the right objection and the page should answer it before you have to.
Declining what this page marks is not free. It is a decision to run a smaller, better book, and the top line goes down first while the fixed costs stay exactly where they are.
The estimating figure is not cash. An estimator on salary costs the same whether or not they write the bid, so the hours are real and the dollars are only real if the time goes somewhere else. That is why the freed hours are reported beside the money.
And it turns on what "actual cost" means in your file. If your job costs are direct only, a job at minus two per cent is genuinely destroying capital. If they carry allocated overhead, that same job is still contributing to it and declining the work makes things worse. This page cannot tell which your column is. You can.
How it decides.
One formula, applied per contractor, with a floor under it.
- 1Group the log by who invited you. A contractor is a different business to bid to. How often they award you work and what that work is worth once it is built are two separate facts, and both belong to them rather than to you.
- 2Work out what one bid is worth before it is written. win rate × average earned per win − cost of the estimate. That is the whole model. It is arithmetic, not a prediction, and every term is measured from the log.
- 3Refuse to speak without enough behind it. A rate off four bids is noise. Below eight bids a contractor is marked unreadable, and below three wins the margin half stays blank rather than being invented. The one exception is a contractor with plenty of bids and no wins at all, which is not missing data. It is the most certain row in the table.
- 4Score the list on the desk against it. Each invitation inherits the record of the contractor who sent it and the scope it belongs to. The ones worth less than the time they take to price get marked, with the hours you get back for declining.
Where this does not work.
Worth knowing before anybody builds on it.
Without actual costs on the won jobs, half of this is unavailable. Win rate alone tells you who says yes, which is the question that was never the problem.
A contractor who was brutal for two years may have replaced the project manager who caused it. This ranks the record, and the record can be out of date.
Some bids are written to stay on a list, and that can be worth doing at a loss. The number tells you what it costs. It does not tell you it is wrong.
Declining work shrinks the top line immediately and the fixed costs do not move. The section above puts a number on that for this book. Whether the trade is worth making is a judgement about your own cost base, not something a bid log can answer.
Under roughly a hundred bids most contractors will fall below the floor and the page will mostly say so. That is the correct answer, and it is not a satisfying one.
This took a day.
It is a demonstration, not a product. The version that matters reads the bid log where it already lives, knows which project managers are the expensive ones, and puts the number in front of whoever decides, on the morning the invitation lands.
If you want to know what this would say about your log, send me the question.
Caspase LLC · Virginia · caspase.ai