Skip to content

Sumitpal321/Resume_screening_system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📄 Resume Screening System

AI-powered Resume Screening System built using Streamlit and NLP techniques. It analyzes resumes against a job description using a Hybrid Scoring approach and provides decision support, skill gap analysis, and explainability.


🚀 Overview

This application ranks resumes by computing a weighted Hybrid Score from three independent metrics:

Component Weight Description
Semantic Similarity 50 % TF-IDF cosine similarity between resume and JD
Skill Category Match 30 % Match across technical, soft, domain, and tools
Mandatory Skill Coverage 20 % Coverage of "must have" / "required" skills

Decision thresholds: ≥ 75 % → Shortlist · 50-74 % → Review · < 50 % → Reject


✨ Features

  • 📊 Hybrid Scoring Algorithm — weighted multi-signal scoring
  • 🤖 ML Model Integration — RandomForest regression prediction score
  • 🔍 Mandatory Skill Extraction — NLP-based phrase detection
  • 📈 Visual Analytics — score distribution, radar charts, ranking bars
  • ⚠️ Keyword Gap Analysis — missing vs matching keyword breakdown
  • 🏆 Resume Ranking System — auto-sorted candidate table
  • 💡 Explainability Panel — human-readable decision explanations
  • 🎨 Dark AI Dashboard Theme — polished, accessible dark UI

🏗️ Project Structure

Resume Screening System/
├── app.py                  # Main Streamlit application (~250 lines)
├── config.py               # Centralized configuration (weights, thresholds, skills)
├── train_model.py          # ML training pipeline (synthetic data + RandomForest)
├── requirements.txt        # Python dependencies
│
├── utils/                  # Core NLP & scoring logic
│   ├── __init__.py
│   ├── pdf_parser.py       # PDF text extraction with error handling
│   ├── text_processing.py  # Text preprocessing & stopword removal
│   └── similarity.py       # Scoring engine (semantic, category, hybrid, decisions)
│
├── ui/                     # Streamlit UI components
│   ├── __init__.py
│   ├── styles.py           # All CSS themes & accessibility styles
│   └── components.py       # Reusable UI components (hero, sidebar, reports)
│
├── visualization/          # Chart generation
│   ├── __init__.py
│   └── charts.py           # Bar charts, histograms, radar charts
│
├── models/                 # Trained ML artefacts (generated by train_model.py)
│   ├── resume_screening_model.pkl
│   └── tfidf_vectorizer.pkl
│
├── tests/                  # Unit tests
│   ├── __init__.py
│   ├── test_text_processing.py
│   ├── test_similarity.py
│   └── test_pdf_parser.py
│
└── README.md

🛠️ Tech Stack

Layer Technology
Frontend Streamlit
NLP scikit-learn (TF-IDF), NLTK
ML Model RandomForestRegressor (scikit-learn)
PDF Parsing PyPDF2
Visualisation Matplotlib
Serialisation Joblib

⚙️ Installation

# 1. Clone the repository
git clone https://github.com/YOUR_USERNAME/Resume_screening_system.git
cd Resume_screening_system

# 2. Create virtual environment (optional but recommended)
python -m venv .venv
.venv\Scripts\activate      # Windows
# source .venv/bin/activate  # macOS / Linux

# 3. Install dependencies
pip install -r requirements.txt

🧠 Training the ML Model

The training script generates a synthetic dataset of resume–JD pairs and trains a RandomForestRegressor:

python train_model.py

This will output evaluation metrics (MAE, R²) and save two files:

  • models/resume_screening_model.pkl
  • models/tfidf_vectorizer.pkl

▶️ Running the App

streamlit run app.py

Then open your browser at http://localhost:8501.


🧪 Running Tests

python -m pytest tests/ -v

📐 Scoring Formula

Hybrid Score = 0.5 × Semantic Similarity
             + 0.3 × Skill Category Match
             + 0.2 × Mandatory Coverage

All weights and thresholds are configurable in config.py.


📝 License

This project is for educational purposes.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages