An intelligent web app built using Streamlit that allows users to:
- ✅ Build professional resumes from structured form inputs
- 📊 Evaluate resumes against job descriptions using ATS-style keyword scoring
- 🧠 Get personalized suggestions to improve resumes based on missing keywords and formatting insights
- Dynamic multi-entry education section (with Add/Remove functionality)
- Sections for basic info, experience, projects, skills, volunteering, hobbies, certifications
- Bullet-point formatting support for clarity
- Generates a PDF resume using ReportLab
- PDF filename generated as
firstname_lastname_resume.pdf
- Upload your resume PDF
- Paste job description (optional)
- Calculates ATS match score based on keyword overlap
- Handles fallback mode if JD not provided
- Smart analysis of resume keywords grouped by sections:
- ✅ Found keywords
- ❌ Missing keywords with actionable advice
- Keywords shown in collapsible expanders for better readability
.
├── builder/ # Resume Builder logic
│ ├── form_fields.py # Form UI components (Basic Info, Projects, Skills etc.)
│ ├── form_handler.py # Main handler that calls all form sections
│ ├── pdf_generator.py # Resume PDF generation logic
│ └── styles.py # Custom CSS styling for better UI
│
├── reviewer/ # Resume & JD parsing + ATS scoring
│ ├── resume_parser.py # Extracts text from PDF resumes
│ ├── ats_scoring.py # Calculates ATS score
│ └── keyword_suggestions.py # (optional/unused)
│
├── insights/ # Suggestion engine for resume improvement
│ ├── suggestions.py # Section-wise keyword comparison
│ └── utils.py # Text cleaning and resume helpers
│
├── app.py # Main Streamlit entry point
├── requirements.txt # Python dependencies
└── README.md # Project readme (this file)
git clone https://github.com/yourusername/resume-reviewer.git
cd resume-reviewer
python -m venv .venv
source .venv/bin/activate # on Linux/macOS
.venv\Scripts\activate # on Windows
pip install -r requirements.txt
streamlit run app.py
The app will be available at http://localhost:8501
- Python 3.10+
- Streamlit (UI framework)
- ReportLab (PDF generation)
- scikit-learn (keyword vectorization)
- fuzzywuzzy / difflib (keyword matching logic)
- PyPDF2 (PDF text extraction)
- Navigate to the "📝 Build Resume" tab
- Fill in your basic information (name, email, phone, LinkedIn, GitHub)
- Add education entries using the "➕ Add Education" button
- Describe your work experience with bullet points
- Add project details and skills
- Optionally fill in volunteering, hobbies, and certifications
- Click "📄 Generate Resume" to download your PDF
- Go to the "📊 ATS Review" tab
- Upload your resume PDF
- Optionally paste a job description
- Click "🔍 Analyze Resume" to get your ATS score
- Review the keyword analysis and suggestions
- Use the "🧠 Suggestions" tab after uploading a resume
- View found keywords grouped by resume sections
- See missing keywords with actionable advice
- Use the suggestions to improve your resume
- Support for resume templates
- Export as DOCX format
- Section reordering functionality
- Integration with LinkedIn for keyword boosting
- Multiple resume formats and styles
- Resume comparison tools
PRs and issues are welcome! Open a ticket or fork the repo and suggest improvements.
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is open-source and available under the MIT License.
Shivam Rathod
- LinkedIn: shivamrathod021
- GitHub: shivamr021
Built with 💡 by Shivam Rathod.
- Streamlit community for the amazing UI framework
- ReportLab for PDF generation capabilities
- Open-source contributors who made this project possible
If you have any questions or need help, feel free to:
- Open an issue on GitHub
- Contact me on LinkedIn
- Star the repository if you find it helpful! ⭐