The KPI Management section in the Performance menu has 2 pages — School KPI Admin and Teacher KPI Admin. They are sister systems: same idea (define a small list of numerical indicators, weight them, open a window, collect ratings, roll the results up) but applied at two different scales. School KPI measures the whole partner school; Teacher KPI measures each teacher individually. This page walks you through both in plain English. If a word looks new, Section 7 — Glossary explains it.

A short promise
You do not need to memorise every KPI today. Both pages are admin tooling that runs the same 4-stage cycle: define KPIs → open a window → partner school submits → HQ reviews. Once you know the cycle, both pages explain themselves. Come back here when you get stuck.
🎯
What is the KPI Management section?
A small workspace for HQ to run Eduversal's quantitative performance scorecard. Two independent admin pages, two independent KPI lists, one shared cycle. School KPI feeds the partner school's institutional dashboard. Teacher KPI feeds each teacher's individual record.
👥
Who uses it?
The Performance dropdown is open to every central_user — the 2 KPI pages are then gated per-page via Page Access. In practice the KPI Management section is run by the central_admin team — Directors and Coordinators define the KPI list, open the windows, and review what comes back. Partner schools and individual teachers do the actual data entry on Academic Hub and Teachers Hub.
One important separation. KPI is one of Eduversal's four professional development systems — KPI, Appraisal, Competency, Induction. KPI is the quantitative one (numbers, percentages, ratios). The other three are qualitative (rubric scoring + portfolios). They share a Cambridge anchor but their data streams stay separate by design. KPI never feeds the appraisal score; appraisal never feeds the KPI score. Section 5 draws the map.

Both pages run on the same shape: a list of KPIs, each one carrying a name, a weight, an input type, and a Cambridge / Indonesian / international framework tag. The two systems differ in scope (whole school vs. one teacher) and weight convention (decimals vs. integers). Here is the one-page version.

Two sister systems

School-level
School KPI
20
Active KPIs
1.00
Weights sum to
4
Categories
Semester
Window unit
One score per partner school × semester. Mixed input types — Cambridge result percentages, EASE outcomes, derived metrics auto-pulled from other collections (pacing %, AI maturity completion, etc.), simple booleans. Anchored to Cambridge School Leader Standards + Ofsted EIF + BAN-S/M IASP + a few Cambridge Teacher Standards.
Per-teacher
Teacher KPI
15
Active KPIs
100%
Weights sum to
15/15
Carry CTS tags
Half / Full AY
Window unit
One score per teacher × period. Teacher self-rates first on Teachers Hub; school evaluator (Principal or Academic Coordinator) reviews on Academic Hub. Every KPI carries a Cambridge Teacher Standards 2023 tag — validated server-side at write time.

School KPI — four categories

The 20 School KPIs sit in four buckets. The weights inside each bucket are decided once, with all 20 summing to 1.00. Each KPI declares which Eduversal partner-school sections it applies to — most apply to All, but a few apply only to SMA (IGCSE / AS-Level / Cambridge Coordinator items).

📚
Quality of Education
Cambridge Checkpoint / IGCSE / AS-Level results, EASE outcomes, pacing % across the network's pacing pages.
👨‍🏫
Teacher Quality
Aggregated Teacher KPI averages, CPD engagement, walkthrough engagement, Subject Specialist visits.
🏛️
Leadership & Governance
Principal Evaluation outcomes, Cambridge Coordinator presence, AICF Leader maturity, school-leadership decisions cadence.
💚
Student Wellbeing
Parent engagement processes, student survey signals, pastoral indicators.
Illustrative balance. Actual weights live per-KPI in docs/kpi/school-kpi-v1.json and sum to 1.00. Re-running the seeder snapshots the prior state to kpi_config_legacy_pre_v1 before overwriting.

Teacher KPI — 15 aspects, 100% weight

