A machine learning workforce platform that forecasts labor demand across data center projects, so delivery teams can secure scarce skilled trades before a shortage turns into a delay.
Overview
By 2021, skilled labor had become one of the scarcest resources in infrastructure. The U.S. construction industry needed to attract an estimated 430,000 workers in 2021 on top of the workers it normally hires each year, and the gap was projected to grow to nearly 650,000 in 2022. Hyperscale data center projects compete for the same limited pool of electricians and mechanical trades. When a project can't secure the right crews at the right time, schedules slip, labor costs climb, and new compute capacity comes online late. For a hyperscaler, every week a data center is delayed costs roughly $1 million.
Infrastructure delivery teams at Meta were planning labor with fragmented data and manual estimates. Forecasts were often wrong, which left projects short of the crews they needed and running late. The AI Workforce Optimization Platform centralized that data and used machine learning to forecast labor demand across infrastructure projects, accounting for labor shortages and changing project variables, so teams could secure and allocate workers before the gap became a delay.
AI Hypothesis
The bet the product was built to test:
If machine learning accurately forecasts labor demand across all active projects early enough to see the peaks coming, then delivery teams can secure skilled trades ahead of time and spread crews across projects instead of competing for them at the same moment, which lowers peak labor, cuts labor costs, and keeps data centers on schedule.
Customer Research
Before building a model, I wanted to understand how labor was actually planned on a data center project, and where the plan broke down. I interviewed the people who build the schedule, staff the site, track the cost, and supply the crews.
Each conversation walked through a recent project from start to finish: how labor needs were estimated, where the data came from, when crews were requested, and what happened when the estimate was wrong.
Interviews
15
Timeframe
3 weeks
What kept coming up
No single view of labor. Schedules, cost reports, and crew counts lived in separate spreadsheets and systems, and nobody could see labor demand across every project at once.
Forecasts built on gut feel. Labor plans were estimated by hand from past experience, so two construction managers could forecast the same project very differently.
Projects competing for the same crews. Each project planned on its own, so several hit their labor peak at the same time and bid against each other for the same electricians.
Paying to keep talent from rival hyperscalers. Other hyperscalers were building near our projects and drawing from the same local labor pool, so we relied on Labor Attractive Retention Plans (LARPs), incentive pay to attract and keep skilled trades. Without an early view of demand, those costs kept climbing.
Trade partners found out too late. Crew requests arrived weeks before they were needed, when skilled workers were already committed to other jobs.
Plans fell behind the schedule. When the schedule slipped or the scope changed, the labor plan wasn't updated, and superintendents found the gap on site.
Schedulers
Build and maintain the project schedule
Construction managers
Own delivery across one or more projects
Superintendents
Run the site and staff the crews day to day
Cost analysts
Track labor spend against budget
Skilled labor trade partners
Supply the electricians and mechanical crews
Persona & Customer Journey
The interviews covered five roles, each touching labor planning from a different side:
Superintendents, who run the site day to day, request the crews, and are the construction manager's eyes in the field.
Construction managers, who own delivery and sign off on the labor plan.
Schedulers, who build the schedule the labor plan depends on.
Cost analysts, who track labor spend, including retention incentives, against budget.
Skilled labor trade partners, who supply the crews and need notice to commit them.
We built the MVP for the superintendent. They're the ones who actually request crews, and they see a shortage first, on site, when it's already too late to fix cheaply. If the forecast gives them enough lead time to request crews before the peak, the construction manager sees a project that stays on schedule, the cost analyst sees lower labor spend, and trade partners get the notice they need. That makes the superintendent the fastest path to proving the hypothesis.
Primary persona · composite of superintendent interviews
Ray, the site superintendent
Role
Site superintendent
Project
Hyperscale data center
Reports to
Construction manager
Background
Came up through the trades
A day in his life
Ray is on site before the crews arrive. He walks the work, checks progress against the schedule, solves whatever broke overnight, and reports back to the construction manager. Somewhere in there he has to figure out how many electricians and mechanical workers he'll need next month, using a spreadsheet, the latest schedule, and his own experience.
Goals
Have the right crews on site when the work is ready for them
Request labor early enough that trade partners can commit
Keep the project on schedule without paying premiums to fill gaps
Give the construction manager a labor plan he can stand behind
Frustrations
Labor estimates built by hand from scattered data
Finding out about a shortage on site, when it's already a delay
Losing crews to other hyperscalers building nearby
Schedule changes that leave the labor plan out of date
Customer journey
How Ray plans labor across a project, and what the tool changes at each step.
Project kickoff
Look ahead planning
Request crews
Peak construction
Schedule changes
What he does
Reviews the schedule and scope to size the labor the project will need
Estimates crew needs for the coming weeks and months
Asks trade partners to commit electricians and mechanical crews
Manages the largest workforce on site and keeps work moving
Adjusts the labor plan when dates or scope shift
How he feels
Uncertain
Skeptical
Relieved
In control
Confident
Pain points
Labor data is spread across spreadsheets and systems
Estimates rely on manual math and gut feel
Requests go out too late; crews are already committed elsewhere
Other projects and hyperscalers peak at the same time, competing for crews
The labor plan lags the schedule, and gaps show up on site
How the product helps
One view of labor data across every active project
Machine learning forecast of crew needs by trade
Early warning of the peak, so requests go out with lead time
Crews spread across projects instead of all peaking at once
Forecast updates as project variables change
AI Models Overview
One supervised machine learning model did the work. We trained it on past data center projects where the outcome was already known, so it could learn how a project's plans and estimates translated into the labor it actually took.
Features
Historical project data
From the plans
Quantities extracted from each project's 3D models, drawings, and blueprints: building size and power capacity, conduit and cable tray runs, equipment counts by system, and the scheduled sequence of work by week.
From the estimates
Original labor and cost estimates by trade, paired with the actual labor hours, cost, and schedule each project ended up with. The gap between the two became a feature of its own, so the model learned where hand built estimates tended to miss.
Model
Gradient boosted regression
Why this approach
Gradient boosting builds hundreds of small decision trees, each one correcting the errors of the ones before it. It performs strongly on structured, tabular data like project quantities and estimates, handles a mix of numeric and categorical inputs, and copes well with a training set measured in projects rather than millions of rows.
Explainability
Feature importance shows which inputs drove each forecast, so a superintendent can see why a number changed, not just that it did.
Output & validation
Labor hours by trade
Target
Labor hours by trade, per week, per project, rolled up across every active project, with a likely range around each forecast. Because the quantities are paired with the live schedule, the model predicts when each trade's demand peaks, not just how much labor a project needs.
Validation
Trained on 80% of past projects and validated on the other 20%, which it had never seen, comparing forecast labor with what each project actually used. See Proof of concept.
AI Proof of Concept
Before committing to a full build, we ran a proof of concept to answer one question: could the model forecast labor more accurately than the estimates teams were already making by hand? We split completed data center projects 80/20: the model trained on 80% and was validated on the other 20%, which it had never seen. For each validation project, we fed it only what was known at the start of each project: the plans, the quantities, and the original estimates. We then compared its week by week forecast for each trade with the labor each project actually used, and measured it against the original manual estimate for the same project. We also checked whether it caught the timing and size of each labor peak, since that was the core bet. That evidence is what greenlit the MVP.
AI Input & AI Output
AI input
Plan quantities: figures extracted from each project's 3D models, drawings, and blueprints, such as building size, power capacity, conduit and cable tray runs, and equipment counts.
Live schedule: the pipeline pulls each project's current schedule from Primavera P6 through its API, so the planned sequence of work by week is always up to date and a schedule change flows straight into the next forecast.
Labor and cost estimates: the original estimates by trade, built by hand for each project.
Historical actuals: the labor hours, cost, and schedule each past project actually ended up with. This is what the model learned from, and what it was validated against in the proof of concept.
Available labor: the workers available by trade and location, compared against the forecast to find gaps.
AI output
Labor demand forecast: labor hours by trade, per week, for each project, with a likely range around each number.
Portfolio view: forecasts rolled up across every active project, so teams can see where projects peak at the same time and compete for the same crews.
Peak timing: when each trade's demand rises and peaks, early enough for superintendents to request crews with lead time.
Forecast drivers: the inputs that moved each forecast most, so teams can see why a number changed after a schedule or scope update.
Labor gap: forecast demand against available workers, by trade and location, showing where a project will be short or overstaffed.
Alerts and insights: flags for labor shortages, overstaffing, and cost overruns, so teams act before a gap reaches the site.
LARP scenario planning: the estimated cost of retention bonuses, referral bonuses for new hires, and overtime, with scenarios that can be simulated and compared side by side.
Data Pipeline
I led the development of the data pipeline, working with data engineers to clean the data and build the pipelines. Data moves through four stages, from project files scattered across teams to a forecast on a superintendent's dashboard.
Collect
Quantities are extracted from each project's 3D models, drawings, and blueprints.
Each project's live schedule is pulled directly from Primavera P6.
Original labor and cost estimates are gathered by trade.
Available labor is gathered by trade and location.
Actual labor hours, cost, and schedules from completed projects form the training and validation set, split 80/20.
Prepare
Data from different teams and formats is cleaned and combined into one consistent record per project.
Trades, systems, and units are standardized so projects can be compared with each other.
P6 activities are mapped to trades and weeks, so the schedule lines up with the quantities.
The gap between each past project's estimate and its actuals is calculated as a feature.
Forecast
The gradient boosted model forecasts labor hours by trade, per week, for each active project, with a likely range.
Forecasts are rolled up across every active project to show where peaks overlap.
The inputs that drove each forecast are recorded alongside it.
When the schedule in P6 changes, the forecast updates to match.
Each forecast is compared with available labor to find gaps, which trigger shortage and overstaffing alerts.
Deliver & learn
Forecasts appear on a dashboard, filtered by project, trade, location, and time horizon, alongside the labor gap, alerts, and LARP scenarios.
Superintendents use it to see upcoming peaks and request crews with lead time; construction managers use it to plan across projects and to model LARP options before committing to them.
As projects finish, their actual labor is added to the training data, so the model keeps learning from every new build.
Tech Stack
Machine learning: Python to build, train, and validate the gradient boosted forecasting model, with pandas to clean, combine, and shape the project data before training.
Design data: Autodesk Revit for the 3D building models that quantities such as conduit runs and equipment counts were extracted from.
Drawings: Bluebeam Revu to take quantities off PDF drawings and blueprints.
Scheduling: Primavera P6, connected live so every forecast reflects each project's current schedule.
Data pipeline: the P6 API to pull each project's live schedule, Python and pandas to clean the data and load it into SQL, and Apache Airflow to run the pipeline and rerun the forecast on a schedule.
Data: a central SQL database holding the combined project records: quantities, estimates, schedules, and historical actuals.
Dashboard: Power BI to show forecasts by project, by trade, and across the portfolio, refreshed automatically as new forecasts land.
System Architecture
How data moves from project files and schedules to a crew decision: sources on the left, the pipeline and model in the middle, the dashboard on the right, and a retraining loop that keeps the model learning from every finished project.
Data and forecast path
Live schedule from P6
Retraining loop
Product Opportunities & Prioritization
Once discovery was done, the question was how much the tool should take on. A labor forecasting tool was the core, but research surfaced three adjacent problems the same teams wanted solved, and each one competed for the same build time.
Labor forecasting
Accurately predict and plan the manpower each trade will need, week by week, across every active project, so crews can be secured before the peak.
Chosen as the core hypothesis.
Labor takeoffs
Have the tool measure quantities from drawings and models itself, instead of taking in the numbers teams had already extracted.
Cost estimation
Turn the labor forecast into a full project cost estimate, so one tool covers both how many workers a project needs and what the whole build will cost.
QA/QC tracking
Log and track quality issues on site, since rework is one of the things that pulls crews off planned work.
Why labor forecasting came first
The costliest problem was not knowing how many workers a project would need, and when. That's what drove projects into retention incentives to compete with nearby hyperscalers, and into delays that cost roughly $1 million a week. Takeoffs, cost estimation, and QA/QC tracking each had tools and teams already handling them, imperfectly but well enough. Accurate manpower forecasting had nothing. A forecast is also only useful if teams trust it, so accuracy was part of the MVP from day one: the proof of concept had to beat the hand built estimates before anything shipped. The adjacent options were weighed and set aside; a tool that tried to do all four at once risked doing none of them well.
Impact vs. effort
The core forecast and the three adjacent options, scored on their impact on getting the right crews in place and on the effort to build them well.
Impact →Effort →
Must have high impact · lower effort
Labor forecast by trade, per week, for each project
Portfolio view across every active project
Live schedule connection to Primavera P6
Power BI dashboard for superintendents and construction managers
Forecast accuracy validated against past projects
Labor gap against available workers, with shortage and overstaffing alerts
LARP scenario planning
Likely range around each forecast
Major projects high impact · higher effort
Cost estimation built on the labor forecast
Retraining loop that adds each finished project's actual labor to the forecast model
Quick wins later lower impact · lower effort
QA/QC issue tracking
Not for the MVP lower impact · higher effort
Automated labor takeoffs from Revit models and drawings
Cost estimation, QA/QC tracking, and automated takeoffs were scored but never built; the team stayed focused on the forecast.
Product Roadmap
I owned product discovery, strategy, and the roadmap, working with the infrastructure delivery teams who would use the tool. The roadmap followed the prioritization: build an accurate, fully automated labor forecast first, then prove it in the field by piloting it on live jobsites against the schedulers' plans and the actual labor, and let the model learn from every finished project before rolling it out. Cost estimation and QA/QC tracking stayed on the list but were never built.
Phase 1 · MVPForecast
Phase 2Pilot & learn
RolloutAdopt
FutureConsidered, not built
AI & data
SQL database of past projects
Live schedule from Primavera P6
Automated Airflow pipeline
Gradient boosted model trained and validated on an 80/20 split
Retraining on each finished project
Forecast accuracy monitoring
Product
Labor forecast by trade, per week
Portfolio view across projects
Likely range on each forecast
Labor gap and alerts
LARP scenario planning
Power BI dashboard
Forecast drivers on the dashboard
Rollout across active projects
Cost estimation
QA/QC tracking
Research & rollout
15 discovery interviews
Proof of concept on past projects
Pilot on multiple jobsites
Compared with schedulers' plans
Confirmed against actuals over the project lifecycle
Training for superintendents and construction managers
Phase 1 · MVPForecast
Data foundation
Combine past projects into one SQL database
Extract quantities from Revit and Bluebeam
Standardize trades, systems, and units
Connect live schedules from Primavera P6
Pipeline automation
Orchestrate the pipeline in Airflow
Rerun forecasts when the P6 schedule changes
Scheduled Power BI refresh
Forecast model
Engineer features, including the estimate vs. actual gap
Train the gradient boosted model on 80% of projects
Validate on the 20% held out
Set the likely range around each forecast
Dashboard
Forecast by trade, per week, per project
Portfolio view across active projects
Labor gap against available workers
Shortage, overstaffing, and cost overrun alerts
LARP scenario planning and comparison
Power BI dashboard v1
Discovery
15 interviews across five roles
Superintendent persona and journey map
PRD v1
Phase 2Pilot & learn
Pilot
Pilot on multiple jobsites
Compare forecasts with the schedulers' plans
Confirm against actual labor across the project lifecycle
Retraining loop
Add actual labor from each finished project
Retrain and revalidate the model
Explainability
Show the inputs that drove each forecast
RolloutAdopt
Rollout
Train superintendents and construction managers
Roll out across active data center projects
Track forecast accuracy against actuals
FutureConsidered, not built
Cost estimation
Full project cost estimate from the labor forecast
QA/QC tracking
Log and track quality issues on site
User Stories & Acceptance Criteria
The stories center on the superintendent, the primary persona, with the construction manager, scheduler, and cost analyst where the forecast shaped their planning: securing crews, preparing retention incentives and recruitment, and projecting actual labor spend. Each one ties back to a pain point from the interviews, and each acceptance criterion is something the team could test before calling the feature done.
Area
User story
Acceptance criteria
Labor forecastMVP
As a superintendent, I want to see how many workers each trade will need, week by week, on my project so that I can plan crews from data instead of a hand built spreadsheet.
Forecasts show labor hours by trade, per week, for each active project
Forecasts are built from the project's quantities, estimates, and live schedule
In the proof of concept, forecasts beat the original manual estimates on the held out projects
Peak early warningMVP
As a superintendent, I want to see when each trade's labor will peak, well before it happens, so that I can request crews while trade partners still have workers available.
The dashboard highlights each trade's upcoming peak and when it starts
Peaks are visible far enough ahead to request crews through trade partners
The timing of each peak is checked against actual labor in the pilot
Gap alertsMVP
As a superintendent, I want to be alerted when the forecast shows more work than available workers in my trade and location so that I can close the gap before it reaches the site.
Forecast demand is compared with available workers by trade and location
Shortages and overstaffing are flagged as alerts on the dashboard
Each alert shows the trade, the week, and the size of the gap
Forecast rangeMVP
As a superintendent, I want to know how confident the forecast is so that I can decide how much buffer to plan for.
Every forecast shows a likely range, not just a single number
Wider ranges are visible at a glance on the dashboard
Portfolio viewMVP
As a construction manager, I want to see labor demand across all my active projects in one place so that projects don't all peak at once and compete for the same crews.
Forecasts roll up across every active project by trade and week
Overlapping peaks across projects are easy to spot
Each project can be opened to its own forecast
LARP & recruitmentMVP
As a construction manager, I want to see labor peaks months ahead so that I can plan Labor Attractive Retention Plans and a recruitment strategy to attract and keep skilled trades before we're competing with nearby hyperscalers for the same workers, instead of reacting once crews are already short.
Forecasts show which trades will peak, when, and by how much
Peaks are visible early enough to put retention incentives and recruitment in place ahead of time
LARP scenarios estimate the cost of retention bonuses, referral bonuses for new hires, and overtime, and can be compared side by side
The forecast updates as the schedule changes, so the plan stays current
Labor spendMVP
As a cost analyst, I want an accurate forecast of the labor each project will actually use so that I can project what actual labor spend will be, instead of relying on the original estimate and finding the overrun after it happens.
Forecast labor hours by trade are available for every active project
Forecasts reflect the current schedule, not the original plan
Forecasts can be compared with actual labor as each project progresses
Live scheduleMVP
As a scheduler, I want schedule changes in Primavera P6 to flow straight into the labor forecast so that the plan never falls behind the schedule.
The pipeline pulls each project's current schedule from P6 automatically
A schedule change is reflected in the next forecast run without manual steps
The dashboard shows when each forecast was last updated
Forecast driversPhase 2
As a superintendent, I want to see why a forecast changed so that I can trust it and explain it to my construction manager.
Each forecast lists the inputs that moved it most
A change in schedule or scope shows up as a named driver
Drivers are written in plain terms, not model jargon
Retraining loopPhase 2
As a construction manager, I want the model to learn from every project we finish so that forecasts keep getting more accurate over time.
Actual labor from each finished project is added to the training data
The model is retrained and revalidated before the new version replaces the current one
Forecast accuracy against actuals is tracked from one version to the next
Risks & Mitigation
A forecasting tool has two ways to fail: it gives the wrong number, or it gives the right number and nobody acts on it. Each risk below was rated on how much damage it would do and how likely it was, and each mitigation was built into the phase that introduced the risk.
Risk
What could go wrong
Impact
Likelihood
Mitigation
Inaccurate forecasts
The model over- or underforecasts a trade, and teams secure the wrong number of workers, the exact failure the tool exists to prevent.
High
Medium
A proof of concept on held out projects before anything shipped, a jobsite pilot checked against the schedulers' plans and actual labor, and a likely range on every forecast
Missed peak timing
The forecast gets the total right but the timing wrong, so crews arrive after the peak has already hit.
High
Medium
A live connection to Primavera P6, forecasts that rerun automatically when the schedule changes, and peak timing checked against actual labor in the pilot
Bad input data
Quantities, estimates, or actuals arrive incomplete or in different formats from different teams, and the model learns from errors.
Medium
High
One cleaned, standardized record per project in the SQL database, consistent trades and units across projects, and schedules pulled automatically instead of reentered by hand
Low adoption
Superintendents and construction managers don't trust a model over their own experience, and keep planning in spreadsheets.
High
Medium
Discovery built around the superintendent, a pilot that compared forecasts with the schedulers' own plans, forecast drivers that explain each number, and training at rollout
Model drift
Design changes to the building are inevitable in construction, and construction methods and the labor market shift over time too, so a model trained on older projects slowly loses accuracy.
Medium
Medium
Retraining on each finished project, with every new version revalidated before it replaces the current one, and forecast accuracy tracked against actuals
Business Model / Lean Canvas
This was an internal tool, so it had no price or sales channel. The canvas below adapts the format: channels become how the tool reached its users, and revenue becomes the value it returned to Meta.
Problem
Labor data scattered across teams, with no single view across projects
Labor forecasts built by hand and often wrong
Projects peaking at the same time and competing for scarce skilled trades
Existing alternatives
Spreadsheets, manual estimates, and the experience of individual superintendents and schedulers
Solution
Machine learning forecast of labor by trade, per week
Portfolio view across every active project
Labor gap alerts and LARP scenario planning
Key metrics
Forecast accuracy against actuals
Peak labor
Workforce planning time
Project delivery time
Unique value proposition
An accurate forecast of the crews every data center project needs, week by week, early enough to secure skilled trades before the peak instead of competing for them when it hits.
Channels
Power BI dashboard used by delivery teams
Jobsite pilots alongside the schedulers' plans
Training for superintendents and construction managers
Rollout across active data center projects
Customer segments
Meta's data center infrastructure delivery teams
Early adopters
Superintendents on the pilot jobsites
Cost structure
Data science and engineering time
Data preparation from past projects
Pipeline and database infrastructure
Software subscriptions: construction platforms and Power BI
Value captured
$11M a year saved in LARP and schedule costs
Lower peak labor (−41%)
Lower labor related costs (−12%)
Faster project delivery, against delays that cost roughly $1 million a week
Retention incentives planned ahead instead of paid reactively
AI Product Scalability
Meta's data center build program kept growing, and every new project added more labor demand to plan for. The tool was designed so that each new project made it more accurate and more useful, instead of adding more manual work.
New projects plug into the same pipeline
The pipeline was automated from the start, so adding a project meant connecting its live schedule from Primavera P6 and loading its quantities and estimates, not building anything new. Airflow runs the same steps for one project or dozens, and the dashboard picks up each new project automatically.
A model that improves with every finished project
Each completed project adds its actual labor to the training data, so the model learns from every build the program delivers. Every retrained version is revalidated before it replaces the current one, and accuracy is tracked against actuals, so inevitable design changes and shifts in the labor market don't quietly erode the forecast.
More projects, more value
The more projects run at once, the more likely their labor peaks collide. Because forecasts roll up across every active project, each new project makes the portfolio view more valuable: it's one more peak the team can see coming and plan crews, retention incentives, and recruitment around.
One standard across every site
Trades, systems, and units are standardized in the pipeline, so a project at a new site is comparable with every project before it. That lets a new site benefit from the history of the whole program on day one, instead of starting from scratch.
MVP
I developed the MVP of the AI based labor forecasting model and the dashboard teams used to act on it. The MVP did one job: give superintendents and construction managers an accurate, week by week forecast of the crews each trade would need, across every active project, early enough to plan around the peak.
Labor forecast by trade, per week, for each project, with a likely range
Portfolio view that stacks every active project, so overlapping peaks are visible weeks ahead
Live schedule pulled automatically from Primavera P6 through the automated pipeline
Labor gap between the forecast and available workers, by trade and location
Alerts and insights for labor shortages, overstaffing, and cost overruns
LARP scenario planning to estimate and compare the cost of retention bonuses, referral bonuses, and overtime
Power BI dashboard built for the superintendent first, then the construction manager
A mockup closely resembling the actual MVP dashboard of this internal Meta tool. Figures shown are illustrative.
Results
I developed the MVP of the AI based labor forecasting model. We piloted it on multiple jobsites, checking its forecasts against the schedulers' plans and against the actual labor used over each project's lifecycle. Workforce planning time dropped dramatically, and the tool made decisions faster and more reliable:
+30%forecast accuracy
−41%peak labor
$11M / yrsaved in LARP and schedule costs
Better allocation also cut workforce inefficiencies by 25%, which reduced labor related costs by 12%.