Labor Margin Audit
Sample report · Northgate Technology Group is fictional · figures illustrate format, not a real client
Labor Margin Audit · Prepared by InfoSprout

Northgate Technology Group

Retrospective labor variance across 34 closed projects, drawn directly from ConnectWise Manage.

Window
Mar 2025 – Aug 2026
Projects
34 closed
Source
ConnectWise Manage
Labor lines
1,412 read
Classified
87%
Blended rate
$135/hr
Estimated 4,180 hours quoted across the window
Actual 4,997 hours booked against those jobs
Variance +19.5% 817 hours you worked and did not quote
At your rate $110,295 817 hrs × $135 blended
Finding 01

Where the hours go

Every recurring type of work you delivered in the window, with all instances pooled. Bars run right of the line where actual hours exceeded the estimate.

Work typeVariance 
Project management34 jobs · 408 → 657 hrs
+61.0%
M365 tenant migration9 jobs · 612 → 845 hrs
+38.1%
Firewall replacement / SD-WAN11 jobs · 396 → 511 hrs
+29.0%
Onsite go-live support12 jobs · 206 → 251 hrs
+21.8%
Server / hypervisor refresh7 jobs · 588 → 704 hrs
+19.7%
Endpoint deployment14 jobs · 742 → 831 hrs
+12.0%
Switch stack refresh8 jobs · 424 → 441 hrs
+4.0%
Backup / DR implementation6 jobs · 336 → 326 hrs
−3.0%
Wireless survey + AP deploy9 jobs · 468 → 431 hrs
−7.9%
−20% 0 +20% +40% +60%
Finding 02

Project management is your single largest leak

PM ran +61% over estimate on every project in the window — 249 unquoted hours, or $33,615. It is also the most consistent overrun in the dataset: 33 of 34 jobs exceeded their PM estimate, which means this is not variance, it is a standing under-quote.

Pattern

PM hours were quoted as a flat block on 29 of 34 jobs — most often 8, 12 or 16 hours regardless of project size. Actual PM hours tracked project duration almost linearly: roughly 1.9 hours of PM per working day the project stayed open.

The five jobs where PM was quoted as a percentage of delivery hours came in at +9%, not +61%. Your own estimators already found the fix; it just was not standardised.

Finding 03

The vendor on the box changes the labor

Same work type, different manufacturer, materially different hours. This axis is usually the one that surprises people, because nothing in a PSA surfaces it.

Vendor Appears in Jobs Variance
SonicWallFirewall / SD-WAN6+41%
Microsoft 365 / AzureMigrations, identity9+34%
UbiquitiWireless, switching5+22%
FortinetFirewall / SD-WAN5+18%
DellServers, endpoints17+9%
HPE / ArubaSwitching, wireless7+3%
Cisco MerakiFirewall, switching, AP8−6%
Vendors appearing on fewer than 5 jobs are pooled into their work type rather than listed, to avoid reading a pattern into two projects.

The Meraki-versus-SonicWall spread is worth 47 percentage points on comparable firewall work. If those two lines are quoted from the same template today, you are subsidising one with the other.

Finding 04

Three jobs to re-quote first

  • M365 tenant migration. +38% across 9 jobs, and the overrun concentrates entirely in mailbox cutover and post-migration support, not in setup. Setup was quoted well. The tail was not quoted at all on 6 of 9.
  • SonicWall firewall replacement. +41% across 6 jobs. Every one of the six logged unplanned hours against site-to-site VPN re-establishment.
  • Onsite go-live support. +21.8% across 12 jobs, and the only work type where the overrun is entirely travel and wait time rather than task time.
Confidence

What we could not see

87% of your 1,412 labor lines were classified into a work type. The remaining 183 lines carried generic codes — General Labor, Project Work, Misc Onsite — with no description text to classify from. Those hours are counted in the headline total but appear in no work type, so the per-type numbers above are, if anything, conservative.

Two projects were excluded: one had actual hours but no quoted estimate, and one was a fixed-fee block with no hour breakdown on either side. Both are listed in the raw file.

Backup / DR and Switch stack refresh sit close enough to zero that at 6 and 8 jobs respectively they should be read as "no signal" rather than as accurate. They need more instances before we would act on them.

Method

How these numbers were produced

  • Source. Read-only pull from ConnectWise Manage: closed projects in the window, their labor lines, and time entries booked against them. Nothing was written back to your PSA.
  • Grouping. Labor lines were matched into work types by description, then confirmed against your service catalog. Match rate is disclosed above and in the raw file, line by line.
  • Variance. Pooled per work type as total actual over total estimated, so large jobs carry proportionate weight. Per-job medians are in the raw file where you want the distribution rather than the total.
  • Sample floors. Work types under 3 instances are not reported. Vendor breakouts require 5. These floors are why some categories you expected are absent.
  • Dollars. Variance hours × the $135 blended rate you supplied. No margin, overhead or opportunity cost is modelled — this is unquoted labor at cost of delivery, and the real figure is higher.

This is a sample. Northgate Technology Group does not exist and every figure on this page was constructed to show the format. A real audit reports your numbers, your vendors and your work types, and says plainly where the data would not support a conclusion.

Damon Baker · InfoSprout · damon@infosprout.io