The model calculates per skill the requested hours divided by the available hours.
Why it matters
Above 1, you have structurally too little supply for that skill. That is where training, targeted recruitment or a rate conversation comes in, because scarcity is allowed to cost something.
Where it goes wrong
Requested skills are in the request as free text, available skills in the ATS as a list. Without a shared skills list, you cannot put them side by side.
How Dashly calculates it
Dashly calculates it per month from the ATS and scheduling. In the skills loop, a shortage becomes a plan: training or targeted recruitment, until there is suitable and deployable supply.