A Streamlit web app that uses Natural Language Processing (NLP) to match resumes with job descriptions. It supports single or batch analysis, identifies skill gaps, and provides visual insights to help job seekers and recruiters make informed decisions.
- ✅ Semantic Similarity using TF-IDF + Cosine Similarity
- 📄 Supports PDF & TXT resumes
- 🧠 Skill Extraction using spaCy and pattern matching
- 📊 Interactive Visualizations with Plotly
- 📈 Improvement Suggestions for resume optimization
- 👥 Bulk Resume Comparison with ranking and breakdown
Component | Technology |
---|---|
Frontend | Streamlit |
Backend/NLP | Python, spaCy |
ML & Vectors | scikit-learn (TF-IDF) |
PDF Processing | PyMuPDF |
Visualization | Plotly |
resume-matcher/
├── app.py # Main app
├── utils/ # Modular utilities
│ ├── text_extractor.py # File parsing
│ ├── similarity_analyzer.py # Matching logic
│ ├── skill_extractor.py # Skill identification
│ ├── visualizations.py # Charting
│ └── improvement_suggestions.py # Resume tips
git clone https://github.com/your-username/resume-matcher.git
cd resume-matcher
python -m venv venv
venv\Scripts\activate # For Windows
# OR
source venv/bin/activate # For macOS/Linux
pip install -r requirements.txt
python -m spacy download en_core_web_sm
streamlit run app.py
-
Single Resume Analysis Upload a resume and job description → Click Analyze → Get similarity score, skill gaps, and visualizations.
-
Multi-Resume Comparison Upload multiple resumes + job description → Click Compare → See ranking, individual reports, and matched skills.
-
Missing spaCy Model
python -m spacy download en_core_web_sm
-
Port Conflict
streamlit run app.py --server.port 8502
Licensed under MIT License
Built with ❤️ for better hiring experiences ⭐ Star this repo