
What happened. The company billed more than last month but earned less on every dollar: portfolio margin fell from 16.5% at bid to 13.6% today. Almost all of the drop comes from two jobs — Wynwood Podium and Marina Repairs — that each gave up 8 points.
Why it matters. Those 2.9 points are $2.35M of profit that will never show up. On top of that, the company has billed $486K ahead of work in place, so the bank balance looks better than what the business actually earned.
What to watch. The 13-week forecast drops below the cash floor in seven weeks, five of them back to back. This is not a profitability problem, it is a collection-speed problem: $1.21M in AR past 90 days and $976K of retainage stuck.
What to do. Run an EAC review with the PMs on both problem jobs before the August close, and freeze owner distributions until projected cash clears the floor four weeks running.
Earned revenue by month (bars) against portfolio gross margin (line). Selling more while earning less per dollar is the pattern that has to break.
Revenue is up 27% since February while margin is down 2.2 points. The company is growing in volume and shrinking in profitability. Fix the estimating process before chasing more work.
Light bar: budget. Solid bar: actual.
Revenue came in 4% under budget, but EBITDA came in 58% under. The gap is not in sales, it is in job cost. A revenue miss can be made up later; margin already given away on work in place cannot.
Each red bar is a separate cause, not a restatement of the one before it. The three add up to exactly the difference between budget and actual.
Of the $1.96M shortfall, only $344K comes from selling less. The other $1.61M came from inside the business: $1.31M of margin lost in the field and $302K of operating expense over plan.
What this means for the owner: winning more work does not fix this. Even if the company had hit its full revenue budget, EBITDA would have landed at $1.76M against $3.37M planned. The lever is job cost, not sales.
Four of six jobs are running within estimate. The two that are not — Wynwood and Marina — are the only ones signed last fourth quarter, when the company bid aggressively to fill the schedule. This is not an execution problem, it is an estimating problem.
Action: review the EAC on both with the PM and document every change order performed without approval before the August close.
Gross margin at bid against margin implied by the current EAC. Each line is a job.
Percentage-of-completion on a cost-to-cost basis. Earned revenue comes from cost progress, not from what was billed.
| Job | Contract value | Cost to date | EAC | % complete | Earned revenue | Billed | Over / (Under) |
Current GP% |
|---|---|---|---|---|---|---|---|---|
| Doral Logistics Center | $28,492,000 | $19,374,600 | $24,218,200 | 80% | $22,793,647 | $23,505,900 | $712,253 | 15.0% |
| Wynwood Podium | $17,807,500 | $11,218,700 | $16,026,800 | 70% | $12,465,183 | $11,396,800 | ($1,068,383) | 10.0% |
| Broward Schools Reroof | $8,799,000 | $6,282,500 | $7,391,200 | 85% | $7,479,126 | $7,919,100 | $439,974 | 16.0% |
| Coral Springs Medical TI | $6,075,500 | $2,491,000 | $4,981,900 | 50% | $3,037,811 | $2,891,100 | ($146,711) | 18.0% |
| Hialeah Warehouse Shell | $15,084,000 | $3,936,900 | $13,123,100 | 30% | $4,525,166 | $5,279,400 | $754,234 | 13.0% |
| FTL Marina Repairs | $4,106,200 | $3,363,700 | $3,737,500 | 90% | $3,695,525 | $3,490,300 | ($205,225) | 9.0% |
| Portfolio | $80,364,200 | $46,667,400 | $69,478,700 | 67% | $53,996,458 | $54,482,600 | $486,142 | 13.5% |
Overbilling means the client has been billed for work not yet performed: that is a liability, not profit. Underbilling is the opposite — the money is spent and not yet billed. Coral Springs and Marina are $352K underbilled; that gets fixed with a pay application, not with a call to the bank.
Work performed without an approved order is cash already out the door against revenue no one has committed to in writing.
| Job | No. | Description | Amount | Status | Days open |
|---|---|---|---|---|---|
| Wynwood Podium | CO-014 | Additional slab reinforcement, level 3 | $385,500 | Performed unapproved | 41 |
| Wynwood Podium | CO-016 | Glazing specification change | $268,200 | In review | 18 |
| Wynwood Podium | CO-017 | Facade rework per RFI-088 | $222,100 | In review | 9 |
| Doral Logistics Center | CO-019 | Additional electrical service | $196,900 | Approved | — |
| Doral Logistics Center | CO-021 | Loading dock expansion | $117,300 | Performed unapproved | 26 |
| Broward Schools Reroof | CO-009 | Additional joint sealant | $75,400 | Approved | — |
| Coral Springs Medical TI | CO-004 | HVAC duct relocation | $129,900 | In review | 12 |
| Hialeah Warehouse Shell | CO-011 | Overexcavation, soft soil | $297,500 | Approved | — |
| FTL Marina Repairs | CO-007 | Deteriorated pile replacement | $62,900 | Performed unapproved | 63 |
| FTL Marina Repairs | CO-008 | Time extension, tidal delay | $92,200 | In review | 29 |
| Total open | Approved $569,800 · In review $712,400 | $1,847,900 | Unapproved $565,700 | ||
$566K performed without approval. That money is already spent and sits in no contract today. If the client does not recognize it, it comes straight out of profit. It is the single largest driver of this month’s fade.
Action: no crew starts extra work without a signed CO. All six open items get formally submitted this week with RFI backup and labor hours.
Pick a job to see where its margin is going: budget against actual cost by division, the fade broken out by cause, open change orders, and billing and retainage status.
Bid budget against current EAC. The variance by division is where you see exactly what was underestimated.
| Division | Budget | Cost to date | EAC | Variance | % over |
|---|---|---|---|---|---|
| 01 General Conditions | $2,019,600 | $1,729,066 | $2,078,200 | +$58,600 | +2.9% |
| 03 Concrete | $4,776,600 | $3,791,156 | $4,885,500 | +$108,900 | +2.3% |
| 05 Structural Steel | $6,641,200 | $5,572,545 | $6,896,700 | +$255,500 | +3.8% |
| 07 Envelope & Roofing | $3,402,300 | $2,704,606 | $3,414,900 | +$12,600 | +0.4% |
| 26 Electrical | $2,891,100 | $2,301,043 | $2,819,900 | −$71,200 | -2.5% |
| 22/23 Mechanical & Plumbing | $4,060,100 | $3,276,184 | $4,123,000 | +$62,900 | +1.5% |
| Total | $23,790,900 | $19,374,600 | $24,218,200 | +$427,380 | +1.8% |
Cost overrun broken down by root cause. Each bar is a decision or an event, not an accounting entry.
The overrun is material price, not productivity. The job is running well; the estimate simply went stale against the steel market. Fix the escalation factor on upcoming bids.
Bid budget against current EAC. The variance by division is where you see exactly what was underestimated.
| Division | Budget | Cost to date | EAC | Variance | % over |
|---|---|---|---|---|---|
| 01 General Conditions | $1,240,200 | $1,027,931 | $1,412,000 | +$171,800 | +13.9% |
| 03 Concrete & Structure | $5,258,500 | $3,982,993 | $5,866,000 | +$607,500 | +11.6% |
| 04 Masonry | $1,684,400 | $1,238,233 | $1,751,400 | +$67,000 | +4.0% |
| 07/08 Facade & Glazing | $2,891,100 | $2,229,993 | $3,217,900 | +$326,800 | +11.3% |
| 26 Electrical | $1,960,900 | $1,438,988 | $2,015,400 | +$54,500 | +2.8% |
| 09 Finishes | $1,567,100 | $1,300,562 | $1,764,000 | +$196,900 | +12.6% |
| Total | $14,602,200 | $11,218,700 | $16,026,700 | +$1,424,650 | +9.8% |
Cost overrun broken down by root cause. Each bar is a decision or an event, not an accounting entry.
Three of the four causes are controllable and none of them is the market. Structural labor was estimated 12% short, and the facade rework traces back to an RFI that took 34 days to answer. This job needs an EAC review with the PM before the August close.
Bid budget against current EAC. The variance by division is where you see exactly what was underestimated.
| Division | Budget | Cost to date | EAC | Variance | % over |
|---|---|---|---|---|---|
| 01 General Conditions | $636,900 | $585,206 | $662,000 | +$25,100 | +3.9% |
| 02 Demolition | $913,400 | $708,243 | $859,000 | −$54,400 | -6.0% |
| 07 Waterproofing & Roofing | $4,231,900 | $3,568,344 | $4,156,500 | −$75,400 | -1.8% |
| 06 Structural Carpentry | $896,700 | $736,899 | $875,700 | −$21,000 | -2.3% |
| 26 Electrical | $800,300 | $683,808 | $838,000 | +$37,700 | +4.7% |
| Total | $7,479,200 | $6,282,500 | $7,391,200 | −$87,950 | -1.2% |
Cost overrun broken down by root cause. Each bar is a decision or an event, not an accounting entry.
The only job that improved its margin. The roofing crew outperformed the production standard used at bid. That real output is worth documenting and carrying into the next reroof estimates.
Bid budget against current EAC. The variance by division is where you see exactly what was underestimated.
| Division | Budget | Cost to date | EAC | Variance | % over |
|---|---|---|---|---|---|
| 01 General Conditions | $413,800 | $224,437 | $431,600 | +$17,800 | +4.3% |
| 09 Interior Finishes | $1,617,300 | $774,270 | $1,596,400 | −$20,900 | -1.3% |
| 22/23 Mechanical & Plumbing | $1,307,300 | $672,876 | $1,332,400 | +$25,100 | +1.9% |
| 26 Electrical & Data | $1,110,400 | $564,163 | $1,139,700 | +$29,300 | +2.6% |
| 08 Doors & Glazing | $502,800 | $255,254 | $481,900 | −$20,900 | -4.2% |
| Total | $4,951,600 | $2,491,000 | $4,982,000 | +$30,368 | +0.6% |
Cost overrun broken down by root cause. Each bar is a decision or an event, not an accounting entry.
Healthy job, within range. What to watch is not the margin but that only 71% of cost is committed: there is still price exposure in mechanical and electrical.
Bid budget against current EAC. The variance by division is where you see exactly what was underestimated.
| Division | Budget | Cost to date | EAC | Variance | % over |
|---|---|---|---|---|---|
| 02 Earthwork | $2,036,300 | $728,140 | $2,333,800 | +$297,500 | +14.6% |
| 03 Concrete & Slab | $4,575,500 | $1,310,741 | $4,504,300 | −$71,200 | -1.6% |
| 05 Structural Steel | $3,540,600 | $1,080,399 | $3,565,700 | +$25,100 | +0.7% |
| 07 Envelope | $1,684,400 | $504,005 | $1,697,000 | +$12,600 | +0.7% |
| 01 General Conditions | $1,060,100 | $313,615 | $1,022,400 | −$37,700 | -3.6% |
| Total | $12,896,900 | $3,936,900 | $13,123,200 | +$226,280 | +1.8% |
Cost overrun broken down by root cause. Each bar is a decision or an event, not an accounting entry.
The overrun landed in earthwork and is now behind us. What matters is that only 62% of cost is committed with the job at 30% complete: there is room to negotiate subcontracts and win back part of the point and a half lost.
Bid budget against current EAC. The variance by division is where you see exactly what was underestimated.
| Division | Budget | Cost to date | EAC | Variance | % over |
|---|---|---|---|---|---|
| 02 Piles & Substructure | $1,430,500 | $1,502,070 | $1,604,800 | +$174,300 | +12.2% |
| 03 Marine Concrete | $859,000 | $797,386 | $913,400 | +$54,400 | +6.3% |
| 05 Hardware & Framing | $494,400 | $472,309 | $519,600 | +$25,200 | +5.1% |
| 01 General Conditions | $410,600 | $447,988 | $502,800 | +$92,200 | +22.5% |
| 09 Finishes & Protection | $213,700 | $143,947 | $196,900 | −$16,800 | -7.9% |
| Total | $3,408,200 | $3,363,700 | $3,737,500 | +$329,354 | +9.7% |
Cost overrun broken down by root cause. Each bar is a decision or an event, not an accounting entry.
The hidden conditions were claimable and were not claimed in time. On top of that, $494K of retainage is held up behind a punch list open since March. Closing that punch list is the highest immediate-return action in the whole portfolio.
The company is profitable and still runs short of cash in seven of the next thirteen weeks. The available credit line ($3.77M) covers the dip, but using it to finance slow collections is expensive and eats into bonding capacity.
Action: collect the $1.21M of AR past 90 days and close out the Marina punch list to release $494K of retainage. That alone erases the dip without touching the line.
Week-ending cash against the $3.14M operating floor.
Marina Repairs has $494K held up by a punch list open since March. It is the easiest item on the balance sheet to free up.
The $43.8M backlog looks healthy on volume but carries only 14.4% margin — below the 16% the business needs to cover fixed cost and debt service. A big backlog at thin margin is bad news dressed up as good news.
Action: raise the bid margin floor to 17% while backlog GP% stays under 15%, even if that means losing a few bids.
The surety looks at working capital and net worth. Every dollar distributed to the owner reduces how much work the company can chase.
Each job's share of total contract value.
Doral Logistics is 35% of the portfolio. If that job slips or goes into dispute, it drags the whole company with it. This is the same concentration risk a bank weighs before renewing the line.
Every metric carries its formula, source, target, and the recommended action when it is out of range. Click any one for the full definition. The six in red are the ones that need a decision this month.
(Contract value − EAC) ÷ Contract valueBid GP% − current EAC GP%Billed to date − Earned revenueAccounts receivable ÷ Average daily revenueCash ÷ Average daily operating outflowRetainage receivable ÷ Total accounts receivableGross profit embedded in backlog ÷ Contracted backlogContracted backlog ÷ Average monthly revenueNew contracts booked in quarter ÷ Revenue earned in quarterBonded backlog ÷ Surety aggregate limitCurrent assets ÷ Current liabilitiesGross profit − Operating expenseIllustrative data. The WIP schedule is the source of everything else in this report: revenue, margin, over/underbillings, cash forecast, and bonding capacity all come off the same six jobs. Prepared by Compass Planning Group from the close provided by management; this is not an audit or a review.