Khang
All work

PRIMUS

A working dashboard for executive recruitment consultants.

Read about the framework migration
Recruitment source-summary cards above a candidate shortlist table, drawn on layered paper.
A shortlist connects the consultant's search to the job they are filling.

At a glance

What it is
A dashboard executive recruitment consultants used to search candidates, build shortlists and follow up.
My role
Sole frontend developer who also implemented part of the API, alongside backend and design colleagues.
What I built
  • Rewrite from several React apps into one Angular application
  • Candidate search with filters, keyword highlighting and search restoration
  • Event tracking where components refine events before sending
Stack
  • Angular
  • TypeScript
  • RxJS
Status
Discontinued, 2019 to 2023

I also built shortlists, candidate invitations and company pages. Backend colleagues owned the remaining services, and the design team supplied the visual designs.

What people use it for

Executive recruitment involves much more than finding a name. Consultants search for candidates, build shortlists for particular jobs, review CVs and follow up. PRIMUS brought that work into a recruitment dashboard. I owned the frontend and also contributed to part of the API.

  1. Find

    Search and filter candidate records.

  2. Shortlist

    Connect relevant candidates to a job.

  3. Follow up

    Review details and prepare outreach.

A professional in a navy suit beside selected job cards from the PRIMUS public page, drawn on paper.
The public pages introduced the recruitment service and selected roles.

Introduce roles, then support the recruitment work

PRIMUS's public pages introduced roles and employers through job cards and company information. The consultant dashboard supported the work of filling those roles: a candidate search could lead into a record, a shortlist or an invitation. Filters and search context needed to remain useful between those activities.

As the sole frontend developer, I built those flows with the product and supporting teams. Candidate search included filters, keyword highlighting and search restoration. Shortlists connected candidates to jobs and their progress through the process.

Separate paper panels with tangled connections collected into one organized binder.
Separate frontend modules brought into one application.

Rebuild the frontend as one application

The inherited frontend used several JavaScript React applications with Redux state crossing application boundaries. A feature change could reach across more than one codebase, and moving between features loaded another application.

I rewrote the dashboard as an Angular application with TypeScript, shared routing and services. The migration covered the working recruiter features as well as the new structure, and reached a production cutover.

The migration had to carry the working features with it.

A company profile card overlapping a skyline and office-content panels, drawn in pencil.
Company pages gave the recruitment work its employer context.

Make product activity available to the team

I also built an event-driven tracking system. Components could add, modify or filter an event before it was sent, so the information could follow the action being performed.

Other work included candidate invitations with preview and engagement information, company pages and the search integration. I also implemented part of the API. Product and backend colleagues owned the wider product and the rest of its services; the visual designs came from the design team.

A migration used during the product's active life

The Angular dashboard reached production and supported recruitment workflows during PRIMUS's active lifecycle. I delivered the frontend rewrite and connected features and implemented part of the API.

Navigos later discontinued PRIMUS as a business decision. The dashboard described here belongs to that earlier period.

Rebuilding a product people still use?

Tell me what needs to keep working.

Implementation notes

Framework migration

I moved the dashboard from React and Redux in JavaScript to Angular 14 with TypeScript and RxJS. Shared routes, services and components replaced the separate frontend applications.

Search and event boundaries

The NBS search integration involved redirects, deep links and search restoration. The tracking system let individual components refine events before they were sent.

API contribution

Alongside sole frontend ownership, I implemented part of the API. Backend colleagues were responsible for the remaining services. Product and design colleagues supplied the requirements and visual designs for the wider system.

Delivery record

A Jira extraction from 17 May 2026 identified 89 assigned Done or Resolved tickets across PRIMUS. That total spans multiple feature areas; it is not a count of tracking-system tickets or a measure of individual product impact.