Back to projects

AI / NLP application

Resume Ranker

A Flask resume-ranking workflow combining document extraction, sentence embeddings, TF-IDF similarity, structured skills, and job-description matching.

FlaskSentenceTransformersTF-IDFspaCy
View repository
RESUME RANKER
PARSE → MATCH → REFINE

01 / COMPONENTS & DATA FLOW

Inside the system.

  1. 01PDF / DOCX
  2. 02Text + NLP features
  3. 03Semantic + lexical similarity
  4. 04Ranked result

Document extraction

The application uses PyPDF2 and docx2txt, with pdf2image and pytesseract available for scanned inputs. It parses resume content into structured fields.

Two matching signals

SentenceTransformer embeddings provide cosine semantic similarity. A TF-IDF vectorizer provides a separate keyword similarity against the job description.

Structured ranking

The ranker combines configured semantic and keyword weights with skills and other extracted signals. Results expose component scores rather than just a single unexplained number.

02 / IMPLEMENTATION DECISIONS

Why it works this way.

Lexical and semantic signals stay separate

Exact terminology and paraphrased experience are different matching cases. Keeping their scores visible helps explain why a resume ranked the way it did.

Extraction quality affects matching

OCR or parsing mistakes become inputs to both similarity paths. A confident-looking ranking should still be checked against the extracted document text.

03 / SCOPE & TRADEOFFS

The implementation boundary.

A ranking tool for exploring fit against a job description. Its scores do not predict hiring decisions or establish compatibility with every employer’s applicant-tracking system.

04 / READ THE IMPLEMENTATION

Follow it into the code.