
The problem
Utilization is the load-bearing metric in services-heavy organizations. Too low and margin suffers; too high and burnout follows. The capacity planner needs to know — for each consultant — how loaded they are now, how that compares with their norm, and what taking on another project would add. The answer drives hiring decisions, bench management, and bid commitments.
Most teams answer this with a planning spreadsheet someone updates weekly. The spreadsheet captures known commitments but not how a person is typically staffed on a kind of project, nor how much of their load sits on projects that are slipping. The result is consistently over- or under-allocated plans, with reality drifting from the plan within weeks.
How it works
Current load is the sum of allocation_pct over each consultant's active assignments, read with _search. Beside it sit their average allocation across completed projects and the part of their load on projects flagged at risk or delayed. Over 110% reads as overloaded, under 60% as available.
For planning, _predict on the assignments table answers "if this person joins a typical implementation, what role do they take, and at what allocation?", conditioned on the person and the project type, each answer with its probability and $why. No separate forecasting model and no Monte Carlo simulation; the next assignment written is in the next query.
{
"from": "assignments",
"predict": "allocation_pct",
"where": {
"person": "K. Saari",
"project_type": "implementation"
},
"select": [
"$p",
"$value",
{
"$why": {
"highlight": {
"posPreTag": "«",
"posPostTag": "»"
}
}
}
],
"limit": 4
}For the full architecture, see the technology overview. For the broader narrative across multiple use cases, read The Predictive Application.
See it live
This use case runs in the 📋 ERP demo today. Click through to the live application and inspect the queries that produce the result.
Frequently asked
How far ahead can the forecast see?
The view shows load as it stands, from the assignments that are active now; it does not project month by month. The prediction answers what a new project would add for a given person, which is the question when you staff or bid.
Does this handle subcontractor capacity?
Yes. Subcontractors enter the same prediction as in-house consultants if their allocation history is in the data. Conditional probability is over whoever appears in the historical allocations table — internal employees, contractors, partner consultants, all treated the same way.
How does the prediction shift when a large project is won (or lost)?
The new assignments enter the data; the next query reflects them. Current load moves immediately for the consultants staffed on the project. For the ones not yet staffed, the role and allocation prediction shows what joining it would typically cost them.
Can we use this to drive hiring decisions?
As an input. The view shows who is overloaded and who has free capacity now, and the prediction shows what a typical project of each type adds for a given person; a sustained overload across a role is the hiring signal. The demo does not compute a month-by-month role-level forecast.
What if our consultants split time across cost centers or business units?
The prediction handles multi-allocation as a multi-row record. One consultant has multiple allocation rows per month, one per project or cost center. The forecast predicts each allocation_pct separately; the sum tells the capacity story.


