Skip to main content

KPI Performance Framework

Version: 2.0.0
Status: Core Implementation Complete
Last Updated: 2026-01-17

Executive Summary

The KPI Performance Framework is a revolutionary approach to staff performance management designed specifically for disability support organisations. Unlike traditional KPI systems that create anxiety and feel punitive, this framework emphasizes transparency, coaching, and effort recognition.

Why This Matters for RABS

RABS has historically lacked formal KPI tracking due to:

  • Limited HR resources to manually track performance
  • Fear of creating a punitive environment for support workers
  • No integrated system to collect data from multiple sources
  • Concern about damaging workplace culture

This framework solves these problems by:

  1. Automating data collection from existing systems (Deputy, Discord, shift notes)
  2. Recognizing effort alongside outcomes (effort score provides buffer before triggers)
  3. Providing coaching instead of surveillance
  4. Separating process transparency from data access (staff see scores and tips, not raw peer feedback)
  5. Visual storytelling through the tree-to-phoenix health visualization

Philosophy & Core Principles

1. Transparency of PROCESS, Not Raw DATA

Staff can see:

  • ✅ What KPIs they're measured on
  • ✅ How each KPI is calculated (data sources listed)
  • ✅ Their current scores and trends
  • ✅ AI-generated coaching tips
  • ✅ Areas for growth with actionable guidance

Staff cannot see:

  • ❌ Raw peer feedback or who said what
  • ❌ Individual incident reports naming them
  • ❌ Management's private concerns
  • ❌ Detailed data points (aggregated only)

2. Effort Matters

Every KPI has a separate effort score that acts as a buffer:

  • Effort score decays over time (always trending toward 0%)
  • Evidence-based entries add effort points
  • 100% effort = up to 10% buffer on actual score
  • Formula: effective_score = actual_score + (effort_score × 0.10)
  • This means a staff member at 55% actual with 100% effort has 65% effective score

Why this matters:

  • A support worker who genuinely tries but struggles gets a buffer before triggers
  • Working with HR to document effort can prevent performance workflows
  • Effort must be continuously demonstrated (it decays)

3. Living Journal, Not Static Scores

Every score change is logged with context:

  • What triggered the change (telemetry, observation, catch-up)
  • Who made the entry (system vs. manager)
  • Why it matters (AI-generated summary)
  • Staff can request context be added (approval queue)

4. Coaching Over Surveillance

The AI assistant:

  • Generates personalized coaching tips based on patterns
  • Celebrates improvements and streaks
  • Suggests specific actions for growth
  • Never names individual complainants or incidents

Scoring System

Points-Based Model

Core Rule: 10 points = 1% (universal, predictable)

All KPIs use a standardized points system:

  • Journal entries add or deduct points
  • Points convert to percentage at a fixed rate
  • This allows automated systems to contribute without knowing percentages

Starting State

  • All KPIs start at their target score (typically 80%)
  • No journal entries = 80% (baseline "doing your job correctly")
  • Above 80% = exceptional performance
  • Below 80% = areas for improvement

Target vs Minimum (Criticality)

The target is standardized (80%) so all KPIs are comparable. The minimum defines how critical the KPI is:

KPI TypeTargetMinimumMarginIncidents to Minimum*
Critical80%70%10%10 entries of -10 pts
Standard80%60%20%20 entries of -10 pts
Low-stakes80%40%40%40 entries of -10 pts

*Assuming -10 points = -1%

Threshold Triggers:

  • Dropping below minimum triggers performance workflow
  • But the effective score (with effort buffer) is what's checked
  • 51% actual + 100% effort (10% buffer) = 61% effective → no trigger if minimum is 60%

Standardized Point Scale

Journal entries use a dropdown with consistent options:

PointsLabelDescription
+10ExceptionalDramatic positive change in practices
+5SustainedPrevious improvements maintained
+3Minor positiveSmall improvement noted
0Note onlyContext/observation, no score change
-3Minor concernSmall issue noted
-5Not sustainedChanges not adopted or maintained
-10Significant concernAdditional evidence of undesired behaviour

