All projects

Performance management: evaluations, objectives, trainings, promotions and 9-box.

Socium Performance screenshot
Client
Socium

Context

Each client company runs its own review campaigns, rating scales and weighting rules, and HR needs the same score on screen, in the printed report and in the dashboards.

What I built

As lead: evaluations with live scoring, configurable rating scales and printable PDF reports; objectives with sub-objectives, strict weighting controls, bulk closing and role-based views; training plans with scheduled reminders and Yello e-learning integration; promotions, mobility and the 9-box talent grid. Like the four other apps of the suite, it runs on the shared security model I put in place: tenant isolation in a common data-access layer, fail-closed guards and per-app permissions on Keycloak.

Result

As lead on the module, about 384 commits: evaluations, objectives, trainings, promotions and the 9-box in one place.

Architecture

  1. One score calculation for the whole suite

    Evaluation scores are computed by a shared @socium library, so the live score during input, the PDF report and the dashboards always show the same number.

  2. Write routes guarded by the journey

    An answer can only be written by its evaluator, on their own form, at the right step of the campaign, checked on the server.

  3. Reminders outside the API

    An hourly serverless cron sends training and evaluation reminders at the time each company configured, without loading the API.

  4. Strict weighting rules

    Objective weights are validated on the server, sub-objectives included, and gaps trigger a notification instead of a silent error.

Stack

  • Angular
  • NestJS
  • MongoDB
  • Keycloak