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.
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 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).
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.
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).
teacher_kpi_config / kpi_config.active: true. Partner-side pages on TH + AH wake up.teacher_kpi_submissions/{uid}_{periodId}.Two pages — one card each. The cards follow the same order they appear in the Performance dropdown.
- 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. ThederivedFromfield on each KPI declares the source. - Partner schools submit on Academic Hub → School Performance KPI. That page reads this same
kpi_config+kpi_settingsand writes toschool_performance_kpi/{semId}/schools/{schoolId}.
competency_framework/teachers.cambridgeStandards.- 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 requiredschoolIdfield. AH evaluator queries filter on the(periodId, schoolId)composite index — don't dropschoolIdfrom 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.
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.user_competencies/{uid}. Surfaces: the Competency Framework under Performance + Competency Admin (the reviewer page) under Teacher Programs.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.
active: true at a time. The teacher's self-assessment form picks up the active period automatically.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.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.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.{uid}_{periodId} — one submission per teacher per period. Idempotent: resubmit and the same doc is updated, no duplicates created.teacher_kpi_evaluations/{submissionId} doc — same id as the submission for the 1:1 join.cambridge_standard_refs[]; the validator checks every ref against competency_framework/teachers.cambridgeStandards at write time. Click any CTS chip for the verbatim popover.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.