Goals & OKRs
Performance reviews already carry a
lightweight, frozen, free-text goals list inside one review dossier
— the right shape for a jaargesprek afspraak, but unable to express a
measurable, independently-updatable target tracked between reviews.
Goals & OKRs is the cross-review-tracking sibling: an Objective with
several measurable KeyResults, each carrying its own numeric
start/target/current value, optionally rolled up under a review cycle.
Objectives and key results
An Objective is owned by an employee or a team, with a simple
lifecycle:
concept → actief → afgesloten
A closed objective is never reopened — a correction is a new objective,
the same no-resurrection precedent used elsewhere. The scored outcome
(behaald/deels-behaald/niet-behaald) is a separate field
stamped when the objective closes, kept apart from status exactly as
a performance review's rating is kept apart from its own status.
Each KeyResult is a separate object referencing its Objective
(not an array embedded inside it), so each one has its own audit trail:
a unit (percentage/aantal/euro/boolean), a required
targetValue, and startValue/currentValue.
An Objective can run entirely without a review cycle — cycleId is
optional.
Progress is writer-maintained, on purpose
progress on both Objective and KeyResult is a plain stored number,
maintained by whoever updates it — not a declarative calculation.
The underlying arithmetic (a key result's (current − start) / (target − start) × 100, and an objective's average across its key results)
needs division and cross-row aggregation, both outside the declarative
calculation vocabulary HRMQ's schema layer supports for same-object
arithmetic. The measurable source values (startValue/targetValue/
currentValue) are always stored regardless, so progress never
fabricates a number it can't be recomputed from — a server-computed
progress rollup is a named fast-follow, not a silent gap.
Where it lives
No new top-level menu: an employee's personnel dossier gains a "Doelen
& OKR's" row, an Objective's detail page lists its own Key Results, and
a review cycle's detail page lists the objectives tied to it. Employees
also see their own objectives on a MijnDoelen self-service page.
Non-goals
9-box/kalibratie grids, alignment/cascading objective trees, check-in history, and weighting are explicitly out of scope for this MVP — named fast-follows, tracked as the other half of a broader performance-management-advanced capability.