Construction foremen use real-time labor tracking to identify margin erosion, optimize bidding, and help subcontractors compete against industry consolidation.
Andrew Grosser
June 10, 2026 • 11 min read
Construction foremen use real-time labor tracking to identify margin erosion, optimize bidding, and help subcontractors compete against industry consolidation.
You're running a three-man electrical crew on a commercial tenant improvement job. The bid estimated 240 labor hours at $65/hour. By day four, you've burned 112 hours and you're only 35% complete. That's a 17% labor overrun that will wipe out your margin before the job finishes. You spot it immediately because you track daily labor against the estimate. The project manager won't see it for another two weeks when payroll closes. By then, the damage is done.
This is the reality for construction labor foremen and crew leads at subcontractor firms in 2026. The big general contractors are consolidating—merging with competitors, acquiring smaller firms, and squeezing bid prices tighter every quarter. Your $8M electrical subcontracting firm is caught between shrinking margins and rising labor costs. The GCs have sophisticated estimating software and data analytics teams. You have a spreadsheet and gut instinct.
Sourcetable's AI data analyst is free to try. Sign up here.
But you have something they don't: real-time visibility into what's actually happening on the jobsite. You're the first person to know when a bid underestimated conduit runs, when soil conditions slow trenching, or when a GC's coordination failures cost you three hours of standing time. That field intelligence is the competitive edge—if you can capture it, quantify it, and feed it back into your estimating and GC selection process.
Labor cost variance shows up in real-time on the jobsite, not in the accounting system two weeks later. As a foreman, you know by Tuesday afternoon whether Friday's production estimate was realistic. You see the crew standing around waiting for the plumber to finish. You watch an apprentice spend 90 minutes troubleshooting a panel that should have taken 20 minutes. You measure actual conduit footage installed per hour against what the estimator assumed.
Here's the typical lag in cost visibility at a subcontractor firm:
| Stakeholder | When They See Cost Variance | Time Lag from Occurrence | Ability to Correct |
|---|---|---|---|
| Foreman | Same day or next morning | 0-24 hours | High—can adjust crew, methods, schedule |
| Project Manager | Weekly progress meeting | 3-7 days | Medium—can request change orders, adjust remaining scope |
| Estimator | Post-job cost review (if done) | 30-90 days | Low—can only adjust future bids |
| Owner | Monthly financial close | 15-45 days | Very Low—damage already done |
That time lag is where profit disappears. A $185,000 electrical job with 8% estimated margin ($14,800 profit) can turn into a 2% actual margin ($3,700 profit) because of labor overruns that nobody quantified until the job closed. The foreman knew on day three that the panel layout was more complex than estimated. The PM didn't find out until week two. The estimator never got the feedback for the next similar bid.
The big GCs have integrated project management systems that track labor hours by cost code in near-real-time. They see variance daily. Your typical subcontractor is still running paper timecards or basic time-tracking apps that don't connect to the estimate. You're flying blind while they're using instruments.
Before we talk about AI shortcuts, here's how to build a functional labor tracking system using a spreadsheet. This is what successful foremen do manually when their company doesn't have integrated software.
Take the job estimate and create a detailed task breakdown. For an electrical rough-in on a 12,000 SF office buildout, you might have:
| Task Code | Task Description | Estimated Hours | Crew Size | Estimated Days |
|---|---|---|---|---|
| E-101 | Conduit runs—ceiling | 48 | 2 | 3.0 |
| E-102 | Conduit runs—walls | 32 | 2 | 2.0 |
| E-103 | Pull wire—power circuits | 40 | 3 | 1.7 |
| E-104 | Pull wire—data/comm | 24 | 2 | 1.5 |
| E-105 | Panel installation | 16 | 2 | 1.0 |
| E-106 | Device rough-in (boxes, supports) | 56 | 2 | 3.5 |
| E-107 | Grounding and bonding | 24 | 2 | 1.5 |
Total estimated hours: 240. At $65/hour average labor burden, that's $15,600 in labor cost. Your contract price for labor is $21,840 (includes markup), so your target labor margin is $6,240 (40% gross margin on labor).
Every day, record actual hours worked by task code. Use a simple spreadsheet with columns: Date | Task Code | Crew Members | Hours Worked | % Complete (Visual Estimate) | Notes.
Example from Day 4 on the job above:
| Date | Task Code | Crew | Hours | % Complete | Notes |
|---|---|---|---|---|---|
| 6/6/26 | E-101 | Mike, Carlos | 16 | 65% | Ceiling grid not level—had to shim 40% of hangers |
| 6/6/26 | E-102 | Sarah, Tom | 14 | 40% | Waited 2 hrs for framer to finish partition walls |
Use this formula to calculate labor variance for each task:
Projected Total Hours = (Actual Hours to Date) / (% Complete)
Hour Variance = Projected Total Hours - Estimated Hours
Cost Variance = Hour Variance × $65/hour
Variance % = (Hour Variance / Estimated Hours) × 100
For task E-101 (ceiling conduit) on day 4:
That's a 22% labor overrun on one task because the ceiling grid wasn't level and you had to shim hangers. The estimator assumed standard conditions. You're now projecting $682 in lost margin on this task alone. Multiply that across seven tasks and you can see where a profitable job turns into a break-even.
This is the critical step most foremen skip. Don't just track the variance—document why it happened and who's responsible. Create a simple classification system:
| Root Cause Category | Definition | Responsible Party | Recoverable? |
|---|---|---|---|
| Estimating Error | Bid didn't account for actual site conditions or scope | Internal (Estimator) | No—learn for next bid |
| GC Coordination Failure | Other trades late, access blocked, missing info | External (GC) | Maybe—document for change order |
| Design Issue | Plans incomplete, conflicting, or unbuildable as drawn | External (Architect/Engineer) | Yes—RFI and change order |
| Crew Inefficiency | Slow work, rework, mistakes, training gaps | Internal (Foreman/Crew) | No—coaching and training |
| Material/Equipment Delay | Wrong material delivered, equipment breakdown | Internal or External | Maybe—depends on contract terms |
| Scope Creep | Extra work not in original scope | External (Owner/GC) | Yes—change order |
For the ceiling conduit overrun, you'd classify it as 'GC Coordination Failure'—the framing contractor left the ceiling grid out of level, forcing you to shim every hanger. That's not your estimator's fault and it's not your crew's fault. That's a GC coordination issue that should trigger a change order request for the extra 10.5 hours.
For the wall conduit delay (2 hours standing time waiting for framer), that's also 'GC Coordination Failure.' Document it. Take photos with timestamps. That's $130 in recoverable costs ($65/hour × 2 hours).
The real value of labor tracking isn't just catching overruns on the current job—it's feeding actual production data back to your estimators so future bids are more accurate. This is where small subcontractors can compete with the big players who have decades of historical cost data.
Here's the feedback loop that works:
At the end of each job, calculate your actual production rates for key tasks. Use this format:
Production Rate = Total Quantity Installed / Total Labor Hours
For the ceiling conduit task (E-101), let's say you installed 840 linear feet of 3/4" EMT conduit in 58.5 hours (actual, not estimated).
Production Rate = 840 LF / 58.5 hours = 14.4 LF per labor hour
Your estimator originally assumed 17.5 LF per hour (840 LF / 48 hours estimated). That's an 18% optimistic assumption. If your estimator had used 14.4 LF per hour based on past actual performance, the bid would have been 10.5 hours higher ($682 more in labor cost), and you would have either priced it correctly or declined the job as unprofitable.
Build a simple database with these columns:
| Task Type | Job Name | GC | Building Type | Quantity | Unit | Labor Hours | Production Rate | Notes/Conditions |
|---|---|---|---|---|---|---|---|---|
| Conduit—ceiling | Oak Street Office | Turner Construction | Office TI | 840 | LF | 58.5 | 14.4 LF/hr | Unlevel grid, 40% shims required |
| Conduit—ceiling | Maple Plaza Retail | Swinerton | Retail | 620 | LF | 38.0 | 16.3 LF/hr | Open ceiling, good access |
| Conduit—ceiling | Pine Medical Clinic | DPR | Medical | 1,120 | LF | 89.0 | 12.6 LF/hr | Tight plenum, infection control protocols |
After three jobs, you have actual data showing ceiling conduit installation ranges from 12.6 to 16.3 LF per hour depending on conditions. Your estimator can now use 13 LF/hour for medical jobs with tight plenums, 14.5 LF/hour for standard office TI with coordination issues, and 16 LF/hour for open retail ceilings with good access. That's a 30% spread in labor cost depending on job type.
Track labor variance by general contractor. Some GCs run tight schedules with good coordination. Others are chronically disorganized, causing your crew to wait, work around other trades, or return for multiple mobilizations.
Calculate average labor variance by GC across all jobs:
| General Contractor | Jobs Completed | Avg Labor Variance | Avg Margin Impact | Coordination Quality |
|---|---|---|---|---|
| Turner Construction | 8 | +3.2% | -$1,240 per job | Good—tight schedules, weekly coord meetings |
| Swinerton | 6 | -1.8% | +$890 per job | Excellent—BIM coordination, proactive |
| DPR | 5 | +0.5% | -$220 per job | Good—collaborative, responsive PMs |
| Acme Builders | 12 | +14.7% | -$5,680 per job | Poor—late schedules, no coordination, constant conflicts |
| Metro Construction | 4 | +8.3% | -$3,100 per job | Fair—inexperienced PMs, reactive not proactive |
This data tells you that working for Acme Builders costs you an average of $5,680 per job in labor overruns due to their poor coordination. That's not your estimator's fault—that's a systemic GC problem. You have three options: (1) stop bidding Acme jobs, (2) add a 15% coordination contingency to all Acme bids, or (3) negotiate better contract terms with Acme that include compensation for standby time.
Meanwhile, Swinerton jobs consistently come in under budget because they run tight coordination and use BIM clash detection before you mobilize. You should prioritize Swinerton bids and potentially offer them better pricing because you know the job will run smoothly.
Everything described above works. Hundreds of successful foremen do it manually with spreadsheets. But it takes 15-30 minutes per day to log hours, calculate variance, and update projections. Over a 20-day job, that's 5-10 hours of administrative time—time you're not spending supervising the crew or coordinating with other trades.
This is where an AI-powered spreadsheet like Sourcetable changes the game. Instead of manually calculating variance formulas and building pivot tables to analyze GC performance, you connect your timecard data and ask questions in plain English.
Upload your daily timecard data (Date, Employee, Task Code, Hours) and your estimate breakdown (Task Code, Estimated Hours, Estimated Cost). Then ask:
"Show me labor variance by task code—actual hours vs estimated, with projected overrun"
Sourcetable's AI immediately calculates projected total hours based on percent complete, compares to estimate, and highlights tasks running over budget. You get the same analysis that took 30 minutes manually—in 5 seconds. It automatically creates a variance table with color-coded flags for tasks >10% over budget.
Add a notes column to your daily log with free-text descriptions of delays or issues. Ask the AI:
"Classify each day's notes by root cause category: estimating error, GC coordination, design issue, crew inefficiency, material delay, or scope creep"
The AI reads your notes ("Waited 2 hrs for framer," "Ceiling grid not level," "Panel location changed by architect") and automatically categorizes them. It then summarizes: "18 hours lost to GC coordination failures, 6 hours to design changes, 4 hours to crew rework." That summary becomes your change order backup documentation.
Once you have six months of job data with GC names attached, ask:
"Calculate average labor variance by general contractor, ranked from best to worst"
Sourcetable aggregates every job by GC, calculates average variance, and ranks them. You instantly see which GCs consistently cause overruns and which ones run tight jobs. That analysis would take an hour in Excel with pivot tables and VLOOKUP formulas. The AI does it in one sentence.
Ask the AI to calculate production rates from your completed job data:
"Calculate production rate for each task type (quantity installed / labor hours) and show average, min, and max across all jobs"
The AI builds the production rate database automatically, showing you that ceiling conduit ranges from 12.6 to 16.3 LF per hour with an average of 14.1 LF per hour. It flags outliers and asks if you want to exclude them (maybe one job had unusual conditions). Your estimator now has real data to use instead of guessing or relying on outdated RS Means unit costs.
Not all work is equally profitable. A $50,000 retail tenant improvement might have better margin than a $180,000 medical office buildout, even though the medical job is larger. The difference comes down to labor efficiency, coordination complexity, and change order recovery rate.
Track margin by job type using this classification:
| Job Type | Avg Contract Value | Avg Labor Hours | Avg Labor Variance | Avg Gross Margin | Margin Rank |
|---|---|---|---|---|---|
| Retail TI (shell) | $68,000 | 420 | -2.1% | 38.2% | 1 (Best) |
| Office TI (standard) | $92,000 | 580 | +4.8% | 32.1% | 3 |
| Office TI (high-end) | $145,000 | 890 | +2.2% | 35.6% | 2 |
| Medical/Dental | $178,000 | 1,240 | +11.3% | 24.8% | 5 |
| Industrial/Warehouse | $210,000 | 980 | +1.8% | 36.4% | 2 |
| Restaurant | $85,000 | 520 | +9.7% | 26.3% | 4 |
This data shows that retail shell TI work is your most profitable job type—lowest labor variance, highest margin. Medical and restaurant work consistently run over budget due to complex coordination (medical) and design changes (restaurants). Even though medical jobs are larger, they're less profitable per dollar of revenue.
Your strategic response: prioritize retail and industrial bids, add 12% contingency to medical bids (or decline them), and be selective about restaurant work unless the GC has a track record of good coordination.
When a bid invitation comes in, you have 48-72 hours to decide whether to invest the time in preparing a proposal. Most subcontractors bid everything that comes across the desk, hoping to win enough work to keep crews busy. That's a losing strategy when the big GCs are squeezing prices.
Use your labor data to make smarter bid/no-bid decisions. Create a simple scoring system:
| Factor | Weight | Scoring Criteria |
|---|---|---|
| GC Performance History | 30% | +10 if avg variance <5%, 0 if 5-10%, -10 if >10% |
| Job Type Profitability | 25% | +10 if top-2 margin category, 0 if middle, -10 if bottom-2 |
| Schedule Reasonableness | 20% | +10 if duration ≥ historical avg, -10 if <80% of avg |
| Scope Clarity | 15% | +10 if plans >90% complete, 0 if 70-90%, -10 if <70% |
| Contract Terms | 10% | +10 if standard AIA, -10 if pay-when-paid or long retention |
Score each bid opportunity. If the total score is below zero, decline the bid. If it's 0-50, bid with contingency pricing. If it's above 50, bid competitively.
Example: Acme Builders (poor GC performance, -10 points) invites you to bid a medical office (low-margin job type, -10 points) with a 12-week schedule when your historical average is 16 weeks (-10 points). Plans are 65% complete (-10 points). Contract is pay-when-paid (-10 points). Total score: -50. Decline the bid. That job will lose money.
Compare to: Swinerton (excellent GC, +10 points) invites you to bid a retail shell TI (best margin job type, +10 points) with a 6-week schedule when your average is 5.5 weeks (+10 points). Plans are 95% complete (+10 points). Contract is standard AIA A401 (+10 points). Total score: +50. Bid this aggressively—it's a high-probability profitable job.
Your labor tracking data is worthless if it stays in your head or in a spreadsheet that nobody else sees. You need to communicate variance and root causes to project managers, estimators, and ownership in a format they can act on.
Create a weekly labor variance report with these sections:
| Task | Est Hrs | Proj Hrs | Variance | Root Cause | Action |
|---|---|---|---|---|---|
| E-101 Ceiling conduit | 48 | 58.5 | +21.9% | GC coordination—unlevel grid | Change order submitted 6/7 |
| E-102 Wall conduit | 32 | 46.0 | +43.8% | GC coordination—framer delays | Standby time log attached |
| E-106 Device rough-in | 56 | 68.0 | +21.4% | Design change—20 added outlets | Change order submitted 6/8 |
Send this report every Friday to your PM and copy the estimating team. It takes 10 minutes to generate manually or 30 seconds if you're using Sourcetable AI to pull the data and format the summary.
The big GCs are consolidating because they have economies of scale—better purchasing power, more sophisticated estimating systems, deeper benches of project managers, and decades of historical cost data. Your $8M subcontracting firm can't match their scale, but you can match their data discipline.
Here's what the big GCs have that you need to replicate:
| Big GC Advantage | How Small Subs Can Compete | Time Investment |
|---|---|---|
| Historical cost database (10+ years) | Build production rate database from your last 20 jobs | 8 hours initial setup, 15 min/job ongoing |
| Real-time labor tracking integrated with accounting | Daily foreman logs with variance calculation | 15 min/day per active job |
| Predictive analytics on job profitability | GC performance scoring and job type margin analysis | 2 hours/month to update rankings |
| Dedicated estimating team with specialized software | Estimator access to actual production rates by condition type | 30 min/bid to reference historical data |
| Procurement leverage (volume discounts) | Can't compete—but better labor efficiency offsets material cost disadvantage | N/A |
You can't out-scale the big GCs, but you can out-execute them on labor efficiency. Your foremen have direct crew supervision and real-time visibility that a GC's project manager doesn't have. Use that advantage. Track variance daily, feed data back to estimating, decline bad bids, and charge appropriately for difficult GCs and complex job types.
The big GCs win on volume and scale. You win on precision and selectivity. They bid everything and accept 28% gross margin. You bid selectively and target 36% gross margin on the right jobs with the right GCs.
Even foremen who track labor data make these mistakes that undermine the value of the analysis:
Recording that you're 20% over budget is useless without documenting why. Was it an estimating error (internal problem) or a GC coordination failure (external, recoverable)? Without root cause classification, your PM can't pursue change orders and your estimator can't improve future bids.
Labor variance analysis is only valuable if you catch it early enough to take corrective action. Calculating variance on the last day of the job tells you that you lost money, but it's too late to fix it. Calculate variance daily or at least twice per week.
Your labor data stays in your head or in a personal spreadsheet that nobody else sees. The PM doesn't know to pursue a change order. The estimator doesn't know that ceiling conduit takes 14.5 LF/hour, not 17.5. The owner doesn't know that Acme Builders jobs always run 15% over budget. Share the data.
Projected variance calculation depends on accurate percent-complete estimates. If you say a task is 60% complete when it's really 40% complete, your projected variance will be wrong. Use objective measures when possible: linear feet installed / total linear feet, devices set / total devices, panels energized / total panels.
Sometimes labor overruns are genuinely crew inefficiency—mistakes, rework, slow pace. But often they're estimating errors or site conditions that weren't accounted for in the bid. Don't automatically blame the crew. Analyze the root cause objectively. If your crew installed 14.4 LF/hour and that's consistent with past jobs in similar conditions, the problem is the estimator assumed 17.5 LF/hour, not that the crew is slow.
Data and methodologies referenced in this article: