rohangargjfl/AI-Resume_Screening_System

0

stars

19

commits

Python

primary language

May 26, 2026

updated

README

AI Resume Screening and Candidate Ranking System

AI in Recruitment Process: Resume Analysis using NLP

A production-style prototype that uses NLP and Sentence Transformers to automatically screen resumes, match candidates against job descriptions, and rank them with full explainability.


πŸš€ Run on Google Colab (No Setup Required!)

Mam / Evaluator: Sirf neeche diye link pe click karein aur Runtime β†’ Run All press karein. Koi installation nahi, sirf Google account chahiye!

Open In Colab

Direct Link:

https://colab.research.google.com/github/rohangargjfl/AI-Resume_Screening_System/blob/main/Run_On_Google_Colab.ipynb

Steps to Run:

  1. Click the link above β†’ Opens directly in Google Colab
  2. Go to Runtime β†’ Run All
  3. Wait ~5 minutes for setup (first time only)
  4. Click the public URL that appears at the end of the last cell
  5. Register with any email/password β†’ Start screening resumes!

Features

ModuleDescription
Resume ParserExtracts text from PDF, DOCX, TXT and preprocesses it
NLP ProcessingTokenization, lemmatization, NER, strict regex skill extraction via SpaCy
Feature ExtractionStatistical pseudo-semantic TF-IDF N-Grams (1,3) (scikit-learn)
Matching EngineCosine similarity β†’ dynamic recruiter-weighted multi-variable scoring
Explainable AIMathematical score breakdown & reasoning text generation
VisualizationInteractive Chart.js & dynamic UI score badges
Web ApplicationFlask asynchronous dashboard with interactive uploading and SSO Auth

Tech Stack

Python Β· Flask Β· SpaCy Β· scikit-learn Β· Vanilla JS Β· Bootstrap 5 Β· Chart.js


Project Structure

AI_Resume_Screening_System/
β”œβ”€β”€ resume_parser/          # PDF/DOCX/TXT extraction & preprocessing
β”œβ”€β”€ nlp_processing/         # SpaCy NLP pipeline & skill extraction
β”œβ”€β”€ feature_extraction/     # TF-IDF + Sentence Transformer embeddings
β”œβ”€β”€ matching_engine/        # Cosine similarity scoring
β”œβ”€β”€ explainable_ai/         # Skill-level explanations
β”œβ”€β”€ visualization/          # Matplotlib chart generation
β”œβ”€β”€ web_app/                # Flask routes, templates, static assets
β”‚   β”œβ”€β”€ templates/
β”‚   └── static/
β”œβ”€β”€ example_resumes/        # Sample resumes & job description for testing
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ app.py                  # Application entry point
└── README.md

Quick Start

1. Install Dependencies

pip install -r requirements.txt
python -m spacy download en_core_web_sm

2. Run the Application

python app.py

3. Open in Browser

Visit http://127.0.0.1:5000


Usage

  1. Home Page β€” Overview of the system and how it works.
  2. Upload β€” Paste or upload a job description, then upload one or more candidate resumes.
  3. Analyse β€” Confirm and run the AI analysis pipeline.
  4. Results Dashboard β€” View ranked candidates with:
    • Match scores
    • Matched / missing skill breakdowns
    • Detected soft skills
    • Comparison charts

Example Data

The example_resumes/ directory contains:

  • job_description.txt β€” Sample Senior Python Developer JD
  • 5 candidate resumes with varying skill profiles

How Scoring Works

The absolute final match score is a dynamic, recruiter-controlled blend of four core similarity measures:

ComponentDefault WeightDescription
Tech Skills60%Strict Regex Exact-Match Intersection against SpaCy NER
Contextual Match15%Semantic N-Gram (1,3) + TF-IDF Cosine Trajectory
Years of Experience15%Linear Threshold Ratio
Soft Skills10%Strict Regex Exact-Match Intersection

Plus an autonomous mathematically bounded Extra Skills bonus (Default cap: +5%) for tech skills discovered but not mathematically requested in the JD.

All weights, metrics, and bonus caps are actively customizable by the recruiter via UI Range Sliders on the Upload Dashboard before firing the background Analysis thread!


Author

B.Tech Final Year Project β€” AI in Recruitment Process

Contributors

rohangargjfl

17 commits

PunitSukhani

2 commits

rohangargjfl/AI-Resume_Screening_System

0

stars

