A fictional sample bid shipped with the download. Not a price database, not a benchmark, and not advice about wages, bond rates or prevailing wage in your state.
What the sample bid shows
- Direct cost
- $15,852
- Bid total
- $22,009
- Profit
- $2,201
- Break-even bid
- $19,548
| Line | Amount |
|---|---|
| Labour: 3 × 40 h @ $28 + 32% burden | $4,435 |
| Materials incl. waste (4 lines) | $5,057 |
| Subcontractors | $5,200 |
| Equipment and other direct | $1,160 |
| Contingency 5% | $15,852 → $16,645 |
| ÷ (1 − 12% overhead − 10% profit) | $21,340 |
| Bond 1.5% + permits | $320 + $350 |
| Bid total | $22,009 |
The realised margin on that bid is 24.93% — higher than the 10% profit line, because overhead and contingency are also recovered inside the price. That is the number to quote when someone asks what you make.
Same job, five profit levels
| Profit asked | Bid total | Profit dollars |
|---|---|---|
| 0% | $19,548 | $0 |
| 5% | $20,704 | $1,035 |
| 10% | $22,009 | $2,201 |
| 15% | $23,459 | $3,519 |
| 20% | $25,098 | $5,020 |
Markup is not margin
| Markup on cost | Price on $1,000 cost | Margin you keep |
|---|---|---|
| 10% | $1,100 | 9.09% |
| 20% | $1,200 | 16.67% |
| 33.33% | $1,333 | 25.00% |
| 50% | $1,500 | 33.33% |
To keep a 25% margin you need a 33.33% markup, not 25%. The download shows both numbers side by side as you type.
- Overhead plus profit at or above 100% is rejected, not turned into an infinite bid.
- Empty direct cost, zero crew or zero hours are flagged before you print.
What is in the download
| File | What it does |
|---|---|
| index.html | The bid model: crew, materials, subs, markup, bond, sensitivity, CSV, print |
| README.md | The arithmetic and the limits of the model |
| LICENSE.txt | Single-person licence, editable for your own company |
| tests/math.test.js | 13 assertions: burden, waste, divisional markup, margin vs markup |
Rerivo preview. Sample figures only; nothing on this page is calculated live.