βββββββ βββββββββββββββββββ βββββββ ββββββββββββ
βββββββββββββββββββββββββββ ββββββββ βββββββββββββ
ββββββββββββββ βββββββββββ ββββββββββββββββββββ
ββββββββββββββ βββββββββββ ββββββββββββββββββββ
βββ βββββββββββββββββββββββββββββββ βββ βββββββββββ
βββ βββββββββββββββββββ βββββββ βββ βββββββββββ
βββββββ βββββββ ββββββ ββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββ βββββββββββββββββββ βββ ββββββ ββββββββ
βββββββββββ βββββββββββββββββββ βββ ββββββ ββββββββ
βββ βββββββββββββββ βββββββββββ βββ βββββββββββ βββ
βββ βββ βββββββ βββ βββββββββββ βββ βββββββββββ βββ
Resume Roaster is a fully functional ATS (Applicant Tracking System) simulator that tears apart your resume, matches it against real job descriptions, finds the gaps, and tells you exactly why you're getting ghosted β before a recruiter does.
π Demo Β· π¦ Installation Β· π§ How It Works Β· βοΈ Architecture Β· π Features Β· π€ Contributing
Every year, millions of qualified candidates get rejected before a human ever sees their resume β filtered out silently by ATS systems they don't understand.
Students and early-career professionals face a brutal reality:
- π Applied to 100+ jobs, heard back from 3?
- π€· Don't know why you're getting rejected?
- π§© Not sure what keywords or skills are missing?
- π΅οΈ Never seen the inside of an ATS before?
Resume Roaster changes that. It puts you on the other side of the system.
Resume Roaster simulates a real ATS pipeline end-to-end:
| Step | What Happens |
|---|---|
| π Parse | Extracts structured data from your PDF resume |
| π§Ή Clean | Normalizes and preprocesses raw text |
| π’ Score | Runs a weighted ML-inspired scoring engine |
| π§ Match | Compares your resume to a job description using TF-IDF + Cosine Similarity |
| π Gap Analysis | Identifies matched vs. missing keywords |
| π― Decide | Simulates a recruiter's shortlisting decision |
| π¬ Feedback | Gives actionable, human-readable suggestions |
| π₯ Report | Generates a downloadable analysis report |
βββββββββββββββββββββββ
β PDF Resume β
βββββββββββ¬ββββββββββββ
β
βββββββββββΌββββββββββββ
β Parser Module β β PyPDF2 + Regex + Section Detection
βββββββββββ¬ββββββββββββ
β
βββββββββββΌββββββββββββ
β Feature Engineering β β Projects, Skills, Experience, etc.
βββββββββββ¬ββββββββββββ
β
ββββββββββββββββββββΌβββββββββββββββββββ
β β β
ββββββββββββΌβββββββββ βββββββββΌβββββββββ ββββββββΌβββββββββββ
β ML Scoring Engineβ β NLP JD Matcher β β Keyword Gap β
β (Weighted Score) β β (TF-IDF + β β Analyzer β
β β β Cosine Sim) β β (Set Ops) β
ββββββββββββ¬βββββββββ βββββββββ¬βββββββββ ββββββββ¬βββββββββββ
β β β
ββββββββββββββββββββΌβββββββββββββββββββ
β
βββββββββββΌββββββββββββ
β Decision Engine β β Shortlist: YES / MAYBE / NO
βββββββββββ¬ββββββββββββ
β
βββββββββββΌββββββββββββ
β Feedback + Report β β Strengths, Gaps, Suggestions
βββββββββββ¬ββββββββββββ
β
βββββββββββΌββββββββββββ
β Streamlit UI β β Interactive Web Interface
βββββββββββββββββββββββ
π parser.py β Resume Parser
- Extracts raw text from PDF using
PyPDF2 - Cleans and normalizes text (lowercasing, punctuation, whitespace)
- Detects resume sections (Projects, Skills, Experience, Education, etc.)
- Extracts structured features via regex and keyword detection
Extracted Feature Set:
{
"projects": [...],
"skills": [...],
"links": [...],
"achievements": [...],
"experience": [...],
"certifications": [...]
}π scorer.py β ML Scoring Engine
Simulates ATS scoring with a weighted model that penalizes fake inflation.
| Feature | Weight |
|---|---|
| Projects | 30% |
| Experience | 25% |
| Skills | 20% |
| Achievements | 15% |
| Certifications/Links | 10% |
- Strict penalty system β no inflated scores
- Score normalization
- Capped final score to prevent false positives
π§ nlp_matcher.py β JD Matching
Uses classical NLP to compare your resume against a job description:
TF-IDF Vectorization β Cosine Similarity β Match %
- Handles varied JD formats
- Language-agnostic keyword weighting
- Outputs similarity percentage (0β100%)
π gap_analyzer.py β Keyword Gap Analyzer
matched = resume_keywords β© jd_keywords # β
You have these
missing = jd_keywords - resume_keywords # β You're missing thesePinpoints exactly which skills/tools to add to pass the ATS filter.
π― decision_engine.py β Recruiter Simulation
Resume Score (60%) + JD Match (40%) β Shortlist Decision
Result:
β
Shortlisted: YES β Score β₯ 75 & Match β₯ 70
β οΈ Shortlisted: MAYBE β Borderline signals
β Shortlisted: NO β Below threshold
π§ skill_recommender.py β Skill Gap Recommender
Maps missing keywords to actionable learning suggestions:
Missing: docker β "Learn Docker for containerized deployments"
Missing: aws β "Get AWS Cloud Practitioner certified"
Missing: sql β "Practice SQL on LeetCode / HackerRank"
π visualizer.py β Visual Analytics
Generates Matplotlib charts showing:
- Resume strength breakdown (bar chart by feature)
- ATS score vs. JD match comparison
- Keyword coverage heatmap
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π₯ RESUME ROASTER v1.0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Upload Resume (PDF) π― Select Target Role β
β βββββββββββββββββββββββ βββββββββββββββββββββββ β
β β resume.pdf β
β β Backend Engineer βΎ β β
β βββββββββββββββββββββββ βββββββββββββββββββββββ β
β β
β π Paste Job Description β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β We are looking for a Python developer with... β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [ π₯ ROAST MY RESUME ] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β RESUME SCORE: ββββββββββ 78% β
β JD MATCH: ββββββββββ 65% β
β DECISION: β οΈ MAYBE (Confidence: 70%) β
β β
β β
python β
backend β docker β aws β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Python 3.10+
- pip
# 1. Clone the repository
git clone https://github.com/yourusername/resume-roaster.git
cd resume-roaster
# 2. Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Run the app
streamlit run app.pystreamlit
PyPDF2
scikit-learn
matplotlib
pandas
numpy
reβββββββββββββββββββββββββββββββββββββββ
π₯ RESUME ROAST RESULTS
βββββββββββββββββββββββββββββββββββββββ
π RESUME SCORE : 78 / 100
π― JD MATCH : 65%
π€ ATS DECISION : β οΈ MAYBE
π CONFIDENCE : 70%
βββββββββββββββββββββββββββββββββββββββ
β
MATCHED KEYWORDS
β python β backend β rest api
β MISSING KEYWORDS
β docker β aws β kubernetes
π‘ SKILL SUGGESTIONS
β Learn Docker for containerized apps
β Get AWS Cloud Practitioner certified
β Explore Kubernetes basics on KodeKloud
βββββββββββββββββββββββββββββββββββββββ
π¬ FEEDBACK
β Strong project section
β Good use of technical keywords
β Add internship / work experience
β Include deployment-related skills
π₯ Power-up: Add a GitHub projects link
βββββββββββββββββββββββββββββββββββββββ
| Domain | Concepts |
|---|---|
| π€ Machine Learning | Feature engineering, weighted scoring, model-based thinking |
| π NLP | TF-IDF vectorization, cosine similarity, keyword extraction |
| π Information Retrieval | Keyword matching, relevance scoring, document similarity |
| βοΈ Software Engineering | Modular architecture, separation of concerns, reusable components |
| π Data Science | Feature normalization, score distribution, visualization |
| π§ System Design | End-to-end pipeline design, ATS simulation, decision logic |
resume-roaster/
β
βββ app.py # Streamlit entry point
β
βββ modules/
β βββ parser.py # PDF text extraction + feature engineering
β βββ scorer.py # Weighted ML scoring engine
β βββ nlp_matcher.py # TF-IDF + Cosine Similarity JD matcher
β βββ gap_analyzer.py # Keyword gap detection
β βββ decision_engine.py # Recruiter shortlist simulation
β βββ skill_recommender.py# Skill gap β learning suggestions
β βββ visualizer.py # Matplotlib charts
β βββ feedback_engine.py # Human-readable feedback generator
β βββ report_generator.py # Downloadable report export
β
βββ data/
β βββ skill_map.json # Skill β suggestion mapping
β
βββ assets/
β βββ sample_resume.pdf # Test resume
β
βββ requirements.txt
βββ LICENSE
βββ README.md
- Rule-based feature extraction (no deep semantic parsing)
- Synthetic scoring model (not trained on real recruiter data)
- Basic keyword matching (no synonym/contextual awareness)
- No deep ML model training
- π€ BERT/Sentence-Transformers for semantic JD matching
- π§ Train on real recruiter feedback data
- π Multi-language resume support
- π Dashboard analytics across multiple resumes
- π LinkedIn profile import
- π§Ύ LaTeX resume generation from feedback
Contributions are welcome! Here's how:
# Fork the repo, then:
git checkout -b feature/your-feature-name
git commit -m "feat: add your feature"
git push origin feature/your-feature-name
# Open a Pull Request πPlease follow the Contributor Guidelines and ensure all new modules include docstrings and unit tests.
This project is licensed under the MIT License β see LICENSE for details.
- Streamlit β for the rapid UI layer
- scikit-learn β TF-IDF and vectorization tools
- PyPDF2 β PDF parsing
- Matplotlib β visualization