Project
Candidate Ranking System
An explainable candidate-ranking system built for the Redrob Data & AI Challenge that ranks hundreds of thousands of profiles against a job description and produces a top-100 shortlist. It combines structured qualification checks with semantic career relevance, ensuring disqualifying signals cannot be averaged away. The system generates evidence-based candidate reasoning using only profile facts, without relying on LLM inference.
What This Is
Imagine you have a job opening and thousands of candidates in your pipeline. You don't have time to read every resume line by line - but you also don't want a tool that just counts keywords and calls it a day.
This system does the heavy lifting for you: it reads through a large pool of candidates, compares each one against your job description, and hands you back a ranked shortlist of the top 100 best-fit candidates - complete with plain-language reasoning for why each one made the cut.
Think of it as a very thorough, very fast, very consistent first-pass screener that never gets tired and never plays favorites.
The Problem It Solves
Most "automated resume screening" tools fall into one of two traps:
- Keyword matching - a candidate who lists "Python" once in a hobby project looks the same as someone with five years of professional Python experience. It can't tell the difference between mentioning a skill and demonstrating it.
- Simple scoring - some tools average everything together, which means a candidate with one serious red flag (say, the wrong location or no relevant experience at all) can still score decently well because their other numbers look fine. Other tools rely on AI models to judge every single candidate individually, which is slow and expensive at scale.
This system was built to avoid both problems. It looks at candidates the way an experienced recruiter would: weighing multiple factors together, and making sure that a serious dealbreaker actually breaks the deal - instead of getting diluted into an average.
How It Thinks About a "Good Fit"
The system evaluates every candidate across two big questions, then combines the answers:
1. Are they qualified, on paper and in practice? This covers the practical, structured stuff:
- Do they meet the location, experience level, and work-mode (remote/hybrid/onsite) requirements?
- Have they only ever worked at consulting firms (which can be a mismatch for certain in-house roles)?
- Have they historically stayed at jobs long enough to be a stable hire?
- Are they actually looking for a new role right now - are they active, responsive, and reasonably available (e.g., notice period)?
- How trustworthy and complete is their profile - is it filled out, verified, backed by endorsements, credentials, and a real professional footprint?
2. Does their career story actually match the role? This is the harder, more human question - not "do they have the right words on their resume," but "does their overall career trajectory genuinely align with what this job needs?" The system reads each candidate's career history, skills, and education much like a person would, and compares the meaning of their background to the meaning of the job description - not just overlapping words. It pays more attention to recent, relevant experience than to something from fifteen years ago.
Why a Red Flag Actually Matters Here
This is the part that sets the system apart, and it's worth explaining simply.
Picture a candidate who is a fantastic match for the role's skills and experience — but they've only ever worked at consulting firms, which the job specifically wants to avoid. In a system that averages scores, that one issue might get outweighed by all their other strong points, and they'd still land near the top. That's misleading.
In this system, all the scoring dimensions are multiplied together rather than averaged. In practice, that means:
A serious weakness in any one area pulls the entire score down — no matter how strong the candidate looks everywhere else.
It's the difference between "your average score is passing" and "you have to clear every bar reasonably well." This mirrors how a thoughtful recruiter actually thinks: a single dealbreaker doesn't get erased just because everything else looks good.
What You Actually Get
- A ranked shortlist of the top 100 candidates, from best fit to marginal fit.
- A reason for every candidate, written in plain language and based strictly on facts already in their profile - no invented claims, no generic filler. Notably, this reasoning is generated without using an AI language model at the final step, so it's fast, consistent, and fully explainable - you can trace every sentence back to a real data point in the candidate's profile.
- A consistent, repeatable process. The same job description and candidate pool will always produce the same shortlist and the same reasoning - no mood, fatigue, or inconsistency between reviewers.
- A live, interactive demo where you can upload a smaller candidate pool (up to 100 people) and see the same ranking logic run in real time in your browser - no technical setup required.
Built-In Quality Checks
Because this shortlist may feed directly into real hiring decisions, the system includes several safeguards:
- A validator that checks the final list for basic integrity - exactly 100 candidates, correctly ranked, no duplicates, properly formatted IDs - before anything is considered final.
- A "too good to be true" audit tool that flags suspicious profile inconsistencies for human review - for example, someone claiming "expert" skill level in something they have no actual career experience in, or someone whose claimed years of experience don't add up against their actual work history. These are flagged for a person to look at, not silently rejected.
Things Worth Knowing (Honest Limitations)
No system is perfect, and it's worth being upfront about where this one has boundaries:
- It's tuned to one job description at a time. Re-running it against a different role requires reprocessing, not a simple toggle.
- Rankings are relative to the candidate pool used. If you add or remove candidates from the pool and re-run it, individual scores can shift slightly - the ranking is about this pool, not an absolute, universal score.
- "How recently active" signals are date-sensitive. A candidate's availability score reflects how recently they engaged with the platform as of the day the data was processed - so re-running the process on a different day can shift results slightly for that reason alone.
- There's no automated test suite yet. Quality is currently maintained through validation checks and manual review rather than automated software testing - worth knowing if this becomes a long-term production tool.
- It's a strong first-pass filter, not a replacement for human judgment. It's designed to take a huge, unmanageable pool and narrow it down to a focused, explainable shortlist that a real person can review with confidence - the final call still belongs to your recruiters and hiring managers.
TL;DR
This system takes a problem that used to be either impossibly slow (reading everything manually) or unreliably shallow (keyword matching), and replaces it with something in between: fast, explainable, and genuinely discerning. It won't make your hiring decisions for you — but it will hand your team a well-reasoned, defensible shortlist instead of a haystack.
Demo
Project is accessible here - Demo-Link