This project builds an AI-powered job and resume recommendation engine using Sentence-BERT embeddings to match resumes with job postings — and vice versa. It was initially developed as a demo on Kaggle to showcase how semantic similarity can improve recruitment and job searching over traditional keyword-based systems.
The system has now been enhanced with a Streamlit web interface for interactive use and deployment.
It processes a subset of the LinkedIn Job Postings Dataset (2023-24) and the Resume Dataset, recommending the top 5 matches in both directions:
- Resumes per job posting (for recruiters)
- Job postings per resume (for job seekers)
- 📘 Kaggle Notebook: Job Recommender NLP
- 💻 GitHub Repository: Job-Recommender-NLP
- 📄 LinkedIn Job Postings Dataset: View Dataset
- 📄 Resume Dataset: View Dataset
- Matches 1,000 job postings with 1,000 resumes using semantic similarity
- Recommends:
- 🔍 Top 5 jobs for an uploaded resume (job-seeker perspective)
- 🧑💼 Top 5 resumes for an uploaded job description (recruiter perspective)
- Built with Sentence-BERT (all-MiniLM-L6-v2) for embeddings
- Features:
- Text preprocessing using spaCy (lemmatization, skill/domain extraction)
- Cosine similarity computation
- Interactive frontend using Streamlit
- Auto-generation of working files if missing
- 🎨 Visually Appealing UI: Custom-styled Streamlit interface
- 📁 File Uploads: Supports
.txt,.pdf,.docxfor resumes and job descriptions - ⚙️ Dynamic Setup: Automatically creates the working directory if absent
app.py: Streamlit app for interactive resume/job matchingjob_recommender_nlp.py: Backend logic (data processing, embeddings, recommendation)job-recommender-nlp.ipynb: Jupyter Notebook versiondatasets/: Includespostings.csvandResume.csv
- Python 3.10+
Install dependencies:
pip install numpy pandas spacy sentence-transformers scikit-learn PyPDF2 python-docx streamlit
Install the spaCy model:
python -m spacy download en_core_web_smgit clone https://github.com/MuhammadAliAsgher/Job-Recommender-NLPcd Job-Recommender-NLP-
Datasets (
postings.csv,Resume.csv) are inside thedatasets/directory -
Managed using Git LFS — large files auto-downloaded when you clone the repo
streamlit run app.pyThis project is licensed under the MIT License - see the LICENSE file for details.
Created by Muhammad Ali Asghar
📧 Connect on LinkedIn
🌐 Github/MuhammadAliAsgher
