AI Adoption GuideConsultingStaff
Utilization and Bench Risk Predictor
ML forecasts overallocation and bench risk 4 to 8 weeks out across the full active and pipeline project portfolio, using tools like Forecast.
Consulting processSellScopeStaffKickoffAnalyzeRecommendDeliverClose
By Don, DoneThat’s AI coach · updated
Last month's billed hours are not a forecast
A utilization KPI for last month tells you who billed. It does not tell you that in five weeks three specialists roll off a program while two unsigned deals both want the same people.
The useful artifact is a 4 to 8 week view of overallocation and bench, by person and by skill pool, across confirmed work plus pipeline you refuse to treat as certain. Inside four weeks you are already in a fire. Past eight weeks you are mostly arguing about deals that have not been won.
Overallocation and bench are different cost problems. Overallocation means contractors, a delayed start, or people already over capacity. Bench means salary against no revenue, or discounted work to fill the hole. A single utilization percentage hides which one is coming.
Do not build this as a prettier last-month dashboard. Resource and PSA systems in the Forecast.app, Kantata, Planview, and Mosaic class already produce that report. The job here is the forward file: named demand, named supply, and an honest treatment of work that is not signed.
If a slipping workstream is about to extend end dates, raise it with the engagement lead using a workstream delivery risk predictor. That is an input to this forecast, not a substitute.
Named assignments, end dates, and a pipeline that is not 100%
The model cannot invent who is busy. It needs a named person on named work, with an allocation and an end date. Without end dates, everyone is booked forever and bench never appears.
Keep three layers of demand separate:
- Confirmed assignments consume capacity at face value: person, project or role, percent or hours, start, end.
- Soft-holds consume a weight you set, not a full seat. Every hold has an owner and an expiry. A hold without an expiry is a ghost allocation.
- Pipeline roles consume expected load: stage probability times the role's allocation. Never 100% because a partner is confident.
Soft-holds are the silent overallocation. A partner parking a principal against an unsigned deal still looks like utilization in a naive file. If two partners hold the same person, the file can show more than a full seat before any client has signed. Confirmed work wins. Soft-holds that collide with confirmed work get released or converted. Soft-holds that collide with each other get a single owner.
Time off and public holidays reduce capacity in those weeks. An 80% assignment in a week with two days of leave is not 80% of a full week.
Pull win probability from the same stage table finance already uses for the revenue forecast. Do not let a partner override a mid-stage deal to "this one always closes." That is pipeline probability fiction: you hire or hold for a crunch that never arrives, then sit on bench you created. If the CRM stage is wrong, fix the CRM. Do not maintain a second, more optimistic staffing pipeline.
Quoted hours in the assignment file are another inheritance. If allocations come from proposals that understate delivery, the 4 to 8 week view looks fine until the work overruns. Check those hours against effort estimation from historical actuals on similar work before you treat the allocation as physics.
Illustrative example: Harbor & Lane, week of 8 June
This is a worked example with made-up names, written to show the cuts, not a case study with results.
Maya runs staffing for data and analytics at Harbor & Lane, a 180-person advisory firm. She is looking 4 to 8 weeks out from 8 June. Priya, a principal engineer, is 80% on the Meridian Foods warehouse program through 11 July, plus 20% on an internal methodology write-up with no end date. Tomas, a manager, is on two client projects that already sum to more than a full seat through August. Three seniors finish a 12-week diagnostic on 27 June with nothing named after it.
Oakridge Capital wants an ops transformation starting 14 July (two managers, four seniors). The partner calls it almost signed. CRM stage probability is 70%. The City of Westbrook ERP is 40% in CRM and wants the same seniors from 1 August. A partner has parked a 50% soft-hold on Priya against Oakridge, while Meridian still has her through 11 July.
Treat Oakridge and Westbrook as won and the practice looks short of seniors in July, Priya looks over 100% the week Meridian ends, and someone will ask for contractors. Weight the pipeline and kill the colliding hold, and late June is a bench conversation for the three seniors. Priya is free of Meridian on 11 July unless the internal 20% lives forever. Tomas is already a confirmed overallocation, not a forecast.
Maya dates the internal 20%, kills or converts Priya's hold, staffs Oakridge as expected load, and waits on contractors until the SOW is signed. She does not panic-discount the three seniors until expected demand in that skill pool is clear. Who is actually free, and who should take the next role, is a skills-to-project matching engine question after the capacity picture is honest.
Resignations, leave, and utilization target gaming
The file will not tell you who is about to resign. Notice, a resignation in progress, parental leave not entered, visa timing, a planned internal move: none of that is in the allocation grid. The model can show Priya available 14 July the same week HR already has her notice. No allocation model infers intent from timesheets. Feed leave and notice from HR, and give staffing a "do not forecast this person" flag that does not require publishing the reason to the practice. Until that feed exists, a human blesses individual availability in weeks 6 to 8.
The moment predicted utilization becomes a personal scorecard, people protect the number. End dates slip. Ghost allocations to business development and "internal" linger. Nobody releases a hold. The forecast then shows no bench because nobody will admit they are free. Report at practice and skill-pool level first. Do not put individual predicted utilization on performance reviews. If you need to talk to a person about empty weeks, that is a staffing conversation, optionally informed by a consultant preference and interest matcher, not a KPI.
Scope change is the other way the 4 to 8 week picture dies. When an SOW amendment blows allocations, agentic re-staffing on scope change is the response path. This predictor should flag that the picture broke. It should not silently reshuffle people across clients.
Staff against expected load in the huddle
Success is whether the Monday staffing huddle acted 4 to 8 weeks out, not whether a dashboard has a utilization tile. Last month's billed percentage is a finance report. Keep it. Do not let it be the plan.
The output is who is over, who is empty, and which layer of demand is the driver: confirmed, hold, or pipeline. It is not an auto-assignment. Do not let a script move people between clients because a chart went red.
Trial one practice for a quarter, in parallel with the current spreadsheet. Each Monday, put three views of the same file in the room: confirmed only, confirmed plus weighted pipeline, and confirmed plus pipeline treated as 100%. The third view is there to show the fiction. Decisions get made on the second, with the first as the floor you can already defend to finance.
Judge the trial on actions:
- Soft-holds that collided with confirmed work were released or converted, on the record.
- At least one hire, contractor, or start-date decision waited because expected load did not support it.
- At least one bench conversation started before people rolled off, not the week they sat idle.
- A deal that slipped did not leave you holding a full team you had treated as certain.
- Partners stopped bringing a second, more optimistic staffing pipeline to the meeting.
Do not roll this to every practice while individual predicted utilization is on a scorecard. You will train the file to lie. Keep Forecast.app, Kantata, Planview, and Mosaic as the system of record for assignments and, in many firms, pipeline. Configure the 4 to 8 week overallocation and bench view on top. If the only screen people open is last month's utilization, you have relabeled a KPI.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first