A live resume scanning and ranking tool built using Python, Streamlit, and NLP. The app parses resumes (PDF/DOCX), extracts skills, experience, and education, ranks candidates against a job description, and generates highlighted resumes and full PDF reports.
-
Upload multiple resumes (PDF / DOCX)
-
Job Description Input with key skills
-
Live scoring of candidates:
- Weighted matching score
- Semantic similarity score
-
Resume preview with highlighted skills
-
Analytics Dashboard:
- Candidate skill distribution
- Experience levels
- Top skills
-
Skill Gap Heatmap: Compare candidate skills vs job requirements
-
Export Options:
- Highlighted resumes in HTML & PDF
- Full PDF report with all candidates and analytics
-
Filters:
- Minimum score
- Years of experience
- Education levels
resume_scanner_nlp/
├── app.py # Main Streamlit app
├── config.py # Configuration (paths, API keys, etc.)
├── data/
│ ├── job_descriptions/ # Store sample or real job descriptions
│ ├── resumes/ # Upload raw resumes here
│ ├── highlighted_resumes/ # Generated highlighted resumes (HTML & PDF)
│ └── reports/ # Full reports PDFs
├── modules/ # Core modules
│ ├── __init__.py
│ ├── dashboard.py
│ ├── experience_level.py
│ ├── highlight.py
│ ├── job_analysis.py
│ ├── matching.py
│ ├── ner_extraction.py
│ ├── parser.py
│ ├── preprocessing.py
│ ├── ranking.py
│ ├── report.py
│ ├── resume_scanner.py
│ ├── semantic.py
│ └── skill_extraction.py
├── README.md
├── requirements.txt
└── venv/ # Virtual environment
- Clone the repository
git clone <your-repo-url>
cd resume_scanner_nlp- Create a virtual environment
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
.venv\Scripts\activate # Windows- Install dependencies
pip install -r requirements.txt- Install wkhtmltopdf (required for PDF export)
- macOS (Homebrew):
brew install wkhtmltopdf- Ubuntu/Debian:
sudo apt-get install wkhtmltopdf- Run Streamlit app
streamlit run app.py- Open in browser
http://localhost:8502
- Steps in the app:
- Paste the job description
- Enter key skills (comma-separated)
- Upload resumes (PDF or DOCX)
- Adjust filters in the sidebar (Score, Experience, Education)
- View candidate list, resume preview, analytics dashboard, and skill gap heatmap
- Export highlighted resumes and full PDF report
data/highlighted_resumes/→ Highlighted HTML & PDF resumesdata/reports/→ Full PDF report with all candidates and analytics
- Place resumes in
data/resumes/ - Place job descriptions in
data/job_descriptions/
- Make sure
wkhtmltopdfis installed and path is correctly set inapp.py:
config = pdfkit.configuration(wkhtmltopdf="/usr/local/bin/wkhtmltopdf")- Streamlit may give warnings about
use_container_width. Usewidth='stretch'instead. - HuggingFace tokenizers warning is normal when using multiprocessing; can be ignored.
- Python ≥ 3.9
- Streamlit
- Pandas
- PDFKit
- PyPDF2
- python-docx
- spaCy (NER extraction)
- matplotlib / seaborn (for dashboards)
- HuggingFace Transformers (semantic similarity)
- scikit-learn
pip install -r requirements.txtMIT License – Open source