The problem

The most time-consuming, error-prone, and monotonous step in hiring is a human reading resumes to work out who is worth a conversation. For an HR outsourcing company doing this at volume, it was a bottleneck that scaled linearly with headcount and got less accurate as it went.

What I built

A resume ranking system in three parts:

Extraction. Information retrieval from the resumes themselves, including visual NLP — resumes are laid-out documents, not plain text, and column order, tables, and headings carry meaning that a naive text dump destroys.

Scoring. A mathematical model that scores and ranks candidates against the role, producing an ordering rather than a binary filter.

Reporting. A dashboard for the humans who make the actual decision: comparing multiple ranked candidates against each other, drilling into the detail behind a score, and cross-validating claims on a resume against multiple external public sources.

That last part matters — the system is built to be checked. A ranking nobody can interrogate does not get trusted, and does not get used.

The outcome

  • Sharply reduced the time taken to hire.
  • Freed HR capacity for the parts of recruitment that need a person.
  • Fewer errors in screening, with cross-validation catching what a fast manual scan misses.