About the project
Talent Management is an internal platform that connects incoming staffing requests to the people best suited to work on them. It reads a request, breaks it down into requirements, and ranks candidates against those requirements based on the content of their resumes.
I built the first version during my internship at Collide, as a matching tool for a single organisation. It has grown a lot since then. It now serves several organisations, handles hundreds of resumes and staffing requests, and runs as a module inside the company's microfrontend platform instead of as an application of its own.
Matching starts from vector similarity. A resume is parsed into a structured object, and its full text along with each of its sections (hard skills, language information, work experience, certifications, ...) is converted into vectors and stored next to the relational data. An incoming staffing request goes through the same treatment.
Similarity on its own is not enough for every section. Some fields compare badly as vectors, so those are scored against the structured data as well and combined with the vector result. Each section is then weighted, adjusted for how far the categories on both sides line up, and rolled into one ranked list. A reranker will then take the top candidates and reorder them based on a prompt that can be edited by the user.
Staffing requests arrive in whatever shape the sender used, through whichever channels an organisation already works in. Reading and submitting all of them by hand was the bottleneck, so that part is automated. A document is checked to see whether it is a staffing request at all, then analysed, stored and matched, and the result goes back to the people who have to act on it. Most of this is processed asynchronously.
We keep track of all the data generated by the system. It's entirely searchable / filterable. The same data feeds a reporting layer that shows, for example, which skills and sectors are in demand. That layer is built externally.
Selecting the best candidates is only part of the flow. Creating a shortlist comes with paperwork, and the platform can generate most of it.
A skill matrix compares a candidate against the requirements of one specific request, built either from their structured resume data or from an uploaded document. Resume optimisation produces a version of a resume aimed at one opportunity. Introduction texts and feedback reports are kept on the request itself. All of it runs on prompts which are customisable. Each user or organisation works from their own set of prompts, and can edit them to their liking.
The platform used to cover more ground than it does now. It also held certificate management and an OKR module for tracking objectives.
Both have since moved into separate module applications on the same microfrontend platform. They are about employees rather than about staffing, and the rest of the company gets more use out of them there.
Technologies
Backend framework for the REST API
Language the backend is written in
ECS Fargate, S3, CloudFront and the rest of the hosting
Infrastructure as code
Authentication & authorization
Embeddings and document analysis
Backend for employee and resume data
Frontend framework for building the user interface
CSS framework for styling
Data fetching and state management
For schema validation and type safety in the frontend
CI, tests and deployments