Effort Score (Per KPI)

Separate from the main score, provides a safety buffer using a per-entry decay model:

  1. Per-entry lifecycle - Each effort entry has its own decay based on when it was added
  2. Contribution formula - effort_points × 10 × (1 - days_old / 42)
  3. Entries expire - After 42 days (6 weeks) an entry contributes 0
  4. Contributions stack - Multiple entries sum up with no cap (bragging rights!)
  5. Buffer calculation - effective_score = actual_score + MIN(10%, effort_score × 0.10)
  6. Maximum buffer - Capped at 10% even if effort exceeds 100%

Why per-entry decay?

  • Each effort demonstration has its own lifespan
  • Multiple entries can stack (e.g., 20 entries over 20 days = 200%+)
  • Old entries naturally expire without complex tracking
  • Sustained effort (regular entries) maintains the buffer
  • Effort > 100% is a badge of honor but buffer still caps at 10%

Caching Strategy:

  • Scores cached in cached_effort_score column
  • Updated by trigger on journal entry changes
  • Refreshed by midnight cron job for decay accuracy
  • Fast widget/dashboard loading from cached values

Example:

  • Day 0: Staff adds +10 effort → 10 × 10 × (1 - 0/42) = 100%
  • Day 21: Add +5 effort → first entry at 50%, second at 100%
    • Total: (10 × 10 × 0.5) + (5 × 10 × 1.0) = 50% + 50% = 100%
  • Day 42: First entry expired, second at 50%
    • Total: 0% + (5 × 10 × 0.5) = 25%
  • Effective buffer at 25% effort: MIN(10%, 25% × 0.10) = 2.5% protection

Complete Scoring Breakdown

Score Calculation Formula

Main Score = Target Score + (Total Points / 10)
= 80% + (sum of all score_impact values / 10)
= Clamped to 0-100%

Effort Score = SUM of each entry's contribution
= SUM(effort_points × 10 × (1 - days_old / 42))
= Can exceed 100% (no cap)

Effort Buffer = MIN(10%, Effort Score × 0.10)
= Caps at 10% even if effort > 100%

Effective Score = Main Score + Effort Buffer
= What's actually compared against minimum threshold

Worked Examples

Example 1: New Staff Member

  • Target: 80%, Minimum: 60%
  • No journal entries yet
  • Main Score: 80% (default)
  • Effort Score: 0%
  • Effective Score: 80% ✓ Above minimum

Example 2: Staff with Negative Feedback

  • Target: 80%, Minimum: 60%
  • Journal entries: -10 points, -5 points, -3 points = -18 total
  • Main Score: 80% + (-18/10) = 80% - 1.8% = 78.2%
  • Effort Score: 0%
  • Effective Score: 78.2% ✓ Above minimum

Example 3: Staff Struggling but Showing Effort

  • Target: 80%, Minimum: 60%
  • Score entries: -50 points total over past month
  • Main Score: 80% - 5% = 75%
  • Effort entries: +10 (5 days ago), +10 (15 days ago), +5 (30 days ago)
    • Entry 1: 10 × 10 × (1 - 5/42) = 88.1%
    • Entry 2: 10 × 10 × (1 - 15/42) = 64.3%
    • Entry 3: 5 × 10 × (1 - 30/42) = 14.3%
    • Total Effort: 166.7%
  • Effort Buffer: MIN(10%, 166.7% × 0.10) = 10% (capped)
  • Effective Score: 75% + 10% = 85% ✓ Above minimum

Example 4: Staff Below Minimum (Triggers Performance Workflow)

  • Target: 80%, Minimum: 60%
  • Score entries: -250 points total
  • Main Score: 80% - 25% = 55%
  • Effort: All entries > 42 days old = 0%
  • Effective Score: 55% ❌ Below 60% minimum → TRIGGER

Database Tables Involved

