Case Study
How an $8M HVAC contractor found $140K in hidden costs in 48 hours
This commercial HVAC shop was doing $8M+ in revenue. They had a full team, a packed schedule, and no idea which jobs were making them money. Here is how Level changed that.
$140K
Misallocated overhead identified in 48 hours
34 → 18 days
Invoice-to-payment cycle reduction
28
Operational data points in real-time dashboards
5%
Cash flow forecast accuracy over 6-week horizon
The Challenge
$8M in revenue. Limited visibility into job-level profit.
Limited job-level costing
The P&L showed the business was profitable overall, but overhead, drive time, callbacks, and warranty work weren't broken out at the job level. Job margins were estimated, not measured.
Inconsistent expense tracking
Expenses were categorized inconsistently in QuickBooks, the chart of accounts had grown organically over years, and reconciliations were running behind.
60-day lag on financials
By the time the books were closed and the P&L was ready, the quarter was already over. Decisions were being made on gut feel, not data.
Cash flow surprises
Seasonal dips hit without warning. Big invoices sat unpaid for weeks. AR management was reactive, and the line of credit was the backup plan.
What We Did
From blind spots to real-time clarity
We connected to their existing systems, built a data pipeline, and had answers within 48 hours. No new software to learn. No months of onboarding.
Connected to their systems
We plugged into their field service platform and QuickBooks in under an hour. No IT department needed. Read-only access to work orders, invoices, technician logs, customer records, and equipment history.
Built a unified data pipeline
We ingested 28 operational data points from both platforms and normalized everything into a single financial model. Job costs, labor hours, material spend, overhead allocation, and revenue by customer, tech, and service type.
Deployed AI-powered financial dashboards
We stood up a dashboard that answers natural-language business questions. Instead of waiting for monthly reports, Mike could ask 'Which customers are profitable this quarter?' and get an answer in seconds.
Ran a full profitability audit
Within 48 hours, we had job-level and customer-level profitability broken out with proper overhead allocation. That is when the surprises started.
Set up real-time job costing
We replaced the old close-the-books-and-hope approach with live job costing. Profitability is visible during the job, not 60 days after closeout. If a job is trending unprofitable, the team knows before it is too late.
Built a 6-week cash flow forecast
Using historical patterns, AR aging, and seasonal trends, we built a rolling cash flow forecast that predicts dips 6 weeks before they hit. Accuracy within 5%.
Results
The numbers speak for themselves
$140K
in misallocated overhead identified in the first 48 hours
Overhead was being absorbed by service calls instead of properly allocated to projects. Once we reallocated, project margins jumped and service pricing became accurate.
#1 → #3
Their largest customer by revenue was only their third most profitable
High volume masked thin margins. After overhead allocation, two mid-size accounts were significantly more profitable per dollar of revenue.
34 → 18 days
invoice-to-payment cycle reduction
AR aging dashboards, automated follow-up triggers, and priority flagging on aging invoices cut collection time nearly in half.
5% accuracy
on 6-week rolling cash flow forecasts
Built on historical seasonality, AR aging curves, and project schedules. Seasonal dips that used to be surprises are now predicted 6 weeks out.
We were doing $8M and couldn’t tell you which jobs were actually making money. Level broke it down by job, by customer, by tech. Our highest-revenue account had the thinnest margins — we just couldn’t see it until the overhead was allocated properly.
Mike H.
Owner, $8M Commercial HVAC Contractor
What the Data Revealed
What the numbers showed
Highest-revenue customer had the thinnest margins
Once overhead was properly allocated, the largest account by revenue turned out to be only their third most profitable customer. Volume was high, but callbacks, extended warranties, and gradual scope creep on service agreements had compressed margins over time. Two mid-size commercial accounts with less revenue but tighter scopes were generating better returns per dollar.
$140K in overhead was hiding in the wrong place
Overhead was being absorbed by service calls instead of allocated to construction and project work. That meant service margins looked worse than they were, and project margins looked better. The team was making pricing decisions on bad data. Service rates were too high (losing bids), and project bids were too low (winning unprofitable work). Fixing the allocation alone changed the way they priced every job going forward.
Real-time visibility changed behavior, not just reports
Once the team could see job profitability in real time, they started making different decisions. Service managers flagged jobs trending over budget before they closed out, not 60 days after. The office manager started prioritizing collections on the oldest invoices instead of the biggest ones. And Mike stopped guessing about cash flow and started planning around it. The data did not just produce better reports. It changed how the business operates day to day.
Think your numbers might be off?
Same process we ran for this case study. 48-hour turnaround. Free audit included.
No commitment. Real numbers, not generic advice.