Skip to main content

DataFlorent

HireScore

AI resume-ranking platform: from a pile of CVs to a ranked, explained shortlist in minutes

THE PROBLEM

Recruiters screen dozens of resumes for every role by hand. It is slow, inconsistent between reviewers, and it rarely records why one candidate ranked above another. The same CV often arrives twice, under different file names.

THE SOLUTION

HireScore reads PDF/DOCX resumes and job descriptions and uses an LLM to pull out structured profiles and requirements. It then scores every candidate against a job on six weighted sections, with a written explanation for each score. A web dashboard shows the results, and Prometheus and Grafana monitor the system in production.

Key Features

Bulk resume intake

Drag-and-drop up to 50 PDF/DOCX files per batch. Each file shows its own status (Waiting, Analyzing, Done, Already exists, Failed) and can be retried on its own.

Smart de-duplication

Duplicates are skipped by SHA-256 file hash, by email, or by name plus the last 7 phone digits, so repeat uploads never cost an OpenAI call.

Structured AI extraction

OpenAI function calling extracts degree, experience, technical and soft skills, responsibilities, certificates and recommended roles.

Explainable scoring

Each section gets a score from 0 to 100 with a comment. A weighted final score is shown with a label from Excellent to Poor.

Hiring analytics

Match runs over time, score distribution, top candidates, and stored match history for every candidate and job.

Production observability

Custom Prometheus metrics, provisioned Grafana dashboards, and an in-app System Health page.

How it works: The Hiring Workflow

1 · Analyze resumes

Upload CVs. Text is extracted with PyPDF/docx2txt and an LLM returns a structured profile.

2 · Analyze job

Paste or upload a JD. Requirements are extracted per section.

3 · Match

Pick a job and candidates. The LLM scores 6 sections and the weighted average gives the final score.

4 · Review

Ranked results, a comparison chart, and an AI assessment for each candidate.

Engineering Highlights

  • Resumes are sent to the API one at a time from the browser. This stays within OpenAI rate limits and keeps the API responsive during 50-file batches.
  • Duplicates are checked by hash before any OpenAI call. Duplicates found after extraction (same email or phone) delete the saved file and attach the new hash to the existing candidate.
  • Deletes cascade: removing a candidate also cleans up their resume files and their results in past match runs.
  • Every match run is stored, and its ID is returned in the X-Match-Run-Id header for traceability.

Skills Demonstrated

  • AI/LLM: prompt design, structured extraction with function calling, explainable scoring.
  • Backend: modular FastAPI, MongoDB data modelling, file processing pipelines.
  • Frontend: typed React SPA, server-state caching, data visualisation, light and dark themes.
  • DevOps/SRE: Docker, cloud deployment, Prometheus instrumentation, Grafana dashboards as code.