Files
krow_backend/skills/staffing-risk.md
2026-08-28 12:21:44 +05:30

100 lines
3.0 KiB
Markdown

---
id: staffing-risk
name: Staffing Risk
description: Identify open roles that will not fill on their own, and say why.
category: workforce
pages:
- positions
- control-center
status: active
version: 1
triggers:
- staffing risk
- staffing gap
# `*` stands for anything in between, so one line covers "roles at risk",
# "roles that are at risk" and "roles most at risk" without listing each.
- roles*at risk
- positions*at risk
- understaffed
owliver:
enabled: true
suggestions:
- label: Which roles are at risk?
capability: list
- label: Summarize staffing risk
capability: summary
capabilities:
- summary
- list
- table
- insight
responses:
summary:
title: Staffing risk
source: positions.risk
list:
title: Roles at risk
source: positions.risk
limit: 5
table:
title: Roles at risk
source: positions.risk
insight:
title: Biggest staffing risk
source: positions.risk
---
# Staffing Risk
## Purpose
- Name the open roles that are not going to fill without intervention.
- Say which of four distinct problems each one has, because each has a
different fix.
- Rank them so the reader knows which to deal with first.
## Capabilities
- Count the open roles currently at risk.
- List those roles, worst first, with the reason for each.
- Identify the single role most in need of attention.
## Data
Reads `positions.risk`, which joins open `JobPosting` records to their
`JobApplication` records through the same `buildPosition` reading the Positions
page renders from. No separate calculation, so a risk reported here and a health
badge shown there cannot disagree.
## Analysis
A role is at risk when any of the following is true. They are kept apart rather
than combined into a score, because the score would hide the only part that
tells the reader what to do:
1. **No applicants yet** — nobody has applied. Needs sourcing.
2. **No candidate scoring 70 or above** — people applied, none are viable.
Needs the requirements or the pay revisiting.
3. **Three or more unscreened** — a backlog nobody has looked at. Needs
screening.
4. **Someone awaiting a decision** — a strong candidate has been screened and
not moved on. Needs a person to decide.
Ranking weights an empty pipeline above a busy one that needs attention, since
an empty pipeline takes longest to recover.
## Output
A count of roles at risk, then a row per role naming its department and its
reasons. A role with no problems is not listed.
## Limitations
- Only open roles are considered. A paused or closed role is not at risk.
- "Viable" means an AI score of 70 or above. An unscored candidate is not
counted as viable, so a role whose applicants nobody has screened will report
both an unscreened backlog and no viable candidate — those are two true
statements about the same cause.
- This reads the pipeline, not the roster. It does not know how many people a
role needs, because no position in this workspace states a headcount.