agent build
This commit is contained in:
99
skills/activity-analysis.md
Normal file
99
skills/activity-analysis.md
Normal file
@@ -0,0 +1,99 @@
|
||||
---
|
||||
id: activity-analysis
|
||||
name: Activity Analysis
|
||||
description: Break down what has happened in this workspace, by kind of event and by account.
|
||||
category: operations
|
||||
pages:
|
||||
- activity
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- activity breakdown
|
||||
- event breakdown
|
||||
- what kind of events
|
||||
- events by type
|
||||
- who did what
|
||||
- busiest account
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: What kinds of event are there?
|
||||
capability: table
|
||||
- label: Summarize workspace activity
|
||||
capability: summary
|
||||
- label: Activity over recent periods
|
||||
capability: flow
|
||||
capabilities:
|
||||
- summary
|
||||
- stats
|
||||
- table
|
||||
- list
|
||||
- progress
|
||||
- flow
|
||||
responses:
|
||||
summary:
|
||||
title: Activity breakdown
|
||||
source: activity.breakdown
|
||||
stats:
|
||||
title: Activity breakdown
|
||||
source: activity.breakdown
|
||||
table:
|
||||
title: Events by kind
|
||||
source: activity.breakdown
|
||||
list:
|
||||
title: Events by kind
|
||||
source: activity.breakdown
|
||||
progress:
|
||||
title: Events by kind
|
||||
source: activity.breakdown
|
||||
flow:
|
||||
title: Activity over time
|
||||
source: activity.breakdown
|
||||
periods:
|
||||
- last-7-days
|
||||
- this-month
|
||||
- previous-month
|
||||
---
|
||||
|
||||
# Activity Analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report what has happened in this workspace and in what proportion.
|
||||
- Count how many accounts are active.
|
||||
- Show activity across recent periods.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Break events down by kind, with each kind's share.
|
||||
- Count distinct event kinds and active accounts.
|
||||
- Window the breakdown by period.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `activity.breakdown`, which counts `UserActivity` records by `event_type`
|
||||
and by account.
|
||||
|
||||
## Analysis
|
||||
|
||||
Events are counted by kind and expressed as a share of the total, because a raw
|
||||
count means little without knowing whether twelve logins is most of the log or a
|
||||
fraction of it.
|
||||
|
||||
Stored event names are machine keys; they are rendered as words so a reader does
|
||||
not have to translate `hire_candidate` in their head.
|
||||
|
||||
## Output
|
||||
|
||||
Total events, number of distinct kinds, number of active accounts, then a row
|
||||
per kind with its count and share.
|
||||
|
||||
## Limitations
|
||||
|
||||
- This describes the audit log, not the underlying records. Ten `apply_job`
|
||||
events mean ten logged actions, which is not a guarantee of ten applications
|
||||
surviving in the pipeline.
|
||||
- Overlapping periods are deduplicated by event, so asking for today and the
|
||||
last seven days together does not double-count today.
|
||||
- This counts activity; it does not judge it. Whether a pattern is unusual is
|
||||
Anomaly Detection's question.
|
||||
27
skills/analytics-insights.md
Normal file
27
skills/analytics-insights.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
id: analytics-insights
|
||||
name: Analytics Insights
|
||||
description: Help Owliver explain the analytics shown on the current page.
|
||||
pages:
|
||||
- analytics
|
||||
status: active
|
||||
actions:
|
||||
- navigate_to_analytics
|
||||
---
|
||||
|
||||
# Analytics Insights
|
||||
|
||||
## Purpose
|
||||
|
||||
Explain the figures on the Analytics page — conversion, speed, department
|
||||
performance — using the same records the page renders.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Explain hiring trend and conversion.
|
||||
- Compare department performance.
|
||||
- Identify where the funnel loses candidates.
|
||||
|
||||
## Actions
|
||||
|
||||
- navigate_to_analytics
|
||||
96
skills/anomaly-detection.md
Normal file
96
skills/anomaly-detection.md
Normal file
@@ -0,0 +1,96 @@
|
||||
---
|
||||
id: anomaly-detection
|
||||
name: Anomaly Detection
|
||||
description: Surface activity that departs from this workspace's own pattern — and stay quiet when nothing does.
|
||||
category: operations
|
||||
pages:
|
||||
- activity
|
||||
- control-center
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- anomaly
|
||||
- anomalies
|
||||
- anomalous
|
||||
- unusual
|
||||
- out of pattern
|
||||
- suspicious
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: Is anything unusual?
|
||||
capability: insight
|
||||
- label: Show the signals
|
||||
capability: table
|
||||
capabilities:
|
||||
- summary
|
||||
- insight
|
||||
- list
|
||||
- table
|
||||
- stats
|
||||
responses:
|
||||
summary:
|
||||
title: Activity signals
|
||||
source: activity.signals
|
||||
insight:
|
||||
title: Unusual activity
|
||||
source: activity.signals
|
||||
list:
|
||||
title: Signals
|
||||
source: activity.signals
|
||||
table:
|
||||
title: Signals
|
||||
source: activity.signals
|
||||
stats:
|
||||
title: Activity signals
|
||||
source: activity.signals
|
||||
---
|
||||
|
||||
# Anomaly Detection
|
||||
|
||||
## Purpose
|
||||
|
||||
- Surface activity that departs from this workspace's own baseline.
|
||||
- Explain each signal rather than only naming it.
|
||||
- Report nothing when nothing departs, so a signal keeps its meaning.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Detect concentration, bursts, off-hours activity, silence and privileged-action share.
|
||||
- Report how many signals are currently raised.
|
||||
- Explain what each one means.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `activity.signals`, which is the same detection the assistant's own
|
||||
greeting counts — one implementation in `lib/activitySignals.js`, so "two
|
||||
unusual patterns" means the same two wherever it is said.
|
||||
|
||||
## Analysis
|
||||
|
||||
Five patterns are checked against this workspace's own history:
|
||||
|
||||
1. **Concentration** — one account is responsible for half or more of events.
|
||||
2. **Burst** — more than three actions from one account inside one hour.
|
||||
3. **Off-hours** — activity before 06:00 or after 22:00.
|
||||
4. **Silent** — a log that has events but nothing in the last 24 hours.
|
||||
5. **Privileged share** — more than 30% of events change who is employed or
|
||||
what is being hired for.
|
||||
|
||||
Only patterns that clear their threshold are reported. A workspace with nothing
|
||||
unusual returns no signals, not a low-severity note.
|
||||
|
||||
## Output
|
||||
|
||||
A count of raised signals, and one row per signal explaining what triggered it
|
||||
with the figure behind it.
|
||||
|
||||
## Limitations
|
||||
|
||||
- **A signal is a deviation from a baseline, not a verdict.** On a live
|
||||
deployment most resolve to an integration, a bulk import or a busy afternoon.
|
||||
Nothing here asserts wrongdoing.
|
||||
- Thresholds are fixed, not learned. A workspace whose normal pattern is one
|
||||
busy account will report concentration every time it is asked.
|
||||
- The baseline is the whole activity log, not a rolling window, so a young
|
||||
workspace has little to compare against.
|
||||
105
skills/attendance-analysis.md
Normal file
105
skills/attendance-analysis.md
Normal file
@@ -0,0 +1,105 @@
|
||||
---
|
||||
id: attendance-analysis
|
||||
name: Attendance Analysis
|
||||
description: Analyse workforce attendance, lateness and absence, and compare people and departments.
|
||||
category: workforce
|
||||
pages:
|
||||
- analytics
|
||||
- control-center
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- attendance
|
||||
- absence
|
||||
- absences
|
||||
- absenteeism
|
||||
- late arrival
|
||||
- missed shift
|
||||
- missed shifts
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: How is attendance?
|
||||
capability: summary
|
||||
- label: Compare attendance by person
|
||||
capability: table
|
||||
- label: Attendance over recent periods
|
||||
capability: flow
|
||||
capabilities:
|
||||
- summary
|
||||
- stats
|
||||
- table
|
||||
- progress
|
||||
- flow
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Attendance
|
||||
source: workforce.attendance
|
||||
stats:
|
||||
title: Attendance
|
||||
source: workforce.attendance
|
||||
table:
|
||||
title: Attendance by person
|
||||
source: workforce.attendance
|
||||
progress:
|
||||
title: Attendance by person
|
||||
source: workforce.attendance
|
||||
flow:
|
||||
title: Attendance over time
|
||||
source: workforce.attendance
|
||||
periods:
|
||||
- last-7-days
|
||||
- this-month
|
||||
- previous-month
|
||||
insight:
|
||||
title: Attendance
|
||||
source: workforce.attendance
|
||||
---
|
||||
|
||||
# Attendance Analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report how reliably the workforce is turning up.
|
||||
- Separate turning up from turning up on time, because they have different causes.
|
||||
- Compare people and departments so a problem can be located rather than only counted.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Summarize attendance, punctuality and missed shifts.
|
||||
- Compare attendance per person, worst first.
|
||||
- Show attendance across recent periods.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `workforce.attendance`, which counts `ShiftRecord` entries — every shift
|
||||
scheduled, whether it was worked, how late it started and how long it ran.
|
||||
Department is the position's `role_category`, the same field Hired History and
|
||||
Analytics group by.
|
||||
|
||||
## Analysis
|
||||
|
||||
Attendance is the share of scheduled shifts that were **turned up for at all**,
|
||||
late or not. Punctuality is reported separately, as the share turned up for on
|
||||
time. Folding the two together would make a reliably-late team look absent and
|
||||
a genuinely absent one look better than it is.
|
||||
|
||||
Minutes lost to lateness are reported alongside the count, because four late
|
||||
arrivals says nothing about whether it cost ten minutes or two hours.
|
||||
|
||||
## Output
|
||||
|
||||
Headline attendance and punctuality rates, missed shifts split into absences and
|
||||
no-shows, and a row per person with their record. Over periods, one figure per
|
||||
window.
|
||||
|
||||
## Limitations
|
||||
|
||||
- Only shifts that were scheduled are counted. Unrostered work does not appear.
|
||||
- A no-show and an absence are counted separately but both reduce attendance;
|
||||
the distinction is in the detail line, not in the headline rate.
|
||||
- The roster is whoever has shift records. This workspace has three, so a
|
||||
department average is one person's record — the per-person view is the more
|
||||
honest read at this size.
|
||||
- Excused absence is a recognised status but none is currently recorded.
|
||||
37
skills/bartending-training.md
Normal file
37
skills/bartending-training.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
id: bartending-training
|
||||
name: Bartending Training
|
||||
description: Training path for specs, speed and responsible service behind a bar.
|
||||
skill: bartending
|
||||
pages:
|
||||
- positions
|
||||
- profile
|
||||
---
|
||||
|
||||
# Bartending Training
|
||||
|
||||
Speed, specs, and the judgement to run a bar alone.
|
||||
|
||||
Attached to Positions and Profile but not Candidates: bar levels are read when
|
||||
matching someone to a role and when they are planning their own development, and
|
||||
the recruiter's candidate view is kept to the skills the roles on file ask for.
|
||||
|
||||
## Beginner
|
||||
|
||||
Pour to spec and keep a station clean through a service.
|
||||
|
||||
## Intermediate
|
||||
|
||||
Refuse service without a scene, and document what happened.
|
||||
|
||||
## Advanced
|
||||
|
||||
Run a bar alone through a full event.
|
||||
|
||||
## Expert
|
||||
|
||||
Design a list and train the people who pour it.
|
||||
|
||||
## Verification
|
||||
|
||||
Owliver evaluates the recorded pour and the spoken refusal.
|
||||
98
skills/candidate-analysis.md
Normal file
98
skills/candidate-analysis.md
Normal file
@@ -0,0 +1,98 @@
|
||||
---
|
||||
id: candidate-analysis
|
||||
name: Candidate Analysis
|
||||
description: Analyse the applicant pool's quality, and how much of it has actually been screened.
|
||||
category: hiring
|
||||
pages:
|
||||
- candidates
|
||||
- candidates-analysis
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- candidate quality
|
||||
- quality of candidates
|
||||
- score band
|
||||
- score bands
|
||||
- screening coverage
|
||||
- how strong*candidates
|
||||
- how good*candidates
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: How strong is the candidate pool?
|
||||
capability: summary
|
||||
- label: Show candidates by score
|
||||
capability: table
|
||||
- label: Score bands
|
||||
capability: progress
|
||||
capabilities:
|
||||
- summary
|
||||
- stats
|
||||
- table
|
||||
- list
|
||||
- progress
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Candidate quality
|
||||
source: candidates.quality
|
||||
stats:
|
||||
title: Candidate quality
|
||||
source: candidates.quality
|
||||
table:
|
||||
title: Candidates by score
|
||||
source: candidates.quality
|
||||
limit: 10
|
||||
list:
|
||||
title: Strongest candidates
|
||||
source: candidates.quality
|
||||
limit: 5
|
||||
progress:
|
||||
title: Candidate quality
|
||||
source: candidates.quality
|
||||
insight:
|
||||
title: Candidate quality
|
||||
source: candidates.quality
|
||||
---
|
||||
|
||||
# Candidate Analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report how strong the applicant pool is.
|
||||
- Report how much of it anyone has actually looked at, beside the quality figure.
|
||||
- Rank candidates by score so a shortlist has a starting point.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Summarize pool size, screening coverage, average score and interview count.
|
||||
- List or tabulate candidates by score.
|
||||
- Break the scored pool into quality bands.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `candidates.quality`, which counts `JobApplication` records and their
|
||||
`ai_score`, joined to `AIInterview` records for interview coverage.
|
||||
|
||||
## Analysis
|
||||
|
||||
Coverage is reported next to quality, always. An average score computed from a
|
||||
fifth of the pool is not the pool's average, and reporting the first without the
|
||||
second is how a hiring dashboard talks itself into confidence.
|
||||
|
||||
Scored candidates are grouped into four bands — 80 and above, 70 to 79, 50 to 69,
|
||||
and below 50 — because a mean hides whether a pool is uniformly mediocre or
|
||||
split between strong and weak.
|
||||
|
||||
## Output
|
||||
|
||||
Pool size, share screened, average score across scored candidates only, and
|
||||
interview count. Then candidates ranked by score with their role and stage.
|
||||
|
||||
## Limitations
|
||||
|
||||
- Unscored candidates are excluded from the average rather than counted as zero.
|
||||
They are reported separately as the unscreened share.
|
||||
- A score is an AI screening score, not an interview outcome or a hiring decision.
|
||||
- Filtering by period counts applications by when they were received, not by when
|
||||
they were screened.
|
||||
29
skills/candidate-search.md
Normal file
29
skills/candidate-search.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
id: candidate-search
|
||||
name: Candidate Search
|
||||
description: Help Owliver search and summarize candidates.
|
||||
pages:
|
||||
- candidates
|
||||
- candidates-analysis
|
||||
status: active
|
||||
actions:
|
||||
- navigate_to_candidates
|
||||
---
|
||||
|
||||
# Candidate Search
|
||||
|
||||
## Purpose
|
||||
|
||||
Read the candidate pipeline on the current page and answer questions about who
|
||||
is waiting, who is strongest, and where screening is incomplete.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Summarize the candidate pipeline.
|
||||
- Identify candidates waiting on a decision.
|
||||
- Surface unscored or incomplete records.
|
||||
- Compare candidates by screening score.
|
||||
|
||||
## Actions
|
||||
|
||||
- navigate_to_candidates
|
||||
69
skills/create-position.md
Normal file
69
skills/create-position.md
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
id: create-position
|
||||
name: Create Position
|
||||
description: Create a position by answering a few questions in the chat.
|
||||
pages:
|
||||
- positions
|
||||
status: active
|
||||
prompt: Create a position
|
||||
triggers:
|
||||
- create a position
|
||||
- create position
|
||||
# A client is the company a position is staffed for, so asking for one starts
|
||||
# the same conversation — it simply leads with the company question.
|
||||
- create a client
|
||||
- create client
|
||||
- add a client
|
||||
- new client
|
||||
- create a * position
|
||||
- create * position
|
||||
- new position
|
||||
- new * position
|
||||
- post a job
|
||||
- post a * job
|
||||
- open a role
|
||||
- open a * role
|
||||
- add a position
|
||||
- i want to hire
|
||||
actions:
|
||||
- create_position
|
||||
---
|
||||
|
||||
# Create Position
|
||||
|
||||
## Purpose
|
||||
|
||||
Create a position without leaving the Positions page. Owliver asks for what it
|
||||
does not already know, one question at a time, offers the answers as chips, then
|
||||
reads the whole thing back before anything is written.
|
||||
|
||||
No form opens. No page is navigated to. The record created is the same
|
||||
`JobPosting` the manual form writes, through the same create action.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Understand requests to create positions.
|
||||
- Read the role, location, pay, experience, English level and certifications out
|
||||
of a single sentence.
|
||||
- Ask only for what the request did not already answer.
|
||||
- Offer each answer as a suggestion, so the whole flow can be clicked.
|
||||
- Read the position back for confirmation before creating it.
|
||||
- Create the position on the page you are already on.
|
||||
|
||||
## Conversation
|
||||
|
||||
Each line is `field | question | suggestions | required?`. Suggestions beginning
|
||||
with `@` come from the application's own data, so a role category added in the
|
||||
form is offered here without this file changing.
|
||||
|
||||
- company | Which client is this role for? Type the company name. | | required
|
||||
- role_category | What role are you hiring for? | @roles | required
|
||||
- location | Where will this role be based? | Chennai; Bengaluru; Coimbatore; Bay Area; Other | required
|
||||
- pay | What is the pay range? | $18–$28/hr; $25–$35/hr; $30–$40/hr; Custom | required
|
||||
- min_experience_years | Any minimum experience? | No minimum; 1 year; 2 years; 3+ years | optional
|
||||
- english_required | What is the minimum English level? | @english | optional
|
||||
- certifications_required | Any required certifications? | @certifications; None | optional
|
||||
|
||||
## Actions
|
||||
|
||||
- create_position
|
||||
33
skills/customer-service-training.md
Normal file
33
skills/customer-service-training.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
id: customer-service-training
|
||||
name: Customer Service Training
|
||||
description: Training path for handling guests, complaints and recovery.
|
||||
skill: customer_service
|
||||
pages:
|
||||
- positions
|
||||
- candidates
|
||||
- profile
|
||||
---
|
||||
|
||||
# Customer Service Training
|
||||
|
||||
Reading a guest, handling what goes wrong, and leaving them better than you
|
||||
found them. Three rungs: there is no fourth thing to be good at here, and
|
||||
inventing an Expert tier would make Expert mean less everywhere else.
|
||||
|
||||
## Beginner
|
||||
|
||||
Greet, read and serve a guest without supervision.
|
||||
|
||||
## Intermediate
|
||||
|
||||
Handle a complaint to resolution without escalating it.
|
||||
|
||||
## Advanced
|
||||
|
||||
Recover a badly broken experience and keep the guest.
|
||||
|
||||
## Verification
|
||||
|
||||
Owliver scores the response against the criteria on each module — what was
|
||||
acknowledged, what was offered, and whether the table was protected.
|
||||
81
skills/executive-summary.md
Normal file
81
skills/executive-summary.md
Normal file
@@ -0,0 +1,81 @@
|
||||
---
|
||||
id: executive-summary
|
||||
name: Executive Summary
|
||||
description: The whole workspace in one reading — positions, candidates, hires, talent and attendance.
|
||||
category: analytics
|
||||
pages:
|
||||
- control-center
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- executive summary
|
||||
- workspace summary
|
||||
- overall summary
|
||||
- state of the workspace
|
||||
- brief me
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: Give me an executive summary
|
||||
capability: summary
|
||||
- label: Show the headline figures
|
||||
capability: stats
|
||||
capabilities:
|
||||
- summary
|
||||
- stats
|
||||
- card
|
||||
- table
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Workspace summary
|
||||
source: workspace.summary
|
||||
stats:
|
||||
title: Workspace summary
|
||||
source: workspace.summary
|
||||
card:
|
||||
title: Workspace summary
|
||||
source: workspace.summary
|
||||
table:
|
||||
title: Workspace summary
|
||||
source: workspace.summary
|
||||
insight:
|
||||
title: Workspace summary
|
||||
source: workspace.summary
|
||||
---
|
||||
|
||||
# Executive Summary
|
||||
|
||||
## Purpose
|
||||
|
||||
- Give a management-level reading of the whole workspace in one answer.
|
||||
- Draw every figure from the source that owns it, so the summary cannot drift
|
||||
from the pages it summarizes.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Report open roles, candidates, hires, talent pool size, attendance and logged events.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `workspace.summary`, which counts `JobPosting`, `JobApplication`, `Staff`,
|
||||
`WorkerProfile`, `UserActivity` and `ShiftRecord`.
|
||||
|
||||
## Analysis
|
||||
|
||||
Each figure is read from the domain that owns it rather than recomputed here. A
|
||||
domain with no records contributes a zero and says so in its detail line — the
|
||||
summary reports what is there, including an absence.
|
||||
|
||||
## Output
|
||||
|
||||
Six headline figures: open roles, candidates, hires, talent pool, attendance
|
||||
rate and events logged, each with a supporting detail.
|
||||
|
||||
## Limitations
|
||||
|
||||
- This is a count, not a diagnosis. Which figures are a problem is what Staffing
|
||||
Risk, Operational Risk and Anomaly Detection answer.
|
||||
- Attendance is 0 where no shifts have been recorded, and the detail line says
|
||||
so rather than implying nobody turned up.
|
||||
- No trend or comparison to a previous period is included.
|
||||
31
skills/food-safety-training.md
Normal file
31
skills/food-safety-training.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
id: food-safety-training
|
||||
name: Food Safety Training
|
||||
description: Training path for hazard awareness, temperature control and hygiene.
|
||||
skill: food_safety
|
||||
pages:
|
||||
- positions
|
||||
- candidates
|
||||
- profile
|
||||
---
|
||||
|
||||
# Food Safety Training
|
||||
|
||||
Finding the hazard before it finds you. Every level is evidenced against a real
|
||||
prep station rather than a quiz score alone.
|
||||
|
||||
## Beginner
|
||||
|
||||
Identify the common hazards in a prep station.
|
||||
|
||||
## Intermediate
|
||||
|
||||
Hold, store and label food at safe temperatures through a full service.
|
||||
|
||||
## Advanced
|
||||
|
||||
Run a station to audit standard and correct others on it.
|
||||
|
||||
## Verification
|
||||
|
||||
Owliver judges the hazards identified and the ones missed.
|
||||
64
skills/forge-skill-management.md
Normal file
64
skills/forge-skill-management.md
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
id: forge-skill-management
|
||||
name: Forge Skill Management
|
||||
description: Create workforce skills, training and verification in KROW Forge.
|
||||
pages:
|
||||
- university
|
||||
status: active
|
||||
prompt: Create a skill
|
||||
triggers:
|
||||
- create a skill
|
||||
- create skill
|
||||
- create a new skill
|
||||
- create a skill for *
|
||||
- create a * skill
|
||||
- new skill
|
||||
- add a skill
|
||||
- build a skill
|
||||
- draft a skill
|
||||
- create a skill training
|
||||
- create skill training
|
||||
- add skill training
|
||||
- create training
|
||||
- create a training for *
|
||||
- create training for *
|
||||
- create a * training
|
||||
- add training
|
||||
- add training to *
|
||||
- build training
|
||||
- write training
|
||||
- create a challenge for *
|
||||
- add a challenge for *
|
||||
- review the * skill
|
||||
- review skill
|
||||
actions:
|
||||
- open_create_skill_training
|
||||
- open_create_training
|
||||
- navigate_to_forge
|
||||
---
|
||||
|
||||
# Forge Skill Management
|
||||
|
||||
## Purpose
|
||||
|
||||
Help an administrator build the workforce skill library: define what the
|
||||
workforce must be able to do, write the training that teaches it, decide what
|
||||
counts as proof, and say what the evaluation checks — using the Forge authoring
|
||||
flow the page already has.
|
||||
|
||||
Owliver never publishes. It drafts, and hands the draft back to the existing
|
||||
flow for review, which is the same rule Create Position follows.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Create workforce skills
|
||||
- Create training
|
||||
- Define verification
|
||||
- Explain Forge skills
|
||||
- Navigate Forge workflows
|
||||
|
||||
## Actions
|
||||
|
||||
- open_create_skill_training
|
||||
- open_create_training
|
||||
- navigate_to_forge
|
||||
61
skills/hiring-activity-assistant.md
Normal file
61
skills/hiring-activity-assistant.md
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
id: hiring-activity-assistant
|
||||
name: Hiring Activity Assistant
|
||||
description: Answer questions about recent hiring activity on a position.
|
||||
pages:
|
||||
- positions
|
||||
status: active
|
||||
triggers:
|
||||
- hiring activity
|
||||
- hiring summary
|
||||
- hiring flow
|
||||
- recent applications
|
||||
- applications over time
|
||||
owliver:
|
||||
enabled: true
|
||||
# One suggestion per capability. A bare `- Show hiring activity` used to sit
|
||||
# above these two: with no `capability:` it fell through to the first declared
|
||||
# one — `summary` — so it and "Summarize hiring activity" were two chips for a
|
||||
# single answer. Every suggestion here now names the capability it asks for,
|
||||
# which is what makes a chip and an answer one-to-one.
|
||||
suggestions:
|
||||
- label: Summarize hiring activity for this position
|
||||
capability: summary
|
||||
- label: Show hiring activity as a flow
|
||||
capability: flow
|
||||
capabilities:
|
||||
- summary
|
||||
- flow
|
||||
responses:
|
||||
summary:
|
||||
title: Hiring Activity Summary
|
||||
source: position.activity
|
||||
periods:
|
||||
- today
|
||||
- yesterday
|
||||
- last-week
|
||||
flow:
|
||||
title: Hiring Activity Flow
|
||||
source: position.activity
|
||||
steps:
|
||||
- today
|
||||
- yesterday
|
||||
- last-week
|
||||
---
|
||||
|
||||
# Hiring Activity Assistant
|
||||
|
||||
## Purpose
|
||||
|
||||
Answer questions about how many people have applied to a position lately, in the
|
||||
panel beside the Positions experience.
|
||||
|
||||
This is a separate definition from the Hiring Activity UI skill, and each is
|
||||
managed on its own list — but both name `position.activity`, so both are read by
|
||||
the one shared resolver from the same application records. Switching either off
|
||||
leaves the other exactly as it was.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Summarize applications to this position over today, yesterday and last week.
|
||||
- Draw the same counts as a flow inside the answer.
|
||||
88
skills/hiring-history-analysis.md
Normal file
88
skills/hiring-history-analysis.md
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
id: hiring-history-analysis
|
||||
name: Hiring History Analysis
|
||||
description: Analyse completed hires — who was hired, how quickly, and how well they scored.
|
||||
category: hiring
|
||||
pages:
|
||||
- hired-history
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- hiring history
|
||||
- hire quality
|
||||
- quality of hire
|
||||
- time to hire
|
||||
- who did we hire
|
||||
- recent hires
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: Who did we hire recently?
|
||||
capability: list
|
||||
- label: How is hiring performance?
|
||||
capability: summary
|
||||
capabilities:
|
||||
- summary
|
||||
- stats
|
||||
- list
|
||||
- table
|
||||
- timeline
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Hiring performance
|
||||
source: hires.performance
|
||||
stats:
|
||||
title: Hiring performance
|
||||
source: hires.performance
|
||||
insight:
|
||||
title: Hiring performance
|
||||
source: hires.performance
|
||||
list:
|
||||
title: Recent hires
|
||||
source: hires.recent
|
||||
limit: 10
|
||||
table:
|
||||
title: Recent hires
|
||||
source: hires.recent
|
||||
timeline:
|
||||
title: Recent hires
|
||||
source: hires.recent
|
||||
---
|
||||
|
||||
# Hiring History Analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report hires that have already happened.
|
||||
- Report how long they took and how well they scored.
|
||||
- Keep the record after the decision separate from the pipeline before it.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Summarize total hires, average days to hire, quality of hire and conversion rate.
|
||||
- List recent hires with their role and date.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `hires.performance` and `hires.recent`, which join `Staff` to their
|
||||
`JobApplication` and `JobPosting` records.
|
||||
|
||||
## Analysis
|
||||
|
||||
Time to hire is the span between an application arriving and its final update.
|
||||
Quality of hire is the average AI score across scored applications. Conversion
|
||||
is hires as a share of all applications.
|
||||
|
||||
## Output
|
||||
|
||||
Headline hiring figures, and a list or timeline of recent hires.
|
||||
|
||||
## Limitations
|
||||
|
||||
- This is the record after the decision. Candidates still under consideration
|
||||
are Candidate Analysis's question.
|
||||
- Time to hire is measured from the application record's timestamps, not from
|
||||
when a role was opened.
|
||||
- Quality of hire is a screening score, not a performance review. Nothing here
|
||||
reports how a hire has since worked out.
|
||||
88
skills/hiring-pulse-analysis.md
Normal file
88
skills/hiring-pulse-analysis.md
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
id: hiring-pulse-analysis
|
||||
name: Hiring Pulse Analysis
|
||||
description: Read the recent rhythm of hiring — applications arriving, and how the funnel is converting.
|
||||
category: hiring
|
||||
pages:
|
||||
- control-center
|
||||
- analytics
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- hiring pulse
|
||||
- hiring velocity
|
||||
- hiring rhythm
|
||||
- application rate
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: What is the hiring pulse?
|
||||
capability: summary
|
||||
- label: Applications over recent periods
|
||||
capability: flow
|
||||
capabilities:
|
||||
- summary
|
||||
- flow
|
||||
- stats
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Hiring pulse
|
||||
source: candidates.activity
|
||||
periods:
|
||||
- today
|
||||
- last-7-days
|
||||
- previous-month
|
||||
flow:
|
||||
title: Applications over time
|
||||
source: candidates.activity
|
||||
periods:
|
||||
- today
|
||||
- last-7-days
|
||||
- this-month
|
||||
- previous-month
|
||||
stats:
|
||||
title: Hiring performance
|
||||
source: hires.performance
|
||||
insight:
|
||||
title: Hiring performance
|
||||
source: hires.performance
|
||||
---
|
||||
|
||||
# Hiring Pulse Analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report the recent rhythm of hiring: how many applications are arriving, and
|
||||
how the funnel is converting them.
|
||||
- Distinguish a quiet week from a broken pipeline.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Count applications arriving across recent periods.
|
||||
- Report conversion, speed and quality of hire.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `candidates.activity` for arrival counts over periods, and
|
||||
`hires.performance` for conversion, time-to-hire and quality.
|
||||
|
||||
## Analysis
|
||||
|
||||
Arrival counts are reported per period rather than as a single rate, because a
|
||||
rate averages away the shape — thirty applications in a month is a different
|
||||
situation depending on whether they arrived steadily or all on one day.
|
||||
|
||||
## Output
|
||||
|
||||
Applications per period, and headline conversion, speed and quality figures.
|
||||
|
||||
## Limitations
|
||||
|
||||
- **This is the analysis definition only.** The Hiring Pulse card that appears
|
||||
on Krow pages is a separate UI configuration with its own placement and
|
||||
period settings; the two are deliberately not the same definition and changing
|
||||
one does not change the other.
|
||||
- Arrival counts are by application creation date, not by when a role opened.
|
||||
- A period with no applications reports zero, which is a real reading — it does
|
||||
not distinguish "nobody applied" from "the role was not advertised".
|
||||
37
skills/leadership-training.md
Normal file
37
skills/leadership-training.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
id: leadership-training
|
||||
name: Leadership Training
|
||||
description: Training path for briefing, assigning and correcting a floor team.
|
||||
skill: leadership
|
||||
pages:
|
||||
- profile
|
||||
---
|
||||
|
||||
# Leadership Training
|
||||
|
||||
Pre-shift briefings, section assignments, and correcting a teammate without
|
||||
deflating them.
|
||||
|
||||
Attached to Profile only: this is a development path an employee plans for
|
||||
themselves. It is deliberately not surfaced on the recruiter-facing pages, which
|
||||
demonstrates that `pages` controls visibility per page rather than globally.
|
||||
|
||||
## Beginner
|
||||
|
||||
Run a pre-shift briefing for a small section.
|
||||
|
||||
## Intermediate
|
||||
|
||||
Assign sections and hold a service to time.
|
||||
|
||||
## Advanced
|
||||
|
||||
Lead a floor team of eight through a large event.
|
||||
|
||||
## Expert
|
||||
|
||||
Build the rota and develop the leads who run it.
|
||||
|
||||
## Verification
|
||||
|
||||
Owliver evaluates the recorded briefing against ownership, timing and tone.
|
||||
80
skills/learning-analysis.md
Normal file
80
skills/learning-analysis.md
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
id: learning-analysis
|
||||
name: Learning Analysis
|
||||
description: Report what the training library holds and how far the workforce has progressed through it.
|
||||
category: workforce
|
||||
pages:
|
||||
- krow-forge
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- learning analysis
|
||||
- training progress
|
||||
- course progress
|
||||
- training library
|
||||
- what training
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: How is training progressing?
|
||||
capability: progress
|
||||
- label: What does the library hold?
|
||||
capability: list
|
||||
capabilities:
|
||||
- summary
|
||||
- progress
|
||||
- list
|
||||
- table
|
||||
- stats
|
||||
responses:
|
||||
summary:
|
||||
title: Training progress
|
||||
source: workforce.training
|
||||
progress:
|
||||
title: Training progress
|
||||
source: workforce.training
|
||||
list:
|
||||
title: Training paths
|
||||
source: workforce.training
|
||||
table:
|
||||
title: Training paths
|
||||
source: workforce.training
|
||||
stats:
|
||||
title: Training progress
|
||||
source: workforce.training
|
||||
---
|
||||
|
||||
# Learning Analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report what the training library holds.
|
||||
- Report how far the workforce has progressed against it.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Summarize training paths and progress against them.
|
||||
- List or tabulate the paths in the library.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `workforce.training`, the existing source behind the Forge progression
|
||||
views.
|
||||
|
||||
## Analysis
|
||||
|
||||
Progress is counted against the paths the library actually defines, so adding a
|
||||
path changes the denominator rather than being reported as a sudden fall in
|
||||
completion.
|
||||
|
||||
## Output
|
||||
|
||||
Training paths with progress against each.
|
||||
|
||||
## Limitations
|
||||
|
||||
- A skill in Forge is something a person learns and is verified in. It is not an
|
||||
Owliver capability, and the two must not be described as the same thing.
|
||||
- Progress is personal to the signed-in worker where their record is loaded, and
|
||||
library-level otherwise.
|
||||
- This reports progression, not whether the training is any good.
|
||||
94
skills/operational-risk.md
Normal file
94
skills/operational-risk.md
Normal file
@@ -0,0 +1,94 @@
|
||||
---
|
||||
id: operational-risk
|
||||
name: Operational Risk
|
||||
description: Surface what is going wrong operationally across hiring and the roster.
|
||||
category: operations
|
||||
pages:
|
||||
- control-center
|
||||
- activity
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- operational risk
|
||||
- operations risk
|
||||
- what is going wrong
|
||||
- backlog
|
||||
- decisions owed
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: What is going wrong operationally?
|
||||
capability: list
|
||||
- label: Summarize operational risk
|
||||
capability: summary
|
||||
capabilities:
|
||||
- summary
|
||||
- list
|
||||
- table
|
||||
- stats
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Operational risk
|
||||
source: operations.risk
|
||||
list:
|
||||
title: Operational risks
|
||||
source: operations.risk
|
||||
table:
|
||||
title: Operational risks
|
||||
source: operations.risk
|
||||
stats:
|
||||
title: Operational risk
|
||||
source: operations.risk
|
||||
insight:
|
||||
title: Biggest operational risk
|
||||
source: operations.risk
|
||||
---
|
||||
|
||||
# Operational Risk
|
||||
|
||||
## Purpose
|
||||
|
||||
- Surface the operational problems that need somebody to act.
|
||||
- Draw them from every domain, because they feel like one problem to the person
|
||||
who has to fix them.
|
||||
- Report nothing when the operation is running.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Detect strong candidates left awaiting a decision.
|
||||
- Detect an unscreened application backlog.
|
||||
- Detect open roles with no applicants.
|
||||
- Detect shifts going unworked.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `operations.risk`, which joins `JobApplication`, `JobPosting` and
|
||||
`ShiftRecord`.
|
||||
|
||||
## Analysis
|
||||
|
||||
Four checks, each with a floor so ordinary operation does not trip them:
|
||||
|
||||
1. **Decisions owed** — a candidate scoring 70 or above, screened or
|
||||
shortlisted, and not moved on. Any such candidate counts.
|
||||
2. **Unscreened backlog** — three or more applications with no score.
|
||||
3. **Roles with no applicants** — any open role nobody has applied to.
|
||||
4. **Shifts unworked** — two or more absences or no-shows in the last 7 days.
|
||||
|
||||
Findings are ordered most severe first. A finding is included only when it
|
||||
exists; an empty list means the operation is running, not that the check was
|
||||
skipped.
|
||||
|
||||
## Output
|
||||
|
||||
A count of open risks, then a row per risk naming what is wrong and the figures
|
||||
behind it.
|
||||
|
||||
## Limitations
|
||||
|
||||
- Thresholds are fixed rather than tuned to this workspace's volume.
|
||||
- "Decisions owed" assumes a screened, strong candidate should be progressed.
|
||||
A candidate deliberately held is indistinguishable from one overlooked.
|
||||
- The shift check covers the last 7 days only; a longer pattern is Attendance
|
||||
Analysis's question.
|
||||
98
skills/overtime-analysis.md
Normal file
98
skills/overtime-analysis.md
Normal file
@@ -0,0 +1,98 @@
|
||||
---
|
||||
id: overtime-analysis
|
||||
name: Overtime Analysis
|
||||
description: Analyse overtime hours, who is carrying them, and whether they are growing.
|
||||
category: workforce
|
||||
pages:
|
||||
- analytics
|
||||
- control-center
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- overtime
|
||||
- extra hours
|
||||
- hours worked
|
||||
- working late
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: How much overtime are we running?
|
||||
capability: summary
|
||||
- label: Who is working the most overtime?
|
||||
capability: table
|
||||
- label: Overtime over recent periods
|
||||
capability: flow
|
||||
capabilities:
|
||||
- summary
|
||||
- stats
|
||||
- table
|
||||
- progress
|
||||
- flow
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Overtime
|
||||
source: workforce.overtime
|
||||
stats:
|
||||
title: Overtime
|
||||
source: workforce.overtime
|
||||
table:
|
||||
title: Overtime by person
|
||||
source: workforce.overtime
|
||||
progress:
|
||||
title: Overtime by person
|
||||
source: workforce.overtime
|
||||
flow:
|
||||
title: Overtime over time
|
||||
source: workforce.overtime
|
||||
periods:
|
||||
- last-7-days
|
||||
- this-month
|
||||
- previous-month
|
||||
insight:
|
||||
title: Overtime
|
||||
source: workforce.overtime
|
||||
---
|
||||
|
||||
# Overtime Analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report how much overtime the workforce is carrying.
|
||||
- Say who is carrying it, since a total spread evenly and a total sitting on one
|
||||
person are different problems.
|
||||
- Show whether it is growing.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Summarize overtime hours and their share of scheduled time.
|
||||
- Compare overtime per person, most hours first.
|
||||
- Show overtime across recent periods.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `workforce.overtime`, which compares scheduled hours to hours actually
|
||||
worked across `ShiftRecord` entries.
|
||||
|
||||
## Analysis
|
||||
|
||||
Overtime is reported both as hours and as a share of scheduled time. The ratio
|
||||
is what makes two teams comparable — forty hours means one thing across a
|
||||
fortnight and another across a year.
|
||||
|
||||
Attendance and overtime are kept separate because one hides the other: a team
|
||||
can have perfect attendance and be running on thirty hours of overtime a week,
|
||||
and a single "workforce hours" figure would report that as healthy.
|
||||
|
||||
## Output
|
||||
|
||||
Total overtime hours, share of scheduled time, average per shift, and a row per
|
||||
person. Over periods, hours per window.
|
||||
|
||||
## Limitations
|
||||
|
||||
- Overtime is derived from recorded shift end times, not from an approvals
|
||||
process. A shift that ran long appears here whether or not it was authorised.
|
||||
- A person with no overtime appears with zero, which is a real reading rather
|
||||
than missing data.
|
||||
- Cost is not calculated. No pay rate is attached to a shift record.
|
||||
37
skills/server-training.md
Normal file
37
skills/server-training.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
id: server-training
|
||||
name: Server Training
|
||||
description: Training path for server employees.
|
||||
skill: server
|
||||
pages:
|
||||
- positions
|
||||
- candidates
|
||||
- profile
|
||||
---
|
||||
|
||||
# Server Training
|
||||
|
||||
The path from a first shift on the floor to running a section in a fine dining
|
||||
room. Each level is held only when every module on that rung has been completed
|
||||
and Owliver has passed the evidence.
|
||||
|
||||
## Beginner
|
||||
|
||||
Complete the fundamentals of guest service.
|
||||
|
||||
## Intermediate
|
||||
|
||||
Complete advanced table service and order management.
|
||||
|
||||
## Advanced
|
||||
|
||||
Complete fine dining service and guest recovery.
|
||||
|
||||
## Expert
|
||||
|
||||
Lead a floor team through a full service without supervision.
|
||||
|
||||
## Verification
|
||||
|
||||
Owliver evaluates the employee's practical response against the criteria on each
|
||||
module, and the level is awarded only on a pass.
|
||||
99
skills/staffing-risk.md
Normal file
99
skills/staffing-risk.md
Normal file
@@ -0,0 +1,99 @@
|
||||
---
|
||||
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.
|
||||
93
skills/talent-pool-analysis.md
Normal file
93
skills/talent-pool-analysis.md
Normal file
@@ -0,0 +1,93 @@
|
||||
---
|
||||
id: talent-pool-analysis
|
||||
name: Talent Pool Analysis
|
||||
description: Analyse the talent already known to this workspace — who is in it, how they score, and who is available.
|
||||
category: hiring
|
||||
pages:
|
||||
- talent-pool
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- talent pool
|
||||
- pool health
|
||||
- available talent
|
||||
- who is available
|
||||
- supply of talent
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: How healthy is the talent pool?
|
||||
capability: summary
|
||||
- label: Who is in the pool?
|
||||
capability: table
|
||||
- label: Strongest people in the pool
|
||||
capability: list
|
||||
capabilities:
|
||||
- summary
|
||||
- stats
|
||||
- table
|
||||
- list
|
||||
- progress
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Talent pool
|
||||
source: talent.pool
|
||||
stats:
|
||||
title: Talent pool
|
||||
source: talent.pool
|
||||
table:
|
||||
title: Talent pool
|
||||
source: talent.pool
|
||||
list:
|
||||
title: Strongest in the pool
|
||||
source: talent.pool
|
||||
limit: 5
|
||||
progress:
|
||||
title: Talent pool
|
||||
source: talent.pool
|
||||
insight:
|
||||
title: Talent pool
|
||||
source: talent.pool
|
||||
---
|
||||
|
||||
# Talent Pool Analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report who this workspace already knows and could place.
|
||||
- Say how much of the pool has been assessed, and how much has not.
|
||||
- Report availability and certification coverage.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Summarize pool size, how many are scored, and average score.
|
||||
- List or tabulate people by score.
|
||||
- Report how many have availability on file and how many are certified.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `talent.pool`, which counts `WorkerProfile` records — their `krow_score`,
|
||||
`availability`, `certifications` and stated role.
|
||||
|
||||
## Analysis
|
||||
|
||||
The average score is computed across **scored profiles only**. Counting an
|
||||
unassessed profile as zero would report a healthy pool as poor in exact
|
||||
proportion to how much of it nobody has got to yet — a figure that gets worse
|
||||
as the pool grows, which is the opposite of what it should do.
|
||||
|
||||
An unscored person is reported as "Not yet scored" rather than shown with a
|
||||
zero, because a zero reads as a bad assessment rather than an absent one.
|
||||
|
||||
## Output
|
||||
|
||||
Pool size, how many are scored and how many are not, average score across the
|
||||
scored, availability and certification counts, then people ranked by score.
|
||||
|
||||
## Limitations
|
||||
|
||||
- This is supply, not applicants. Someone in the pool has not applied to anything
|
||||
by being here, and must not be described as a candidate for a role.
|
||||
- Availability is what a person stated on their profile, not a live calendar.
|
||||
- A profile with no score is unassessed, which is not the same as being weak.
|
||||
88
skills/workforce-analytics.md
Normal file
88
skills/workforce-analytics.md
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
id: workforce-analytics
|
||||
name: Workforce Analytics
|
||||
description: Report workforce coverage — open roles and who has actually been hired into them.
|
||||
category: analytics
|
||||
pages:
|
||||
- analytics
|
||||
status: active
|
||||
version: 1
|
||||
triggers:
|
||||
- workforce analytics
|
||||
- workforce coverage
|
||||
- roles covered
|
||||
- coverage
|
||||
owliver:
|
||||
enabled: true
|
||||
suggestions:
|
||||
- label: How well are open roles covered?
|
||||
capability: summary
|
||||
- label: Coverage by role
|
||||
capability: table
|
||||
capabilities:
|
||||
- summary
|
||||
- stats
|
||||
- table
|
||||
- list
|
||||
- progress
|
||||
- insight
|
||||
responses:
|
||||
summary:
|
||||
title: Workforce coverage
|
||||
source: workforce.coverage
|
||||
stats:
|
||||
title: Workforce coverage
|
||||
source: workforce.coverage
|
||||
table:
|
||||
title: Coverage by role
|
||||
source: workforce.coverage
|
||||
list:
|
||||
title: Coverage by role
|
||||
source: workforce.coverage
|
||||
progress:
|
||||
title: Coverage by role
|
||||
source: workforce.coverage
|
||||
insight:
|
||||
title: Workforce coverage
|
||||
source: workforce.coverage
|
||||
---
|
||||
|
||||
# Workforce Analytics
|
||||
|
||||
## Purpose
|
||||
|
||||
- Report how many open roles have somebody hired into them.
|
||||
- Name the roles that have nobody yet.
|
||||
- State plainly where a role has not said how many people it needs.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Count open roles, those with someone hired, and those with nobody.
|
||||
- Report coverage per role.
|
||||
|
||||
## Data
|
||||
|
||||
Reads `workforce.coverage`, which reads open `JobPosting` records through
|
||||
`demandFor` — the same reading the Positions page uses — joined to `Staff` by
|
||||
`job_posting_id`.
|
||||
|
||||
## Analysis
|
||||
|
||||
A role's coverage is the number of people hired into it against the number it
|
||||
asked for. Where a role has not declared a headcount, this reports the hires and
|
||||
says the target is unstated. It does **not** assume one person per role: that
|
||||
would produce a confident fill percentage that means nothing, and nothing on
|
||||
screen would say so.
|
||||
|
||||
## Output
|
||||
|
||||
Counts of open roles, covered roles and uncovered roles, how many roles state a
|
||||
headcount, and a row per role.
|
||||
|
||||
## Limitations
|
||||
|
||||
- No position in this workspace currently states a headcount, so no fill
|
||||
percentage is reported. The count of hires per role is real.
|
||||
- Only open roles are counted. Paused and closed roles are excluded.
|
||||
- Assignment records would refine this, but none exist yet; coverage is
|
||||
therefore counted from hires.
|
||||
Reference in New Issue
Block a user