You submitted 47 bids last year. You won 11. Your accountant says the company made money. But which of those 11 projects actually made the margin you estimated? And of the 36 you lost — were you too high, too low, or bidding the wrong work entirely? If you can’t answer those questions from a single report, your construction bid tracking system is a filing cabinet, not a management tool. That gap between “we bid it” and “we know what happened” is where six figures of annual profit disappear for general contractors doing $2M-$10M in revenue.
For a complete picture of construction financial management, start with our construction contractor bookkeeping guide. This post goes deep on one critical piece: how to track bids, measure win rates, and connect estimating accuracy to actual project profitability — so every future bid gets sharper.
The typical GC has a bid log. It’s a spreadsheet or a folder in their estimating software with project name, bid date, amount, and outcome (won/lost). That’s tracking. It’s not analysis.
Analysis means connecting the bid to the outcome: Did the $850,000 school renovation you won at 25% markup actually deliver 25% markup — or did it erode to 14% after change orders, weather delays, and a drywall sub who walked off the job? Did the 36 bids you lost share a pattern — all public work under $500K where you’re competing against eight other GCs?
Construction bid tracking profitability requires closing the loop. The bid is the hypothesis. The job cost report is the experiment. The post-mortem is the conclusion. Without all three, you’re guessing on every future estimate.
Key insight: The average general contractor’s bid-to-win ratio is 20-35%, according to the Associated General Contractors of America (AGC). That means 65-80% of your estimating labor produces zero revenue. Making that 65-80% informative — not just wasted — is the entire point of bid tracking.
Whether you use a spreadsheet, a CRM, or construction-specific software like BuilderTrend, Procore, or CoConstruct, your bid tracker needs to capture more than win/loss. Here’s the minimum viable pipeline:
| Field | Example | Why It Matters |
|---|---|---|
| Project name | Lincoln Elementary Renovation | Identification |
| Client type | School district (public) | Win rate varies by segment |
| Bid date | 2026-02-15 | Time-to-decision tracking |
| Bid amount | $850,000 | Volume analysis |
| Estimated markup % | 25% | Profitability hypothesis |
| Estimated margin % | 20% | What you actually keep (see below) |
| Number of bidders | 6 | Competition density |
| Result | Won | Win/loss tracking |
| Decision date | 2026-03-01 | Sales cycle length |
| If lost — reason | N/A | Pattern recognition |
| Actual final contract | $867,500 | Change orders change the number |
| Actual gross profit | $148,200 | The truth |
| Actual margin % | 17.1% | Variance from estimate |
The last three columns are what separates a bid log from a profitability system. Most contractors fill in the first 10 fields and never come back. The ones who fill in all 13 learn which project types, client types, and bid sizes consistently deliver margin — and which ones consistently erode.
For GCs under $3M in revenue running fewer than 30 active bids per year, a well-structured spreadsheet works fine. The key is discipline: someone updates the actual results after every project closes. A spreadsheet nobody maintains is worse than no spreadsheet because it creates false confidence.
For GCs above $3M or running 50+ bids per year, dedicated estimating software (STACK, PlanSwift, Sage Estimating) or construction management platforms (Procore, BuilderTrend) start paying for themselves — not because the software is magic, but because it forces the workflow. You can’t close a project without entering final costs. The software nags you. Spreadsheets don’t.
This is the single most common financial mistake in construction estimating, and it costs real money on every bid.
Markup is calculated on cost. Margin is calculated on revenue. They are not the same number, and using them interchangeably will make you think you’re earning more than you are.
Here’s the math on that $850,000 school renovation:
| Metric | Formula | Calculation | Result |
|---|---|---|---|
| Estimated cost | — | — | $680,000 |
| Markup (25%) | Cost × Markup % | $680,000 × 0.25 | $170,000 |
| Bid price | Cost + Markup | $680,000 + $170,000 | $850,000 |
| Margin | Profit ÷ Revenue | $170,000 ÷ $850,000 | 20.0% |
You applied 25% markup. Your actual margin is 20%. That’s a 5-percentage-point gap that exists on every single bid you submit. On $4M in annual revenue, confusing 25% margin for 25% markup means you think you’re earning $1,000,000 in gross profit when you’re actually earning $800,000. That’s a $200,000 perception gap.
The conversion formulas:
| Markup % | Actual Margin % | The Gap |
|---|---|---|
| 10% | 9.1% | 0.9 pts |
| 15% | 13.0% | 2.0 pts |
| 20% | 16.7% | 3.3 pts |
| 25% | 20.0% | 5.0 pts |
| 30% | 23.1% | 6.9 pts |
| 35% | 25.9% | 9.1 pts |
| 50% | 33.3% | 16.7 pts |
The gap widens as markup increases. A specialty contractor bidding at 50% markup is not earning 50% margin — they’re earning 33.3%. If their overhead runs at 35% of revenue, they’re losing money on every job while their bid sheet says they’re profitable.
Pro Tip: Set a company standard: all internal discussions use margin (profit ÷ revenue). Markup is for the estimating calculation only. When your project manager says “we’re at 25% on that job,” everyone in the room should mean the same thing. Misalignment here causes real disputes about project health.
Bid tracking only becomes powerful when you measure estimating accuracy — the gap between what you bid and what actually happened.
For every completed project, calculate:
Estimating Variance = (Actual Cost – Estimated Cost) ÷ Estimated Cost × 100
An $850,000 project that you estimated at $680,000 in cost but actually cost $718,000 has an estimating variance of +5.6%. That means your estimate was 5.6% too low — and your margin shrank from 20% to 15.5%.
Track this variance by:
After 15-20 completed projects with variance tracking, you’ll have a statistical picture of your estimating bias. Most GCs find they underestimate labor by 8-12% and materials by 3-5%, with subcontractor costs being the most accurate (because subs provide fixed bids). That data lets you build correction factors into future estimates — not guessing, but calibrating.
Reference resources like RSMeans data can benchmark your unit costs against industry averages, but your own historical variance data is always more valuable than national benchmarks. Your labor market, your crews, your subs — that’s what determines your actual costs.
Change orders are the single biggest variable in construction project profitability. A well-managed change order process can be the most profitable part of a project. A poorly managed one can turn a profitable bid into a loss.
Typical change order markup ranges:
On that $850,000 school renovation, assume $67,500 in change orders (8% of original contract — common for renovation work). If you’re marking up change order work at 20%, that’s $13,500 in additional gross profit. But here’s what actually happens to most contractors:
The fix is operational, not financial: every change order gets a separate cost code before work begins. Your field superintendent opens a new cost code in the job, and all labor and materials for that change hit the new code. When you price the change order, you have actual costs, not estimates of estimates.
Important: Track change order profitability separately from base contract profitability. A project that loses 3% margin on the base contract but makes 22% on change orders is a fundamentally different animal than one making 10% across the board. The first one has an estimating problem. The second one is healthy.
The job cost report is the single most important financial report in construction. Your P&L tells you about the company. The job cost report tells you about the project — while there’s still time to fix it.
A proper job cost report has three columns per cost category:
The critical number is Estimated Final Cost = Actual to Date + ETC. Compare that to the budget, and you know whether the project is on track, trending over, or coming in under. This is the number your WIP (Work in Progress) schedule feeds on, and it’s how your accountant calculates revenue recognition under the percentage-of-completion method.
Here’s what the job cost report looks like for our school renovation at the 60% completion mark:
| Cost Category | Budget | Actual to Date | ETC | Est. Final | Variance |
|---|---|---|---|---|---|
| Labor | $204,000 | $138,000 | $84,000 | $222,000 | ($18,000) |
| Materials | $190,400 | $108,000 | $78,000 | $186,000 | $4,400 |
| Subcontractors | $217,600 | $126,000 | $88,000 | $214,000 | $3,600 |
| Equipment | $40,800 | $22,000 | $16,000 | $38,000 | $2,800 |
| Overhead allocation | $27,200 | $16,000 | $12,000 | $28,000 | ($800) |
| Total cost | $680,000 | $410,000 | $278,000 | $688,000 | ($8,000) |
| Gross profit | $170,000 | — | — | $162,000 | ($8,000) |
| Margin | 20.0% | — | — | 19.1% | -0.9 pts |
This project is trending $8,000 over budget — almost entirely in labor. At $850K revenue, margin is projected at 19.1% instead of 20.0%. That’s manageable, but it signals a labor productivity issue the superintendent needs to address now, not at project close.
The ETC is the hard part. Most project managers sandbag the ETC early (reporting higher remaining costs to look good later) or ignore it entirely (leaving the ETC at the original budget minus actual, which assumes zero variance going forward). Neither helps. The ETC should be a genuine re-estimate of remaining work, updated at least monthly for projects over $500K.
Every completed project should get a post-mortem — a 30-minute review within two weeks of substantial completion. Not a blame session. A data session. Here’s the template:
| Post-Mortem Field | Data |
|---|---|
| Project name | Lincoln Elementary Renovation |
| Original bid | $850,000 |
| Final contract (with COs) | $917,500 |
| Total change orders | $67,500 (7 COs) |
| Original estimated cost | $680,000 |
| Actual total cost | $718,400 |
| Gross profit | $199,100 |
| Actual margin | 21.7% |
| Estimated margin at bid | 20.0% |
| Variance | +1.7 pts (favorable) |
| Largest cost overrun category | Labor (+$18,000 / +8.8%) |
| Largest cost savings category | Materials (-$4,400 / -2.3%) |
| Change order margin | 28.5% (vs. 20% base contract) |
| Key lessons | Labor underestimated on demolition phase; drywall sub pricing was accurate; change order process worked well — all 7 approved before work started |
| Would we bid this again? | Yes — renovation work for school districts is consistent and change order process is clean |
That last row is the most important question in construction bid tracking. After 20-30 post-mortems, you’ll have a clear picture of which project types, clients, and bid sizes you should be chasing — and which ones to stop bidding.
Once you’ve accumulated 12-18 months of closed-loop bid data (bid → job cost → post-mortem), you can run a portfolio analysis that most GCs never see. Sort your completed projects by:
Most GCs discover that one or two project types deliver 60-70% of their total profit, while another type that looks good on paper consistently underperforms. Common patterns:
The strategic insight is this: if your data shows that school renovations in the $600K-$1M range deliver 19-22% margins with low variance and fast payment, and warehouse tenant improvements in the $200K-$400K range deliver 8-14% margins with high variance and 90-day payment cycles — you should be aggressively pursuing school renovation work and letting someone else fight for the warehouse TIs.
Pro Tip: Calculate profit per estimating hour by project type. If a $900K school renovation takes 40 hours to estimate and delivers $180K in gross profit, that’s $4,500 per estimating hour. If a $250K warehouse TI takes 25 hours to estimate and delivers $25K in gross profit, that’s $1,000 per estimating hour. The school renovation is 4.5x more productive use of your estimating capacity — even before considering the lower win rate on hard-bid warehouse work.
Bid tracking data is only useful if it connects to your accounting system. The job cost report lives in QuickBooks, Sage, or Foundation — wherever your books are. The bid log might live in a spreadsheet or in Procore. The post-mortem might be a PDF in a project folder. If these three systems don’t talk to each other, someone is manually copying numbers between them, and manual copying introduces errors.
The minimum integration:
This closed-loop system is what separates contractors who get more profitable every year from those who repeat the same estimating mistakes indefinitely. If your bookkeeping isn’t structured to support job costing and WIP reporting, consider getting a free assessment from our team to evaluate where the gaps are.
You don’t need to overhaul your entire estimating process at once. Start with these three actions:
These three steps take less than four hours total and will give you more insight into your estimating accuracy than most contractors gather in a year.
Get a free quote and see how Steph's Books can save you 40-60% vs hiring in-house.