hr.staff_kpis
├── current_score -- Main score (cached, recalculated by trigger)
├── total_points -- Sum of all score_impact from entries
├── cached_effort_score -- Effort score (cached, refreshed by cron)
└── scores_calculated_at -- When last recalculated

hr.kpi_journal_entries
├── score_impact -- Points added/deducted (-10 to +10)
├── effort_points -- Effort demonstration (0 to +10)
└── created_at -- Used for effort decay calculation

Recalculation Triggers

  1. Journal Entry Change (trigger)

    • INSERT, UPDATE, DELETE on hr.kpi_journal_entries
    • Only recalcs if score_impact, effort_points, created_at, or staff_kpi_id changed
    • Immediate update to cached values
  2. Midnight Cron Job (scheduled)

    • Runs at 00:00 daily
    • Refreshes all active KPI scores
    • Required for effort decay to update without journal activity
    • Enable with KPI_CRON=true in .env
  3. Manual Recalculation (on-demand)

    • "Recalc Scores" button on KPI Modules page
    • Calls POST /api/v1/hr/kpis/recalculate-all
    • Useful if cron hasn't run or for debugging

Effort Decay Visualization

Day 0   ████████████████████ 100%  (10 pts × 10)
Day 7 █████████████████░░░ 83%
Day 14 ██████████████░░░░░░ 67%
Day 21 ███████████░░░░░░░░░ 50%
Day 28 ████████░░░░░░░░░░░░ 33%
Day 35 █████░░░░░░░░░░░░░░░ 17%
Day 42 ░░░░░░░░░░░░░░░░░░░░ 0% (expired)

System Integration

Automated processes can write journal entries with points:

Example: Sick leave without sufficient balance The warnings system might create:

  • KPI "Attendance": note + -10 points
  • KPI "Leave Management": note + -5 points
  • KPI "Communication": note + 0 points (context only)

This allows any system to participate in KPI scoring with predictable, auditable entries.

Total File Health

The overall "File Health" score (displayed on the tree-to-phoenix visualization):

  • Average of all active KPI percentages
  • KPIs with no entries default to target (80%)
  • Drives the visual progression from dead tree (low) to phoenix (high)

KPI Performance Interface

Visual Design: Tree to Phoenix

The KPI interface uses 8 background images showing progression:

  • 1B-2B: Dead tree in storm (0-49%)
  • 3B-4B: Bare tree, clouds clearing (50-64%)
  • 5B-6B: Growing tree with leaves (65-79%)
  • 7B: Healthy tree with light (80-89%)
  • 8B: Phoenix rising from tree (90-100%)

This creates emotional context - staff see their "file health" as a living thing that grows with good performance.

Interface Layout

  • Full-screen modal with immersive background
  • Vertical nav (top-left): Direct KPIs, Catch Up, APR, Reports
  • Content area (left ~45%): Cards and forms
  • Plinth (right): Shows overall health score on the background's pedestal
  • Background cycler (debug): Arrows to preview all backgrounds

Four Views

  1. Direct KPIs - List of assigned KPIs with scores, click to expand for Journal/Add Note
  2. Catch Up - Structured 1:1 meeting form (responses route to KPI journals)
  3. APR - Annual Performance Review form
  4. Reports - AI-generated summaries (Performance, Strengths, Development, Compliance)

Journal View

When viewing a KPI's journal:

  • Header with KPI name and "Back" button
  • "Add Note" button
  • Chronological list of entries showing:
    • Entry type badge (Note, Added, Activated, Catch Up, etc.)
    • Date and time
    • Title and content
    • Author name
    • Delete button

System Architecture

Database Schema (hr.* namespace)

hr.kpi_modules          58 KPIs across 14 role groups
hr.template_kpis Links KPIs to contract templates
hr.staff_kpis Individual assignments with cached scores
hr.kpi_journal_entries Living journal (13 entry types)
hr.kpi_adjustments Audit trail with flagging
hr.staff_catchups Structured 1:1 conversations
hr.catchup_kpi_discussions KPI-specific discussions
hr.kpi_evaluations Periodic summaries (staff/admin split)
hr.kpi_achievements Gamification (badges, streaks)

