Resume Screening Using NLP

Screen and rank resumes against job descriptions using Sentence Transformers, cosine similarity, and a Flask web UI. Upload PDF/DOCX/TXT resume and see top job matches with scores.

Overview

An NLP-powered resume screening system that matches candidates to job descriptions using semantic embeddings. The pipeline loads resume and job datasets (CSV), preprocesses text, builds sentence embeddings with Sentence Transformers, and compares embedding models to select the best one. A Flask web app lets users upload a resume (PDF, DOCX, or TXT) and displays the top matching jobs with similarity scores. The project also includes simple skill and experience extraction from resumes.

Challenge

Recruiters spend significant time manually matching resumes to job descriptions, and keyword search misses semantically similar experience. The goal was semantic matching that ranks the most relevant jobs for an uploaded resume.

Solution

Sentence Transformers embeddings with cosine similarity ranking, delivered through a Flask upload UI.

Architecture

Sentence Transformers embeddings · cosine similarity matching · skill/experience extraction · Flask upload UI (PDF/DOCX/TXT)

Results

  • Notebook outputs: models/best_model_config.json, job_embeddings.npz
  • Flask app: Upload resume → top job matches with scores
  • Load resume + job description datasets (CSV) and preprocess text
  • Build sentence embeddings and compare embedding models
  • Rank resumes/jobs by cosine similarity
  • Skill and experience extraction from resumes
  • Flask UI: upload PDF/DOCX/TXT and see top job matches with scores

Technologies

  • Python
  • Flask
  • Sentence Transformers
  • Pandas
  • scikit-learn
  • Semantic search
  • PDF/DOCX/TXT upload

All projects · Contact

Loading project…