Automatically analyze, score, and rank candidates against any job description using semantic NLP — built with Python, Sentence Transformers, and Streamlit.
This project is currently being rebuilt as a full-stack SaaS application with a Next.js frontend and FastAPI backend. The new version will include a polished dashboard UI, multi-resume batch processing, and a live public demo.
Current version: Streamlit prototype (fully functional)
v2 stack: Next.js · FastAPI · PostgreSQL · Docker · Deployed on Vercel + Render
Recruiters spend hours manually reviewing resumes. This system automates that process — upload multiple resumes, paste a job description, and get an objective ranked list of candidates with detailed scoring explanations in seconds.
- Batch resume upload — PDF and DOCX support, multiple files at once
- Semantic similarity matching — uses
all-MiniLM-L6-v2to understand meaning, not just keywords - Multi-factor scoring — skill match, experience relevance, education level, and semantic fit
- Missing skills detection — shows exactly what each candidate lacks for the role
- Score explainability — human-readable breakdown of why each candidate ranked where they did
- Visual ranking — charts and score cards for quick comparison
Resume (PDF/DOCX) ──┐
├──► Parser ──► Feature Extractor ──► Scorer ──► Ranked Output
Job Description ────┘
The scorer uses cosine similarity between sentence embeddings to measure semantic relevance between resume content and job requirements — going beyond simple keyword matching to understand context and meaning.
| Layer | Technology |
|---|---|
| NLP Model | sentence-transformers/all-MiniLM-L6-v2 |
| Similarity | Cosine similarity via scikit-learn |
| Resume Parsing | pdfplumber + python-docx |
| Data Processing | pandas |
| UI (v1) | Streamlit |
| UI (v2 — in progress) | Next.js + Tailwind CSS |
| API (v2 — in progress) | FastAPI |
# 1. Clone the repo
git clone https://github.com/Yusufcommit/ai-resume-screening-system.git
cd ai-resume-screening-system
# 2. Install dependencies
pip install -r requirements.txt
# 3. Run the app
streamlit run app.pyOpen http://localhost:8501 in your browser.
ai-resume-screening-system/
├── app.py # Streamlit UI and app entry point
├── parser.py # PDF/DOCX resume text extraction
├── ranking.py # Scoring and candidate ranking logic
├── explainer.py # Human-readable score explanations
├── utils.py # Shared helpers
├── requirements.txt
└── screenshots/ # UI screenshots
Full dashboard screenshots coming with v2. Current Streamlit UI:
| Main Interface | Candidate Ranking | Score Visualization |
|---|---|---|
![]() |
![]() |
![]() |
- Resume parsing (PDF + DOCX)
- Semantic similarity scoring
- Multi-factor ranking
- Missing skills detection
- Score explainability
- Rebuild frontend in Next.js with polished dashboard UI
- FastAPI backend with REST endpoints
- PostgreSQL integration for storing screening sessions
- Docker + CI/CD pipeline
- Live public demo deployment
- Bias detection in candidate evaluation
Yusuf Abdirashid — AI Full Stack Developer
Building polished AI-powered tools for hiring and job applications.


