Skip to content

MahboobXworld/Smart-Resume-Screening-System-with-ATS-Advanced-Version-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 

Repository files navigation

Smart Resume Screening System with ATS (Advanced Version)

πŸ“Œ Project Overview:

  This is an advanced-level Smart Resume Screening System powered by ATS (Applicant Tracking System) techniques. It helps HR and recruiters to automatically screen, score, and shortlist resumes based on a given Job Description (JD). It also includes a Flask web interface, stores data in a SQLite database, and uses NLP and ML techniques like Named Entity Recognition (NER), TF-IDF, Cosine Similarity, and Job Role Classification using spaCy and other ML models.

πŸ“ Project Structure:

resume_screening_system/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ main.py               # Main workflow script
β”‚   β”œβ”€β”€ parser.py             # Extracts resume text
β”‚   β”œβ”€β”€ ats_scorer.py         # Scores resumes based on job description
β”‚   β”œβ”€β”€ mailer.py             # Sends emails to shortlisted candidates
β”‚   β”œβ”€β”€ file_manager.py       # Handles file movements and storage
β”‚   β”œβ”€β”€ ner_extractor.py      # Extracts name, email, skills using spaCy NER
β”‚   β”œβ”€β”€ role_classifier.py    # Predicts job role category using ML model
β”‚   β”œβ”€β”€ database.py           # SQLite database operations (insert, query, create)
β”‚   └── flask_app.py          # Flask UI for uploading and viewing results
β”œβ”€β”€ resumes/                  # Raw resumes input folder
β”œβ”€β”€ shortlisted/              # Shortlisted resumes output folder
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ job_description.txt   # Job Description for screening
β”‚   β”œβ”€β”€ ranked_candidates.csv # Output: ATS score and details
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ text_cleaner.py       # Text preprocessing
β”‚   β”œβ”€β”€ similarity.py         # TF-IDF and cosine similarity
β”œβ”€β”€ logs/
β”‚   └── ats_log.log           # Logs for system events
β”œβ”€β”€ config/
β”‚   └── email_config.json     # SMTP configuration for email
β”œβ”€β”€ templates/
β”‚   └── index.html            # HTML template for Flask app
β”œβ”€β”€ static/                   # CSS/JS if needed for Flask UI
β”œβ”€β”€ test/                     # Unit test files
β”œβ”€β”€ requirements.txt          # List of required packages
└── README.md                 # Project documentation

βš™οΈ Workflow (Advanced Pipeline):

  1. User uploads resumes using the Flask UI.
  2. parser.py reads and extracts raw text from resumes.
  3. text_cleaner.py preprocesses the text.
  4. job_description.txt is also cleaned similarly.
  5. ner_extractor.py extracts entities like name, email, skills using spaCy NER.
  6. role_classifier.py predicts the job role category for each resume.
  7. ats_scorer.py calculates ATS score using TF-IDF + Cosine Similarity.
  8. ranked_candidates.csv stores all info: name, score, predicted role, etc.
  9. database.py stores this data in a SQLite database.
  10. file_manager.py moves top-scoring resumes to /shortlisted.
  11. mailer.py sends emails to shortlisted candidates.
  12. Logs are written to ats_log.log.

🌐 Flask UI:

  • Upload resumes (PDF/DOCX)
  • See real-time ATS score, extracted info, predicted role
  • Search/filter resumes by score or role

🧠 ML & NLP Features

NER Extraction using spaCy for:

  • Names
  • Emails
  • Phone Numbers
  • Skills

ATS Scoring using:

  • TfidfVectorizer
  • cosine_similarity

Role Classification:

  • Trained classifier (e.g., Logistic Regression or RandomForest)
  • Input: Resume text β†’ Output: Predicted job role

🧰 Tools & Libraries

Feature Libraries/Tools Used
Resume Parsing pdfminer.six, python-docx, textract
Text Cleaning re, nltk, spacy, string
NER spaCy
Similarity Matching scikit-learn, TfidfVectorizer
Classification sklearn models, joblib
Database sqlite3, pandas
Web App Flask, HTML, CSS, Jinja2
Emailing smtplib, email.message, ssl
Logging Python logging module
Testing unittest, pytest

πŸ”‹ Setup Instructions

  1. Clone the repository
git clone https://github.com/yourusername/resume_screening_system.git
cd resume_screening_system
  1. Install requirements
pip install -r requirements.txt
  1. Download NLTK and spaCy models
import nltk
nltk.download('punkt')
nltk.download('stopwords')

python -m spacy download en_core_web_sm
  1. Run Flask Web App
python app/flask_app.py

πŸ§ͺ Testing:

  • Place test files in /test/
  • Run with:
pytest test/

βœ… Future Improvements:

  • Use MongoDB for large-scale resume data
  • Integrate OpenAI embeddings for semantic similarity
  • Add user authentication for HR dashboard
  • Resume feedback system for candidates

πŸ“¬ Contact:

Developer: Mahboob Alam Email: [email protected] LinkedIn: https://www.linkedin.com/in/mahboob-alam-242342152


⭐ Acknowledgments:

Thanks to the open-source libraries and online resources that helped shape this project!

About

AI-powered Resume Screening System using NLP, ML & ATS techniques with Flask & SQLite.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published