The 15 Teacher KPIs each carry an aspect (the category — e.g. Academic Performance, Engagement, PLC Commitment), an indicator (the one-line plain-language measure), a weight (integer %, summing to 100 across all 15), a target (the numerical bar to hit — e.g. 80%, 4.0 stars), and a halfAY / fullAY pair (the bar at mid-year vs. end-of-year — set so that mid-year is genuinely intermediate, not a stretch). Every one of the 15 carries a Cambridge Teacher Standards 2023 tag — validated server-side at write time against competency_framework/teachers.cambridgeStandards.

📁 Where this comes from. Both KPI lists are version-controlled JSON, not free-form Firestore editing. School KPI: docs/kpi/school-kpi-v1.json (v1.1.0, approved 2026-05-27). Teacher KPI: docs/kpi/teacher-kpi-v1.json (v1.0.0, approved 2026-05-27). To change a KPI, edit the JSON, bump the version, run the matching seeder (scripts/kpi/seed-school-kpi-v1.js / scripts/kpi/seed-teacher-kpi-v1.js). Each seeder snapshots the prior state to a *_legacy_pre_v1 collection before overwriting, so you always have a one-step undo.

Both School KPI and Teacher KPI run the same 4-stage cycle. The actor changes per stage — HQ defines, partner schools and teachers submit, HQ reviews. Here is the order things happen for the Teacher KPI cycle (School KPI mirrors it exactly with the partner school as the submitter).

1
📝
Phase 1
Define KPIs
HQ edits the canonical JSON, runs the seeder, and the new KPIs land in teacher_kpi_config / kpi_config.
Teacher KPI → central_admin
2
🟢
Phase 2
Open a window
HQ creates a period — half-AY or full-AY — and flips active: true. Partner-side pages on TH + AH wake up.
Periods tab → central_admin
3
✍️
Phase 3
Teacher self-rates
Teacher fills out the form on Teachers Hub → Teacher Self-Assessment. Writes teacher_kpi_submissions/{uid}_{periodId}.
Teachers Hub ↗ Teacher
4
🧑‍⚖️
Phase 4
School evaluator reviews
Principal or Academic Coordinator on Academic Hub reviews the teacher's self-rating, scores, and signs. Roll-up lands back here in the Submission Results tab.
Academic Hub ↗ Principal · AC
School KPI follows the same shape — but the submitter in Phase 3 is the partner school's leadership team (filling out the per-school payload on AH → School Performance KPI) and there is no separate Phase 4 evaluator step. HQ's review on this page is the validation step. The two cycles can run on different windows; the active period is per-page.

Two pages — one card each. The cards follow the same order they appear in the Performance dropdown.

🏫
School KPI Admin
/school-kpi-admin
Open page →
What it is
The administration surface for Eduversal's whole-of-school performance scorecard. Three sub-tabs: KPI Configuration (define the 20 KPIs, weights summing to 1.00), Semesters (open / close the submission window), School Results (read-only roll-up of what every partner school submitted this semester).
Why we built it
A partner school's institutional quality needs a quantitative signal that is comparable across the network. Pure self-rating drifts; pure HQ scoring is heavy-handed. The School KPI scorecard sits beside the School Appraisal qualitative review — two angles on the same school.
Day 1 view
Lands on the KPI Configuration tab — a table of the 20 active KPIs grouped by category (Quality of Education / Teacher Quality / Leadership & Governance / Student Wellbeing), with weight, input type, and section eligibility (All / SMA-only). Add / Edit / Archive each KPI from here.
What to do
For most central_admin work the KPI list is stable — the seeder already wrote the 20 v1 KPIs. The day-to-day work is in the Semesters tab (open the next submission window) and the School Results tab (review what comes in). Adding a new KPI mid-semester is possible but unusual.
  • School weights are decimals 0.00–1.00. The UI guards against the sum drifting away from 1.00.
  • Several School KPIs are auto-derived — they pull their value from other collections (e.g. userProgress.pacingPercent, teacher_kpi_submissions.avg_score, ai_competency_aggregates.completion_ratio) rather than asking the school to type a number. The derivedFrom field on each KPI declares the source.
  • Partner schools submit on Academic Hub → School Performance KPI. That page reads this same kpi_config + kpi_settings and writes to school_performance_kpi/{semId}/schools/{schoolId}.