Data Flow

Contract Template → Staff Contract → Staff KPIs
↓ ↓
Default KPIs Individual Additions
↓ ↓
staff_kpis table

Journal Entries (from data sources)

Weekly AI Evaluation

Staff Dashboard + Coaching Tips

Integration Points

SourceData TypeAutomation Status
Deputy TimesheetsAttendance, punctuality, shift completion🟢 Live
Deputy LeaveLeave patterns, availability🟢 Live
Shift NotesCare quality, participant engagement🟡 Partial
Discord ActivityCommunication, team engagement🟡 Partial
Incident ReportsSafety, compliance🔴 Planned
Phone LogsResponse times, communication🔴 Planned
Supervision RecordsProfessional development🔴 Planned
Hazard ReportsSafety awareness🔴 Planned
Training RecordsCompliance, skill development🔴 Planned

KPI Module Library

Role Groups (15 Total)

  1. Universal - All staff (communication, culture, safety, documentation)
  2. Support Worker - Direct care (participant engagement, plan adherence, vehicle reporting)
  3. Senior Support - Leadership (mentoring, incident trends, shift coverage)
  4. Admin (General) - Office tasks (efficiency, record keeping, responsiveness)
  5. Program Coordinator - Bridey's role (program delivery, roster management, staff coordination)
  6. Support Coordinator - Case management (plan utilisation, NDIS compliance, stakeholder comms)
  7. Customer Service - Client-facing (response time, resolution quality, triage)
  8. Bookkeeper - Financial (transaction accuracy, reconciliation, invoice processing)
  9. WHS & Facilities - Safety & assets (hazard mitigation, fleet management, audits)
  10. Senior Manager (Finance) - Ami's role (billing accuracy, revenue protection, governance)
  11. Senior Manager (Operations) - Richelle's role (program effectiveness, workforce utilisation, risk)
  12. HR Staff - People ops (retention, recruitment, compliance, onboarding)
  13. COO (Operations) - Executive level (cross-dept efficiency, strategic delivery, technology)
  14. CEO - Organizational (sustainability, stakeholder confidence, culture)
  15. Board - Governance (effectiveness, stewardship, strategic direction)

KPI Categories

CategoryFocusExample KPIs
CultureTeam environmentTeam Collaboration, Peer Support
ProductivityReliabilityAttendance, Punctuality, Task Completion
CommunicationResponsivenessMessage Response Time, Documentation Quality
SafetyComplianceIncident Reporting, PPE Compliance
Care QualityParticipant outcomesEngagement, Goal Progress, Satisfaction
FinancialMoney managementBudget Adherence, Invoice Accuracy
LeadershipTeam developmentMentoring, Decision Making
ComplianceRegulatoryTraining Currency, Audit Readiness
OperationalEfficiencyResource Utilization, Process Improvement

Ready-to-Use KPIs (🟢 Live/Partial Automation)

Universal KPIs (All Staff)

KPIAutomationData Sources
Attendance Rate🟢 LiveDeputy Timesheets
Punctuality🟢 LiveDeputy Timesheets
Leave Management🟢 LiveDeputy Leave Records
Communication Responsiveness🟡 PartialDiscord, Email Metrics
Team Collaboration🟡 PartialDiscord, Catch-up Notes
Professional Development🔴 PlannedTraining Records

Support Worker KPIs

KPIAutomationData Sources
Shift Completion Rate🟢 LiveDeputy Timesheets
Documentation Timeliness🟡 PartialShift Notes
Participant Engagement🟡 PartialShift Notes, Feedback
Care Plan Adherence🔴 PlannedShift Notes, Goals
Incident Response🔴 PlannedIncident Reports
Handover Quality🔴 PlannedShift Notes

Senior Support KPIs

KPIAutomationData Sources
Mentoring Hours🔴 PlannedSupervision Records
Shift Coordination🟡 PartialDeputy, Discord
Quality Oversight🔴 PlannedShift Notes Review
Emergency Response🔴 PlannedIncident Reports

