
Project Overview
A small US staffing agency managing 20 to 30 active job orders at any time had a placement speed problem that was costing them business. When a new job order came in from a client, a recruiter had to manually search the agency’s candidate database, pull resumes that seemed relevant, read through them individually, and build a shortlist by hand. For each role, that process took 2 to 3 hours before a single candidate had been contacted. By the time the agency was ready to present candidates, competing agencies who moved faster had often already placed someone. We built an AI-powered candidate matching application that delivered a ranked shortlist to recruiters within 10 minutes of each new job order being entered, freeing the team to focus on relationship work rather than database searching.
The Challenge
The agency’s placement speed problem had both a process layer and a data quality layer. Even with a better tool, unreliable underlying data would have produced unreliable results.
- 20 to 30 active roles simultaneously with each requiring 2 to 3 hours of manual database review before shortlisting could begin
- Placement speed disadvantage against competing agencies who could move faster on the same roles
- Candidate database built up over several years with inconsistent resume formats, missing fields, and outdated availability information
- No standardized structure for candidate records making automated matching unreliable without a data cleanup phase first
- Recruiters spending the majority of their working hours on database searching rather than client and candidate relationship management
Our Solution
We built an AI matching engine on top of a standardized candidate database, delivering ranked shortlists to recruiters within minutes of each new job order being entered.
- Database Standardization: We audited and restructured several years of candidate records into a consistent schema with standardized skill tags, experience fields, location data, and availability status.
- AI Matching Engine: Built on the standardized database, the engine scored and ranked candidates against each new job order based on skills overlap, years of relevant experience, location match, and current availability.
- Job Order Input Interface: Recruiters enter the role requirements and receive a ranked shortlist within minutes.
- Ranked Output with Reasoning: Each shortlist showed match score reasoning for each candidate so recruiters understood why each person was ranked where they were, not just a black box ranking.
- Availability Refresh Workflow: A process prompting the team to update candidate availability records on a regular cycle to keep the matching data current.
Technical Approach
The matching engine was built as a Next.js application with a Node.js backend. Candidate and job order data were stored in a structured database with a normalized skill taxonomy that mapped the varied ways skills appeared across resumes to consistent tags the matching algorithm could compare reliably. The matching logic used a weighted scoring approach combining skills overlap, experience relevance, location proximity, and availability status with weights tuned based on the agency’s feedback on initial shortlist quality during testing. The full stack was deployed on AWS with the candidate database updated in real time as recruiters made changes to records.
Results & Impact
The impact was immediate from the first week of deployment, with the team shifting from hours of search work to reviewing ranked shortlists within minutes.
- Time from job order entry to ranked shortlist reduced from 2 to 3 hours to under 10 minutes for every new role
- 20 to 30 simultaneous active roles handled without any increase in recruiter headcount
- Recruiter time previously spent on database searching redirected to candidate outreach, client relationship management, and business development
- Placement speed improved against competing agencies as the team could present qualified candidates the same day a job order arrived rather than the following day
- The database standardization phase identified a significant number of duplicate candidate records and outdated availability statuses that had been quietly degrading the quality of manual searches for years
Lessons Learned
The database standardization phase was the project component the agency most wanted to skip and the one that made everything else possible. The matching engine was only as good as the data it matched against. Inconsistent skill descriptions, missing fields, and outdated availability information would have produced unreliable rankings that recruiters would have stopped trusting within the first week. Investing the time upfront to clean and standardize the candidate records was what gave the matching engine the data quality it needed to produce shortlists the team actually trusted and used. Fast tools built on bad data produce fast bad results. The cleanup work was the real foundation of the project.