👨‍🏫
Teacher KPI Admin
/teacher-kpi-admin
Open page →
What it is
The administration surface for Eduversal's per-teacher quantitative scorecard. Three sub-tabs: Teacher KPIs (define the 15 KPIs, aspects + indicators + weights summing to 100%, Cambridge tags), Periods (open / close mid-year and full-year windows), Submission Results (read-only roll-up of every teacher's submission across the network).
Why we built it
Every teacher needs a small, comparable, plain-language scorecard that complements the deeper Appraisal v2.1 narrative. The KPI is the number; the appraisal is the story. Both live next to each other on the teacher's record but neither feeds the other — KPI is self-rated then school-evaluated; appraisal is HQ-scored against the network-uniform rubric.
Day 1 view
Lands on the Teacher KPIs tab — a table of the 15 active KPIs (aspect, indicator, weight, target, halfAY, fullAY, Cambridge refs). Add / Edit / Archive each KPI; on Add or Edit, the Cambridge Tags input validates server-side against competency_framework/teachers.cambridgeStandards.
What to do
Most central_admin work is in the Periods tab (open the next half-year / full-year window so teachers can self-rate) and the Submission Results tab (cross-school view of who has submitted, who is awaiting evaluator review). The KPI list itself rarely changes mid-year.
  • Teacher weights are integer % summing to 100 (different from School KPI's 0.00–1.00 decimal convention — easy to mix up).
  • Submissions write to teacher_kpi_submissions/{uid}_{periodId} with a required schoolId field. AH evaluator queries filter on the (periodId, schoolId) composite index — don't drop schoolId from a write or the evaluator dashboard misses the row.
  • Don't hand-edit cambridge_standard_refs[] via Firestore console. Edit them on the form here so the validator runs.
  • Teacher self-rates on Teachers Hub → Teacher Self-Assessment; school evaluator (Principal or Academic Coordinator) reviews on Academic Hub → Teacher KPI Evaluation.

Eduversal runs four professional development systems on the same Cambridge anchor. KPI is the quantitative one. The other three add the qualitative depth. New users mix these up. This is the cheat-sheet.

📊
KPI — what this page is about
Quantitative. Per-school configured (School KPI weights 0.00–1.00; Teacher KPI weights 0–100%). Sources: docs/kpi/school-kpi-v1.json + docs/kpi/teacher-kpi-v1.json. Feeds: a school's institutional scorecard and a teacher's individual record. Does NOT feed appraisal scoring.
Appraisal — annual summative
Summative. Annual. Scored 1–4 + composite A–F against a network-uniform rubric (Eduversal Teacher Appraisal Framework v2.1). Different from KPI: KPI is the number, appraisal is the rubric narrative. Surface: Performance → Appraisals.
🧗
Competency — CPD ladder
Formative. 4-level CPD ladder per Cambridge-aligned competency. Teacher-led portfolio + evidence. Tracked in user_competencies/{uid}. Surfaces: the Competency Framework under Performance + Competency Admin (the reviewer page) under Teacher Programs.
📕
Induction — Year 1 onboarding
Formative. Year-1 hires get a mentor + 4 windows + walkthroughs + a private journal. NEVER feeds appraisal or KPI scoring (Charter NN1). Surface: Teacher Programs → Induction Admin.
Cambridge cross-references run through all four. Click any CTS X.Y chip in any page (including this one) to see the full Cambridge Teacher Standard 2023 text in a popover. The chip wiring is shared across the four rating systems via cambridge_crossref/index. The aggregator is rebuilt by scripts/competency/build-crossref-index.js whenever a KPI's Cambridge tags change.

Pick the card that matches your role. The page detects your profile and reveals only the relevant card — but you can also read the others to understand what your colleagues see.

Every KPI-flavoured word, defined in one sentence. If a word here still isn't clear, it's a candidate to bring up in the next Coordinators meeting.

KPI— Key Performance Indicator
A single numerical measure of performance. Eduversal runs two parallel lists: 20 School KPIs (institutional) + 15 Teacher KPIs (per-teacher). Each KPI has a name, weight, input type, target, and Cambridge / Indonesian / international framework tag.
Aspect— Teacher KPI grouping
A short category label on each Teacher KPI (e.g. Academic Performance, Engagement, PLC Commitment). Aspects are how the 15 KPIs are visually grouped in the form and on the roll-up.
Indicator— the plain-language measure
The one-line description of what a Teacher KPI actually measures. Written in ESL-friendly plain English so a teacher reading the self-assessment form knows exactly what number to provide.
Category— School KPI grouping
School KPI's equivalent of Aspect: one of Quality of Education, Teacher Quality, Leadership & Governance, Student Wellbeing. The 20 School KPIs are distributed across these four buckets.
Section— School KPI eligibility
A School KPI declares whether it applies to All partner-school sections or to SMA only (IGCSE / AS-Level / Cambridge Coordinator items). SMA-only KPIs do not appear on the SD / SMP-level submission form.
Weight— the multiplier
How much this KPI counts toward the total score. School KPI weights are decimals 0.00–1.00 (and sum to 1.00). Teacher KPI weights are integers 0–100 (and sum to 100). Easy to mix up — be careful which page you're on.
Period— Teacher KPI window
A submission window for the Teacher KPI cycle. Two natural periods: halfAY (mid-year) and fullAY (end-of-year). Only one period is active: true at a time. The teacher's self-assessment form picks up the active period automatically.
Semester— School KPI window
School KPI's equivalent of Period. One semester is active at a time; partner schools submit per semester. The Semesters tab on School KPI Admin opens / closes them.
Target— Teacher KPI bar
The numerical bar this KPI is asking the teacher to hit. Split into halfAY (mid-year bar — typically the intermediate value) and fullAY (end-of-year bar). Don't set halfAY equal to fullAY — mid-year needs to be genuinely intermediate to be meaningful.
Input type— School KPI data shape
What kind of number a School KPI expects: cambridge_lower, cambridge_igcse, cambridge_aslevel, ease, percentage, boolean, ratio, multi_boolean. Drives both the input widget on the partner-school form and the validation.
Derived KPI— auto-pulled value
A School KPI whose value is computed from another collection (e.g. userProgress.pacingPercent, teacher_kpi_submissions.avg_score, ai_competency_aggregates.completion_ratio) rather than typed in by the school. The derivedFrom field on the KPI declares the source path.
Composite key— Teacher KPI submission id
The doc id for a Teacher KPI submission is {uid}_{periodId} — one submission per teacher per period. Idempotent: resubmit and the same doc is updated, no duplicates created.
Evaluator— Teacher KPI reviewer
The school-side reviewer who rates a teacher's submission. Usually the school_principal or academic_coordinator on Academic Hub. Writes a paired teacher_kpi_evaluations/{submissionId} doc — same id as the submission for the 1:1 join.
CTS— Cambridge Teacher Standards
The 2023 27-item teacher standards. All 15 Teacher KPIs carry cambridge_standard_refs[]; the validator checks every ref against competency_framework/teachers.cambridgeStandards at write time. Click any CTS chip for the verbatim popover.
Legacy snapshot— *_legacy_pre_v1
When a seeder runs, it first copies the entire current state of kpi_config / teacher_kpi_config into kpi_config_legacy_pre_v1 / teacher_kpi_config_legacy_pre_v1. Read-only archive — a one-step undo if a re-seed turns out wrong.