An intelligent, end-to-end system that automatically reads, analyzes, scores, and ranks resumes based on job descriptions. Built with Python and Natural Language Processing (NLP), this system mimics what a human recruiter doesβbut faster and more consistently.
git clone https://github.com/ShashankBejjanki1241/ApexHire.git
cd ApexHire
python setup.pystreamlit run app/main.py- Upload Resume: Go to "π Resume Analysis" and upload your resume
- Add Job: Go to "πΌ Job Matching" and enter job details
- Get Results: View match scores and recommendations
| Use Case | Description |
|---|---|
| Job Seekers | Test your resume against job descriptions |
| Recruiters | Screen multiple candidates efficiently |
| HR Teams | Standardize resume evaluation |
| Career Coaches | Help clients improve resumes |
- π Resume Parsing: Supports PDF, DOCX, and TXT formats
- π§Ή Text Preprocessing: Cleans and tokenizes text data
- π§ Skill Extraction: Extracts technical and soft skills
- π Relevance Scoring: Matches resumes against job descriptions
- π Web Interface: Streamlit-based user interface
- π Ranking System: Ranks candidates by relevance score
- π Semantic Analysis: Advanced NLP for better matching
- π Detailed Reports: Comprehensive analysis output
- Python 3.8+
- spaCy - Natural Language Processing
- pdfplumber - PDF text extraction
- python-docx - DOCX file handling
- pandas & numpy - Data processing
- scikit-learn - Machine learning utilities
- Streamlit - Web application framework
- NLTK - Natural Language Toolkit
streamlit run app/main.pyFeatures:
- Easy-to-use dashboard
- Real-time analysis
- Interactive visualizations
- Step-by-step guidance
# Single file analysis
python cli.py --resume resume.pdf --job job.txt
# Batch processing
python cli.py --batch --resumes data/resumes/ --jobs data/jobs/
# Launch web interface
python cli.py --webfrom src.main_pipeline import ResumeScreener
screener = ResumeScreener()
result = screener.analyze_resume("resume.pdf")
match = screener.match_resume_to_job("resume.pdf", job_description)ApexHire/
βββ π src/ # Core AI modules
β βββ main_pipeline.py # Main orchestration
β βββ parser.py # Resume parsing
β βββ preprocess.py # Text preprocessing
β βββ scorer.py # Scoring algorithms
β βββ skills_extractor.py # Skill extraction
β βββ resume_analyzer.py # Resume analysis
β βββ performance_monitor.py # Performance tracking
β βββ utils.py # Utility functions
βββ π api/ # FastAPI REST API
β βββ main.py # API endpoints
βββ π app/ # Web interface
β βββ main.py # Streamlit app
β βββ components/ # UI components
βββ π config/ # Configuration
β βββ settings.py # Centralized settings
βββ π docker/ # Docker configuration
β βββ Dockerfile # Container definition
β βββ docker-compose.yml # Multi-service setup
βββ π docs/ # Documentation
β βββ api/ # API documentation
β βββ deployment/ # Deployment guides
β βββ development/ # Development guides
β βββ USER_GUIDE.md # User guide
β βββ API.md # API reference
βββ π tests/ # Test suite
β βββ test_parser.py # Parser tests
β βββ test_performance.py # Performance tests
β βββ test_api.py # API tests
βββ π data/ # Sample data
β βββ resumes/ # Resume files
β βββ job_descriptions/ # Job descriptions
βββ π output/ # Analysis results
βββ π logs/ # Application logs
βββ π cli.py # Command-line interface
βββ π requirements.txt # Dependencies
βββ π setup.py # Installation script
βββ π README.md # This file
π See PROJECT_STRUCTURE.md for detailed organization
π― RESUME ANALYSIS RESULTS
==========================================
π Resume: example_resume.pdf
π Text Length: 12,176 characters
π§ Technical Skills: python, aws, sql, git, react
π€ Soft Skills: agile, scrum, leadership
π JOB MATCH SCORES:
----------------------------------------
iOS Developer: 0.453 (45.3%)
Full Stack Developer: 0.447 (44.7%)
Python Developer: 0.470 (47.0%)
- Formats: PDF, DOCX, TXT
- Size: Maximum 10MB
- Content: Readable text (not scanned images)
- Language: English (for best results)
- Format: Plain text (.txt)
- Content: Clear requirements and responsibilities
- Length: Detailed descriptions work better
The system can be customized by modifying:
- Scoring weights in
src/config/settings.py - Skill lists in
src/skills_extractor.py - Text preprocessing in
src/preprocess.py
- Quick Start Guide - Get started in 5 minutes
- Complete User Guide - Detailed instructions
- API Documentation - For developers
- Troubleshooting - Common issues
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Shashank B
- GitHub: @ShashankBejjanki1241
- Project: ApexHire
- spaCy for excellent NLP capabilities
- pdfplumber for reliable PDF parsing
- python-docx for DOCX file handling
- pandas and numpy for data processing
- Streamlit for web interface framework
β Star this repository if you find it helpful!
π Fork and contribute to make it even better!
π§ Contact the author for collaboration opportunities!