Development Roadmap

Phase 1: Foundation ✅ Complete

  • Database schema (58 KPIs, 9 tables)
  • Template wizard KPI selection (Step 4)
  • KPI Gallery page (page_hr_kpis.html)
  • Backend API with role filtering
  • Staff preview cards

Phase 2: KPI Performance Interface ✅ Complete (Jan 2026)

  • Full-screen immersive modal with tree-to-phoenix backgrounds
  • Vertical nav with 4 views (Direct KPIs, Catch Up, APR, Reports)
  • Direct KPI cards with scores defaulting to target (80%)
  • Journal view with entry listing
  • Add Note functionality (modal → POST to journal)
  • Delete journal entry functionality
  • Health score calculation (average of all KPIs)
  • Background image selection based on health score
  • Plinth positioning for score display

Phase 3: Points-Based Scoring ✅ Complete (Jan 2026)

  • Add score_impact and effort_points fields to journal entries
  • Points dropdown in Add Note modal (-10 to +10)
  • Score recalculation trigger on journal entry changes
  • Per-entry effort decay model (42-day lifecycle)
  • Effective score calculation (actual + effort buffer, capped at 10%)
  • Cached effort scores for fast retrieval
  • Midnight cron job for daily effort decay refresh
  • Manual "Recalc Scores" button on KPI Modules page

Phase 4: Data Source Integration (Q1-Q2 2026)

  • Deputy attendance automation
  • Deputy punctuality calculation
  • Shift notes keyword analysis
  • Discord engagement metrics
  • Leave pattern analysis

Phase 5: Catch Up & APR Forms (Q1 2026)

  • Structured Catch Up meeting form
  • Form responses route to KPI journals
  • APR (Annual Performance Review) form
  • Contract renewal integration

Phase 6: AI Evaluation Engine (Q2 2026)

  • Weekly evaluation cron job
  • AI summary generation (staff view)
  • AI concern flagging (admin view)
  • Coaching tip personalization
  • Trend analysis

Phase 7: Contract Integration (Q2 2026)

  • Auto-create staff_kpis on contract creation (done)
  • Additional KPIs for individuals
  • Probation KPI milestones
  • Contract renewal KPI review

Phase 8: Gamification & Recognition (Q3 2026)

  • Achievement badges
  • Streak tracking
  • Team leaderboards (opt-in)
  • Monthly recognition automation
  • Staff portal visibility

Phase 9: Advanced Analytics (Q3-Q4 2026)

  • Team performance dashboards
  • Department comparisons
  • Trend forecasting
  • Retention risk indicators
  • Training gap analysis

Technical Reference

API Endpoints

# KPI Modules
GET /api/v1/hr/kpi-modules List all KPIs (with filters)
GET /api/v1/hr/kpi-modules/:id Single KPI details

# Template KPIs
GET /api/v1/hr/templates/:id/kpis Template's assigned KPIs
PUT /api/v1/hr/templates/:id/kpis Update template KPIs

# Staff KPIs
GET /api/v1/hr/staff/:id/kpis Staff member's KPIs
POST /api/v1/hr/staff/:id/kpis Add KPI to staff member
PATCH /api/v1/hr/staff/:id/kpis/:kpiId Update staff KPI status

# KPI Journal
GET /api/v1/hr/staff/:staffId/kpis/:staffKpiId/journal Get journal entries
POST /api/v1/hr/staff/:staffId/kpis/:staffKpiId/journal Add journal entry
DELETE /api/v1/hr/staff/:staffId/kpis/:staffKpiId/journal/:id Delete journal entry

Query Parameters

EndpointParameterDescription
kpi-modulesrole_groupFilter by role (e.g., support_worker)
kpi-modulesinclude_universalInclude universal KPIs (default: true)
kpi-modulescategoryFilter by category (e.g., safety)
kpi-modulesactive_onlyOnly active KPIs (default: true)

PostgreSQL ENUMs

