This project is a Python-based application with Streamlit interface for parsing resumes, extracting relevant details (skills, experience, etc.), and ranking candidates against job descriptions using NLP.
This is a small public piece of code (standalone fork) taken from of one of my freelance projects.
- Resume parsing: Extracts structured information like name, email, phone, skills, and experience from uploaded PDF resumes
- Candidate ranking: Compares extracted skills with a job description and ranks candidates based on relevance
- Interactive interface: Allows users to upload resumes, enter job descriptions, and view rankings directly in a web browser
- Streamlit for the user interface
- spaCy for NLP and named entity recognition
- scikit-learn for similarity calculations
- pdfplumber for extracting text from PDF files
-
Clone the repository:
git clone git@github.com:avrtt/nlp-resume-parser.git cd nlp-resume-parser
-
Create a virtual environment and activate it:
python -m venv env source env/bin/activate # Windows: env\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Download the
en_core_web_sm
model for spaCy:python -m spacy download en_core_web_sm
-
Run the app:
streamlit run app.py
-
Open your browser and navigate to
http://localhost:8501
-
Upload resumes in PDF format and enter a job description; the app will parse the resumes, rank candidates, and display the results
-
Parsed resume data:
Name: Someone Someonovich Email: someonovich@example.com Phone: 1234567890 Skills: Python, Machine Learning, NLP Experience: 5 years at Biba Boba Corp
-
Ranked candidates:
1. Someone Someonovich (Score: 0.85) 2. Matye Bal (Score: 0.78)
- Add support for DOCX resume formats
- Improve ranking using advanced models
- Add database integration for storing parsed data and rankings
- Analytics dashboard (visualize candidate metrics)
MIT