Nexa Recruiter

AI-powered hiring: parse CVs, match against the job description, shortlist with the evidence attached.

7
Candidates ranked on the example job
4
Steps from upload to shortlist
Minutes
To a shortlist

What they came with

A single job posting brings in more CVs than anyone reads properly. They arrive in every format there is, get skimmed rather than read, and the reason for a yes or a no ends up in someone's head or a one-line note. Screening is the work that gets done last thing and in a hurry, and it is the part hardest to account for when a hiring manager asks later why a candidate was dropped. Nexa Recruiter does the reading: every CV into one profile shape, scored against the job description, with the lines that produced each score kept beside it.

What the engagement covered

  • CV parsing into experience, skills, education and contact fields
  • Ranked matches with matched and missing skills per candidate
  • Reasons to talk, concerns to probe and a written recruiter's take
  • Structured profile from any CV format
  • Skills with years of experience and languages
  • Raw extracted text retained for verification

Technical detail

Every CV into one shape

PDFs, Word files and scans are normalised to text, then a model fills a fixed profile schema — roles with start and end dates, skills, education. Output is validated against that schema and sent back to the model on failure rather than written half-formed, and dates are stored as ranges so tenure and gaps are computable instead of read off prose.

Scored per requirement, not overall

The job description is broken into discrete requirements and each is scored on its own against the profile, with the supporting span from the CV stored next to the score. The rank is a weighted sum of those scores, so changing what the role actually cares about re-ranks the pool without re-running the model.

Vector shortlist before the model

Profiles are embedded into pgvector and retrieved by similarity to the requirements, so the expensive per-requirement scoring only reads plausible candidates. Cost tracks the shortlist rather than the applicant volume, and the recall threshold is tunable per role when a niche skill needs a wider net.

Evidence stored with the score

Each score keeps its quoted evidence, the model and the prompt version that produced it, so a shortlist can be reopened months later and explained line by line. Re-scoring with a newer model writes a new run against the same candidates instead of overwriting the old one, which keeps the two comparable.

The stack

Interface

Next.jsReactTypeScriptTailwind CSS

Parsing and models

OpenAIPyMuPDFpython-docxTesseract

Services and data

FastAPIPythonPostgreSQLpgvectorRedisCelery

Storage and hosting

S3DockerTraefik
Sector
Hiring
Audience
Recruiters and hiring managers
Shape
Built, shipped and run by us
Stack
FastAPI, pgvector, OpenAI
Next case studyTradivooA management system for trading and production businesses: purchasing, inventory, production planning, sales and books.

Something like this to build?

Tell us what runs today and where it hurts. An engineer reads it and replies.