Appraisals — performance reviews and staff confirmation
The Appraisals module is the digital replacement for the six HR appraisal workbooks (Finance, Compliance, HR/Admin, IT, Driver/Admin Support, and General/Other). The same sheets — KPIs, risk and compliance, competencies, behaviour, the written assessments, the development plan and the HR block — are now one form that walks itself from the employee's desk to HR, keeping a signature at every stage.
Four kinds of review are supported: Annual, Half-yearly, Quarterly, and Probationary (confirmation). The probationary one is special: finalizing it is what confirms a new employee's employment.
All screens live under Appraisals in the sidebar (/u/admin/appraisals), with the HR configuration at Appraisal settings.
Staff confirmation and probation
The employment fields on a staff record
Every staff record carries two dates, both optional and both editable by whoever can edit staff (HR and administrators):
| Field | What it means |
|---|---|
| Employment start date | The day the person joined. Confirmation is counted from it, so a staff member with no start date is never flagged as due. |
| Confirmation date | Non-empty means confirmed. Empty means the person is still on probation. |
Rules the system enforces: a confirmation date cannot be in the future, and it cannot be earlier than the start date. Nobody can change their own confirmation — confirming an employment unlocks entitlements, so someone else always does it.
The staff detail page shows the status as a badge: Confirmed on {date}, Due for confirmation, or Unconfirmed — due {date}.
What probation restricts
Until a staff member is confirmed, casual leave is the only type they can request — sick leave included. Their casual allowance is a fixed 5 probation days; HR balance adjustments still apply on top of it, so a correction is honoured. Every other leave type shows as locked with a zero balance, whatever the leave policy grants. Confirming the employment restores the full policy immediately.
The "Due for confirmation" prompt
Six months after the recorded start date, an unconfirmed staff member becomes due for confirmation:
- A daily check sends an in-app notification to the HR role naming the person, once ever per staff member.
- Independently of the notification, the staff list and the staff detail page show a persistent Due for confirmation badge, so a missed notification cannot hide anyone.
How a confirmation actually happens
Confirmation is the outcome of a probationary appraisal, not a one-click stamp:
- On the staff member's detail page, HR uses Start confirmation appraisal (shown only while the person is unconfirmed).
- The appraisal runs the normal chain — self-assessment, line manager, department head, MD, HR.
- When HR finalizes it with the outcome Confirm employment, the confirmation date is written to the staff record and the person's full leave entitlements unlock in the same moment.
Because the person being appraised cannot finalize their own form, the confirmation is always a second person's decision on a scored record.
Editing the confirmation date directly on the staff edit form is the backfill path — it is how long-serving staff who never went through this workflow get their dates recorded. It is not the route for a new hire.
Settings (HR)
Appraisals → Appraisal settings holds everything the forms are built from. The whole settings area — including simply reading it — requires the HR appraisal permission; nobody being appraised needs it, because their form is copied at the moment it starts.
KPI templates
Each organization starts with six seeded KPI forms, transcribed from the workbooks:
| Template | Structure |
|---|---|
| Finance | One Core KPIs category at 100% |
| Compliance | One Core KPIs category at 100% |
| HR/Admin | One Core KPIs category at 100% |
| IT | One Core KPIs category at 100% |
| Driver / Admin Support | One Core KPIs category at 100% |
| General / Other | Four categories — Business Results 40%, Operational Excellence 30%, Shariah Compliance & Ethics 15%, Professional Development & Contribution 15% |
Every seeded row is yours to edit, and you can create your own templates.
Weight rules, checked when you save:
- Every category weight and every KPI weight must be above zero, and a category needs at least one KPI.
- Category weights must add up to 100% of the form.
- The KPIs inside a category must add up to that category's weight — item weights are shares of the whole form, not of their group.
Error messages name the category at fault and the total they actually reached.
Templates are archived, never deleted. An archived form stays readable as the provenance of every appraisal ever taken on it, but it cannot be assigned to a department and cannot be used to start a new appraisal. Two live templates may not share a name, so "archive the old Finance form and create its replacement" works normally.
The shared catalogs
Four org-wide lists apply across every form, and each is edited as a whole list:
| Catalog | Rows | Applies to |
|---|---|---|
| Risk & Compliance KPIs | 4 | Everyone |
| Core competencies | 15 | Everyone |
| Managerial competencies | 6 | Added for people appraised as managers |
| Behaviour & values | 8 | Everyone |
Each list's weights must add up to 100% of its own section, and every row must carry a weight above zero.
Department assignment
Each department is pointed at the KPI template its people are appraised on; several departments may share one. (Each department's page under Admin → Departments shows its current assignment and links back here.) A department with no assignment falls back to General / Other, which is a real answer rather than missing data — and so does a department whose assigned template has since been archived. HR can also override the template for a single appraisal when starting it.
If an organization has no live General / Other template and the department has no assignment, starting an appraisal is refused with a message asking HR to seed or create one first.
The workflow
HR starts every appraisal — from Start appraisal on the Appraisals page, or from Start confirmation appraisal on a staff record. At initiation HR chooses the person, the review type, the period, the role category (which decides the section weights), whether the person is appraised as a manager, and optionally a specific template.
The reviewing chain is worked out once, at initiation, and frozen onto the appraisal:
- Line manager = the staff member's line manager, or their department's supervisor if no line manager is set.
- Department head = the department's supervisor, only when that is a different person from the line manager. Otherwise the stage is skipped — the same desk reviewing twice is theatre.
- Nobody reviews themselves. When the person being appraised is their own department's head, the department-head stage is skipped; and because their department's supervisor is themselves, they need a personal line-manager override on their staff record before their appraisal can start.
If no reviewer can be resolved, initiation is refused with a message asking HR to set a line manager or department supervisor first. Because the chain is frozen, a later re-org never re-routes work already in flight.
One person may have only one open appraisal at a time. Finalized history accumulates without limit.
The stages
| Stage | Who acts | What they fill in |
|---|---|---|
| With the employee | The person being appraised | Their self-score on every row, what they actually achieved per row, and the six self-assessment questions |
| With the line manager | The snapshot line manager | The supervisor score and comment on every row, the five supervisor-assessment questions, the five career-discussion questions, the development plan, and an optional performance improvement plan |
| With the department head | The snapshot department head (skipped when there isn't a distinct one) | Review and approve, with an optional comment |
| With the MD | Whoever holds the MD role | Review and approve, with an optional comment |
| With HR | The HR appraisal desk | The HR-Use-Only block, then finalize |
Submissions are complete-or-nothing: the employee cannot submit until every row is self-scored and all six questions are answered, and the line manager cannot submit until every row carries a supervisor score. The refusal says how many are outstanding.
Earlier stages become read-only once the form moves on. Within a stage you can save a draft as often as you like; submitting is what advances it.
Filling the form — one step at a time
The form is a stepper: one section per step — the scored sections, then the written assessments, the plans, the HR desk (HR only), and finally Review & submit. A numbered rail across the top shows every step, and each chip carries your own progress: your self-score fractions if the form is with you, the supervisor's if it is with them, a green check when a step is complete. Nothing is locked — you can click between steps in any order, and your draft travels with you; Previous and Next in the bottom bar walk the sequence, and Save draft works from any step.
Submitting always happens from the Review & submit step. It shows the whole form compressed — every objective with both scores side by side, the written answers, the plans — with anything still missing on your columns marked in amber and an Edit link on each section to jump back. A banner at the top gives the verdict plainly: Your part is complete (and where the form goes next), or how many fields still need you. If you submit with something missing, the form jumps to the step holding the first gap and highlights it.
Required fields carry a red * (your score column, the self-assessment questions); everything optional says (optional) beside its label. The approval stages and HR's finalize also act from the Review step, so what is being approved or frozen is exactly what was just read.
Notifications and queues
Every hand-off writes an in-app notification to whoever owes the next step — the named person for the self, line-manager and department-head stages, and the role for the MD and HR desks, because those queues belong to the office rather than to whoever staffs it today. The employee is notified when their appraisal opens and again when it is finalized (and told explicitly when that finalization confirmed their employment).
The Appraisals page has two tabs:
- My appraisals — what is waiting on you right now shown first under Awaiting you, then everything else you are party to in any capacity.
- All appraisals — the organization-wide cycle view, HR only, with staff and status filters and the Start appraisal button.
A count badge on the sidebar item shows how many appraisals are waiting on you. It is personal, not a reviewer queue: anyone can be the subject of an appraisal, or somebody's line manager or department head, so every member of staff sees it.
Scoring
Every row is rated 1 to 5. Only the supervisor's scores feed the result — the self-scores sit beside them as the employee's stated position and are visible context, nothing more.
A row contributes weight × (score ÷ 5) to its section, so a section scores as a percentage of full marks.
The KPI section blends two sheets: 80% the departmental KPI form + 20% the Risk & Compliance list.
Competencies: the 15 core competencies for most people. Someone appraised as a manager gets the 6 managerial competencies in addition — they are asked to score both blocks, and every row must be scored — but only the managerial block carries the competency weight in the summary.
Behaviour & values is the 8-row list.
The three sections are then weighted by role category:
| Role category | KPIs | Competencies | Behaviour |
|---|---|---|---|
| Sales | 70% | 20% | 10% |
| Operations | 50% | 30% | 20% |
| Senior executive | 50% | 30% | 20% |
| Other | 60% | 25% | 15% |
The overall percentage falls into one of five bands:
| Band | Overall |
|---|---|
| Outstanding | 90% and above |
| Exceeds expectations | 80% – 89.99% |
| Meets expectations | 70% – 79.99% |
| Needs improvement | 60% – 69.99% |
| Unsatisfactory | below 60% |
The Score panel on the form shows a live Preview while the appraisal is open, recalculated from what is on screen — including edits you have not saved yet. Unrated rows count as zero, so a part-scored preview is a floor rather than a forecast; the panel says how many rows are rated. Once HR finalizes, the panel switches to Final and shows the frozen numbers of record.
Before the line manager's stage there is no preview at all. While the form is still with the employee, the panel says Not scored yet and explains that the score comes from the line manager's ratings — an employee who has just finished a complete self-assessment is not looking at a wall of zeros.
This scoring rulebook is fixed in the product. The weights on your KPI forms and catalogs are yours to edit; the 80/20 blend, the section weights and the bands are not settings.
Finalization
At the HR stage, HR completes the HR-Use-Only block — performance category, promotion recommendation, salary review recommendation, training recommendation, disciplinary recommendation and HR comments — saving as often as needed.
That block is genuinely hidden. It is removed from the data before it leaves the server for anyone without the HR appraisal permission, including the employee's own line manager. It is not merely hidden in the page.
Finalizing:
- Requires every row to carry a supervisor score.
- HR cannot finalize their own appraisal. An HR user may start and be scored on their own form; somebody else closes it.
- On a probationary appraisal, HR must state the outcome. Confirm employment is the only outcome this version can record, and choosing it writes the confirmation date to the staff record as part of the same action. Any other review type must not state an outcome.
- If the person's recorded start date is still in the future, confirmation is refused and nothing is closed — HR fixes the start date first.
- If the person is already confirmed, their existing confirmation date stands; a later appraisal never restates it.
Finalization freezes the four scores and the band onto the appraisal, and the whole form becomes read-only. The employee is notified of the result.
Permissions
| Permission (plain language) | Who needs it | What it allows |
|---|---|---|
Take part in appraisals (appraisals:respond) | Every staff role | Your own self-assessment, reviews of the people you supervise, department-head approvals, and reading any appraisal you are party to |
HR management of appraisals (appraisals:hr_manage) | The HR desk and administrators | Starting appraisals, the whole settings area, the organization-wide list, the HR-Use-Only block, and finalizing |
The MD stage rides the MD role rather than a permission — there is one MD, and the queue belongs to the office.
Reading an appraisal you have no part in is not an error message but a plain "not found", so nobody can use the module to discover whose review is running or how far along it is.
Current limitations
Deliberately not in this version:
- No decline or send-back at any stage. Every stage action is an approval, so an appraisal started by mistake — wrong person, wrong period, wrong role category — cannot be cancelled or corrected; it has to be walked to the end. Check the details on the start form before confirming.
- Only "Confirm employment" is available as a probationary outcome. Extending probation and not confirming come later.
- No email notifications — the module notifies in-app only.
- No PDF export of a finished appraisal.
- No employee acknowledgement section — there is no stage where the employee signs or comments on the finished review.
- No automatic redistribution for "not applicable" rows. If a KPI does not apply to a role, HR edits the template's weights instead.
Related
- People — staff, branches, roles and permissions — the staff record the employment fields live on.
- ERP introduction