19

commits

Python

primary language

May 26, 2026

updated

README

AI Resume Screening and Candidate Ranking System

AI in Recruitment Process: Resume Analysis using NLP

A production-style prototype that uses NLP and Sentence Transformers to automatically screen resumes, match candidates against job descriptions, and rank them with full explainability.


πŸš€ Run on Google Colab (No Setup Required!)

Mam / Evaluator: Sirf neeche diye link pe click karein aur Runtime β†’ Run All press karein. Koi installation nahi, sirf Google account chahiye!

Open In Colab

Direct Link:

https://colab.research.google.com/github/rohangargjfl/AI-Resume_Screening_System/blob/main/Run_On_Google_Colab.ipynb

Steps to Run:

  1. Click the link above β†’ Opens directly in Google Colab
  2. Go to Runtime β†’ Run All
  3. Wait ~5 minutes for setup (first time only)
  4. Click the public URL that appears at the end of the last cell
  5. Register with any email/password β†’ Start screening resumes!

Features

ModuleDescription
Resume ParserExtracts text from PDF, DOCX, TXT and preprocesses it
NLP ProcessingTokenization, lemmatization, NER, strict regex skill extraction via SpaCy
Feature ExtractionStatistical pseudo-semantic TF-IDF N-Grams (1,3) (scikit-learn)
Matching EngineCosine similarity β†’ dynamic recruiter-weighted multi-variable scoring
Explainable AIMathematical score breakdown & reasoning text generation
VisualizationInteractive Chart.js & dynamic UI score badges
Web ApplicationFlask asynchronous dashboard with interactive uploading and SSO Auth

Tech Stack

Python Β· Flask Β· SpaCy Β· scikit-learn Β· Vanilla JS Β· Bootstrap 5 Β· Chart.js


Project Structure

AI_Resume_Screening_System/
β”œβ”€β”€ resume_parser/          # PDF/DOCX/TXT extraction & preprocessing
β”œβ”€β”€ nlp_processing/         # SpaCy NLP pipeline & skill extraction
β”œβ”€β”€ feature_extraction/     # TF-IDF + Sentence Transformer embeddings
β”œβ”€β”€ matching_engine/        # Cosine similarity scoring
β”œβ”€β”€ explainable_ai/         # Skill-level explanations
β”œβ”€β”€ visualization/          # Matplotlib chart generation
β”œβ”€β”€ web_app/                # Flask routes, templates, static assets
β”‚   β”œβ”€β”€ templates/
β”‚   └── static/
β”œβ”€β”€ example_resumes/        # Sample resumes & job description for testing
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ app.py                  # Application entry point
└── README.md

Quick Start

1. Install Dependencies

pip install -r requirements.txt
python -m spacy download en_core_web_sm

2. Run the Application

python app.py

3. Open in Browser

Visit http://127.0.0.1:5000


Usage

  1. Home Page β€” Overview of the system and how it works.
  2. Upload β€” Paste or upload a job description, then upload one or more candidate resumes.
  3. Analyse β€” Confirm and run the AI analysis pipeline.
  4. Results Dashboard β€” View ranked candidates with:
    • Match scores
    • Matched / missing skill breakdowns
    • Detected soft skills
    • Comparison charts

Example Data

The example_resumes/ directory contains:

  • job_description.txt β€” Sample Senior Python Developer JD
  • 5 candidate resumes with varying skill profiles

How Scoring Works

The absolute final match score is a dynamic, recruiter-controlled blend of four core similarity measures:

ComponentDefault WeightDescription
Tech Skills60%Strict Regex Exact-Match Intersection against SpaCy NER
Contextual Match15%Semantic N-Gram (1,3) + TF-IDF Cosine Trajectory
Years of Experience15%Linear Threshold Ratio
Soft Skills10%Strict Regex Exact-Match Intersection

Plus an autonomous mathematically bounded Extra Skills bonus (Default cap: +5%) for tech skills discovered but not mathematically requested in the JD.

All weights, metrics, and bonus caps are actively customizable by the recruiter via UI Range Sliders on the Upload Dashboard before firing the background Analysis thread!


Author

B.Tech Final Year Project β€” AI in Recruitment Process

Contributors

rohangargjfl

17 commits

PunitSukhani

2 commits

Languages

Python

34.0%

Jupyter Notebook

24.7%

TeX

24.1%

HTML

10.9%

CSS

5.6%