An AI-powered resume screening tool that uses OpenAI GPT-4o to score resumes against job descriptions.
- 📄 PDF Processing: Extract text from PDF resumes using advanced parsing
- 🤖 AI Scoring: Score resumes against job descriptions using OpenAI GPT-4o API
- 📊 Interactive UI: Streamlit-based web interface with sortable results
- 📦 Batch Processing: Handle multiple resumes at once (ZIP upload supported)
- 💾 Export Results: Download results as CSV
- 🔍 Detailed Analysis: View strengths, gaps, and follow-up questions
pip install -r requirements.txtGet your OpenAI API key from platform.openai.com
streamlit run app.py- Upload resumes (individual PDFs or ZIP file)
- Enter your job description
- Add your OpenAI API key
- Click "Run Scoring"
- Review results and export as needed
resume-reviewer/
├── app.py # Main Streamlit application
├── reviewer.py # PDF processing and Claude scoring utilities
├── requirements.txt # Python dependencies
├── README.md # This file
└── data/ # Auto-created data directories
├── raw_pdfs/ # Extracted PDF files
├── processed/ # Processed text files
└── results/ # Scoring results
- Individual PDFs: Upload multiple PDF files directly
- ZIP Files: Create a ZIP file containing all your PDFs for easier batch upload
- Be specific about required skills and experience
- Include technical requirements and qualifications
- Mention must-have vs. nice-to-have skills
- Scores range from 0-100 (100 = perfect match)
- Results include strengths, gaps, and suggested interview questions
- All data is processed locally and temporarily
- OpenAI API: Required for resume scoring
- Rate Limits: Be mindful of API rate limits when processing many resumes
- Costs: Check OpenAI pricing for token usage estimates
-
PDF Processing Errors
- Ensure PDFs are not password-protected
- Check that PDFs contain selectable text (not just images)
-
API Key Issues
- Verify your OpenAI API key is valid
- Check your API quota and billing status
-
Memory Issues
- For large batches, process in smaller chunks
- Clear data/ directory between runs if needed
- Batch Size: Process 10-20 resumes at a time for optimal performance
- PDF Quality: Higher quality PDFs with good text extraction work better
- Network: Stable internet connection required for API calls
- All processing happens locally on your machine
- Resume text is sent to OpenAI API only for scoring
- No data is stored permanently (temporary files are used)
- Delete data/ directory after use for complete cleanup
- New Scoring Criteria: Modify the prompt in
reviewer.py - Additional Export Formats: Extend the export functionality in
app.py - UI Improvements: Customize the Streamlit interface
Run with sample resumes to test functionality before processing real candidate data.
MIT License - Feel free to modify and distribute as needed.
For issues or questions:
- Check the troubleshooting section above
- Review the code comments for implementation details
- Test with sample data first