A first pass over the numbers of a newly acquired residential & commercial fencing contractor: the KPI set worth watching, where margin is leaking, and the two or three moves that change the trajectory.
Five numbers I'd put in front of the operating partner every month. Deltas compare August 2026 with the same month a year earlier; sparklines run the full 20-month window.
What the data says after one pass. Each item is sized — a rough dollar figure — so it can be ranked against everything else competing for attention.
Since Jan 2025
Commercial share of revenue
Blended gross margin
Commercial's share of revenue has climbed from 15% to 27% since the start of 2025, while blended gross margin has slipped from 39.5% to 34.3%.
About half of that slide is mix — commercial gross margins in the low 20s pulling down residential install (mid-30s) and repair (high-40s). The rest is genuine rate erosion, with steel and cedar costs rising faster than bid prices. The mix piece alone is worth roughly $250–300K of gross profit a year at the current run-rate.
Trailing 12 months
Angi/HomeAdvisor and paid search take 78% of the marketing budget and produce 35% of booked revenue. Referral and repeat customers take 13% of spend and produce 44%.
Angi leads close at 18% versus 44% for referrals, at a cost per booked job of ~$780 versus ~$190. A dollar sent to Angi returns about $7 of booked work; a dollar into the referral pipeline returns roughly $57.
Since Jan 2025
Booked backlog (weeks)
Crew utilization
Backlog sits at 5.1 weeks — healthy — but crew utilization has fallen from 82% at the start of 2025 to 74%. Demand is not the constraint; scheduling and crew mix are.
Revenue per crew-day has been roughly flat in nominal terms while materials rose about 4 points as a share of revenue, so idle capacity is compounding a pricing problem. Recovering six to eight utilization points is worth roughly $55–65K of gross profit a month at today's revenue per crew-day.
Since Jan 2025
Current AR aging — Aug 2026
Receivables over 60 days have gone from 6% of AR a year ago to 15% — about $180K, with roughly $70K past 90 days concentrated in three general contractors.
Residential collects on completion; the drift is entirely commercial, where Summit invoices in arrears with no progress billing and no lien discipline. This is working capital the deal model assumed would be available.
The underlying series. Hover any chart for detail; the revenue exhibit has a table view.
Commercial (aqua) is the growth story and the margin problem. Winter troughs are Dec–Feb; the spring ramp starts in March.
Commercial sits below the 30% floor this review recommends. Repair & service is the margin engine and is under-marketed.
Ordered by booked revenue per marketing dollar. The Angi row is flagged.
Two series on their own scales, shown side by side rather than forced onto one axis. Utilization trends down; revenue per crew-day is not making up the difference.
Crew utilization (%)
Revenue per crew-day ($)
Summit Fence Co. is fictional. Every figure is synthetic data I generated to behave like a lower-middle-market fencing contractor — roughly $9M in revenue, seven crews, a residential base with a growing commercial book. It is internally consistent (the margin decline falls out of the mix shift; AR scales to revenue) but it is not real, and it is not affiliated with, sourced from, or endorsed by High Fortitude or any of its companies.
The aim is to show how I'd open a newly acquired field-service business: pick the KPI set that actually predicts the P&L, model the unit economics, isolate the two or three levers that move enterprise value, and write the recommendations so an operator can act on them Monday.
I used Claude (via Claude Code) as a build partner — to pressure-test which metrics matter for a fencing business, generate and sanity-check the synthetic dataset, build the dashboard and its charts, and tighten the writing. The analytical calls — the KPI choices, which findings to surface, and how the recommendations are sized — are the parts I'd own in the role.
Stack: hand-written HTML / CSS / JS, no chart library. Deterministic seeded data generator, so the numbers are reproducible. Build time: about a weekend.