hr.kpi_category: culture, productivity, communication, safety, 
care_quality, financial, leadership, compliance, operational

hr.kpi_role_group: universal, support_worker, senior_support, admin_general,
support_coordinator, customer_service, bookkeeper,
whs_facilities, senior_manager_finance, senior_manager_operations,
hr_staff, executive, ceo, board

hr.kpi_score_type: percentage, rating, count, boolean, currency

hr.kpi_frequency: daily, weekly, fortnightly, monthly, quarterly, annually

hr.kpi_journal_entry_type: telemetry, manual_observation, manager_note,
catch_up, staff_context, adjustment, evaluation,
achievement, goal_set, goal_progress, flag_raised,
flag_resolved, system

hr.kpi_adjustment_reason: data_correction, extenuating_circumstances,
manager_discretion, staff_appeal, system_error, other

Key Files

FilePurpose
admin/src/html/page_hr_kpis.htmlKPI gallery page
admin/src/js/pages/page_hr_kpis.jsGallery JavaScript
admin/src/html/page_hr_contracting.htmlTemplate wizard (Step 4)
admin/src/js/pages/page_hr_contracting.jsTemplate wizard JS
admin/src/html/page_staff_detail.htmlStaff detail with KPI interface
admin/src/js/pages/page_staff_detail.jsKPI interface JavaScript
backend/routes_v1p/hr-contracts.jsKPI API routes (including journal)
admin/tasks/sql/sql-current/20260113_kpi_comprehensive_system.sqlDatabase schema
admin/tasks/sql/sql-current/20260117_kpi_points_and_effort.sqlPoints & effort scoring
backend/services/kpi-cron.jsMidnight cron for score refresh
storage/assets/img/kpis/*.webpTree-to-phoenix background images (1B-8B)
admin/tasks/helpers/09_task_helper_template_ui.mdUI styling guide

Appendix: All 58 KPI Modules

Universal (6)

  1. Attendance Rate
  2. Punctuality
  3. Leave Management
  4. Communication Responsiveness
  5. Team Collaboration
  6. Professional Development Engagement

Support Worker (8)

  1. Shift Completion Rate
  2. Documentation Timeliness
  3. Documentation Quality
  4. Participant Engagement
  5. Care Plan Adherence
  6. Incident Response Quality
  7. Handover Quality
  8. Flexibility & Availability

Senior Support (6)

  1. Mentoring & Coaching Hours
  2. Shift Coordination Effectiveness
  3. Quality Oversight
  4. Emergency Response Leadership
  5. Team Development
  6. Rostering Support

Admin General (5)

  1. Task Accuracy
  2. Processing Timeliness
  3. System Proficiency
  4. Stakeholder Responsiveness
  5. Record Keeping

Support Coordinator (6)

  1. Plan Review Timeliness
  2. Goal Achievement Rate
  3. Participant Advocacy
  4. Stakeholder Communication
  5. Crisis Management
  6. Documentation Compliance

Customer Service (5)

  1. Response Time
  2. Resolution Rate
  3. Customer Satisfaction
  4. Escalation Handling
  5. Knowledge Accuracy

Bookkeeper (5)

  1. Invoice Accuracy
  2. Processing Timeliness
  3. Reconciliation Accuracy
  4. Reporting Timeliness
  5. Compliance Adherence

WHS & Facilities (5)

  1. Hazard Response Time
  2. Inspection Completion
  3. Compliance Rate
  4. Incident Investigation Quality
  5. Training Delivery

Senior Manager Finance (4)

  1. Budget Accuracy
  2. Forecasting Accuracy
  3. Cost Optimization
  4. Financial Reporting

Senior Manager Operations (4)

  1. Service Delivery Quality
  2. Resource Utilization
  3. Process Improvement
  4. Team Performance

HR Staff (4)

  1. Recruitment Efficiency
  2. Onboarding Quality
  3. Employee Relations
  4. Compliance Management

(Executive, CEO, and Board KPIs to be added in Phase 2)


Intelligent Meeting System

The Three Realities Problem

When conducting catch-up meetings, there are always three potentially different perspectives:

  1. What the DATA shows - Objective scores, trend arrows, automated metrics
  2. What MANAGEMENT perceives - Tacit knowledge, observations not yet in data
  3. What the STAFF believes - Their self-assessment, context we don't have

Example: Bus Return Time KPI

  • Data shows: 72% (below 80% target, trending down)
  • Staff thinks: "I'm back by 4:15 most days, sometimes 4:20 if traffic is bad - I'm killing it!"
  • Manager observes: "They're consistently 15-20 minutes late and it's affecting the next shift"

These misalignments are exactly why catch-ups exist - to get everyone on the same page.

Pre-Meeting Sentiment Check

Before generating a meeting agenda, the manager marks each KPI with their current perception:

SymbolMeaningQuestion Tone Generated
🟢Exceeding expectationsCelebratory, learning-focused ("What can we learn from you?")
On track / NeutralMaintenance-focused ("How's this going? Any friction?")
🔴Needs attentionSupportive-corrective ("What obstacles can we help remove?")

Why this matters:

  • Captures tacit knowledge before it's in the data
  • Creates audit trail for gap analysis
  • Drives appropriate question tone
  • Acknowledges manager expertise beyond metrics

Gap Analysis Intelligence

Over time, comparing sentiment vs scores reveals patterns:

ScenarioMeaningAction
Manager marks 🔴, score is 85%Manager sees something data doesn'tInvestigate data sources, trust manager
Manager marks 🟢, score is 55%Manager too generous OR metrics wrongReview both perception and measurement
Sentiment predicts score dropManager intuition is valuableWeight sentiment in early warnings
Sentiment consistently wrongTraining opportunityCalibrate manager expectations

Procedural Meeting Generation

Each meeting is procedurally generated based on:

  • Staff member's specific KPI assignments
  • Current scores and trends
  • Manager sentiment selections
  • Meeting type (Regular, Probation, Unscheduled, APR)

Meeting Structure Template:

1. Opening & Wellbeing (2 questions)
2. [For each KPI with 🔴 sentiment - 3-4 questions each]
3. [For each KPI with ⚪ sentiment - 2 questions each]
4. [For each KPI with 🟢 sentiment - 1-2 questions each]
5. Growth & Development (1-2 questions)
6. Staff Concerns & Feedback (open)
7. Closing & Next Steps (1 question)

Question Bank Structure

Each KPI has a question bank with three tone variants:

Example: Communication Responsiveness KPI

IDToneQuestion
COMM-01-G🟢 Green"Your response times have been excellent. What's your system for staying on top of messages? Is there anything we could share with the team?"
COMM-01-N⚪ Neutral"How's the communication flow working for you? Any channels that feel overwhelming or any friction points?"
COMM-01-R🔴 Red"I've noticed some messages taking a while to get responses. What's getting in the way? Is there something about the current setup that makes it hard to stay on top of comms?"
COMM-02-G🟢 Green"Team members have mentioned you're great at keeping everyone in the loop. How do you decide what to escalate vs handle yourself?"
COMM-02-N⚪ Neutral"When something comes up on shift, how do you decide whether to message someone or wait until handover?"
COMM-02-R🔴 Red"There have been a couple of situations where information didn't get passed on in time. Can you walk me through how you handle urgent updates?"

LLM-Enhanced Generation

For more sophisticated meetings, the LLM can:

  1. Select questions - Pick the most relevant from the bank based on KPI summaries
  2. Generate custom questions - When the bank doesn't cover a specific situation
  3. Provide scoring guidance - How to interpret and score responses

LLM Generation Request Format:

CONTEXT:
- Staff: [Name] ([Role], [Tenure])
- Meeting Type: [Regular/Probation/Unscheduled/APR]
- Manager Sentiment: [KPI: sentiment pairs]

KPI SUMMARIES FROM REPORTS:
[AI-generated summaries for each KPI]

MEETING STRUCTURE REQUIRED:
1. Opening (2 questions from wellbeing list)
2. [KPI Name] (N questions, tone: [green/neutral/red])
...

QUESTION BANK: [Provided per KPI]

OUTPUT FORMAT (for each question):
{
"question_text": "...",
"source": "bank" | "generated",
"bank_question_id": "COMM-01-R" (if from bank),
"intent": "What we're trying to learn",
"expected_responses": {
"positive": "Response indicating good understanding/practice",
"neutral": "Response indicating awareness but room for growth",
"concerning": "Response indicating misalignment or issue"
},
"scoring_guidance": {
"effort_points": 0-10,
"score_impact": -10 to +10,
"conditions": "When to apply each score"
},
"fallback_question_id": "COMM-02-R" (if generated, closest bank alternative)
}

Safety Net: If LLM generates a custom question, it must also select the closest bank question as a fallback. Managers can always swap to the pre-approved alternative.

Meeting Types

1. Regular Catch Up (90-day cycle)

  • Trigger: Automatic based on contract start date
  • Purpose: Alignment, feedback, course correction
  • Duration: 30-45 minutes
  • Coverage: All active KPIs get at least one journal entry
  • Tone: Collaborative, supportive

2. Probation Catch Up (1-3 or 2-5 meetings)

  • Trigger: During probation period (3-month = 3 meetings, 6-month = 5 meetings)
  • Purpose: Onboarding support, early issue detection, two-way feedback
  • Duration: 20-30 minutes
  • Focus: "How are you finding things? What do you struggle with? What could we do better for new staff?"
  • Tone: Welcoming, curious, supportive

Probation Schedule:

Probation LengthMeeting 1Meeting 2Meeting 3Meeting 4Meeting 5
3 monthsWeek 2Week 6Week 11--
6 monthsWeek 2Week 6Week 12Week 18Week 23

3. Unscheduled Catch Up (Performance Concern)

  • Trigger: KPI drops below minimum threshold
  • Purpose: Collaborative problem-solving, determine if educational/mentoring/disciplinary
  • Duration: 30-45 minutes
  • Tone: Serious but supportive, solution-focused
  • Outcome: Action plan with clear expectations and timeline

Unscheduled Meeting Flow:

  1. Acknowledge the concern clearly
  2. Seek staff perspective (they may have context we don't)
  3. Determine root cause together
  4. Categorize response:
    • Educational - They didn't know, need training
    • Mentoring - They know but struggle, need support
    • Disciplinary - They know, can do it, choosing not to
  5. Agree on action plan
  6. Set follow-up date

4. Annual Performance Review (APR)

  • Trigger: Contract anniversary or renewal period
  • Purpose: Formal review, goal setting, career development
  • Duration: 45-60 minutes
  • Coverage: Full KPI analysis, year in review, forward planning
  • Components:
    • AI-generated performance summary
    • Strengths analysis
    • Development areas
    • Achievement recognition
    • Goal setting for next period
    • Career conversation

Response Capture & Journal Integration

Every meaningful response during a meeting creates a journal entry:

Meeting: Regular Catch Up - 2026-01-18
KPI: Communication Responsiveness
Question: "What's getting in the way of responding to messages promptly?"

Response Summary: Staff explained they struggle with notifications on their
personal phone and often miss Discord messages during shifts. Willing to
try checking at set times (start, lunch, end of shift).

→ Journal Entry Created:
- Type: catch_up
- Title: "Communication barriers discussed"
- Content: [Summary above]
- Score Impact: 0 (informational)
- Effort Points: +5 (showed willingness to improve)

Meeting Reports & Documentation

After each meeting, the system generates:

  1. Meeting Summary - Key points discussed, decisions made
  2. Action Items - With owners and due dates
  3. Journal Entries - Auto-created for each KPI discussed
  4. Follow-up Reminders - Scheduled based on action items

Contact & Support

  • System Owner: HR Department
  • Technical Lead: IT/Development Team
  • Documentation: This file + inline code comments

For questions or feature requests, contact the HR team or raise a task in the HR Tasks board.