TalentMatch AI - Resume Parser
Spacy + Claude + Vector Search
Developed intelligent recruitment tool using NLP and LLMs for resume parsing and job matching. System parses multi-format resumes (PDF, DOCX, HTML) via PyPDF2 and python-docx, extracts skills using fine-tuned Spacy NER model + Claude API for nuanced understanding, matches candidates to jobs via vector similarity (pgvector), provides explainable ranking showing match reasons. Implements bias detection in job descriptions via LLM analysis. FastAPI backend with async processing, React frontend with real-time parsing via WebSocket.
The Challenge
Manual resume screening time-consuming and inconsistent. Keyword matching misses semantic equivalence ("built scalable systems" = "distributed systems expertise"). Multiple resume formats (PDF, DOCX, HTML) complicate parsing. Need skill extraction understanding context, not just keywords. Job matching requires explainability for hiring decisions.
The Solution
Built multi-stage NLP pipeline: document parsing (PyPDF2, python-docx) → Spacy NER for skill extraction → Claude API for nuanced understanding → vector embeddings for semantic matching. Fine-tuned Spacy NER model on tech resumes dataset. pgvector for similarity search. LLM-based bias detection in job descriptions. Explainability layer showing match reasoning.
Technology Stack
Architecture
- Multi-stage pipeline: parse → extract → normalize → match → explain
- Document parsing: PyPDF2 (PDF), python-docx (DOCX), BeautifulSoup (HTML)
- Fine-tuned Spacy NER model on tech resumes corpus
- Claude API for nuanced skill extraction and experience understanding
- pgvector for semantic job matching via cosine similarity
- Skill taxonomy normalization with synonym mapping
- Celery + RabbitMQ async task queue for batch processing
- Redis caching for parsed resumes and embeddings
- FastAPI async endpoints with WebSocket support
- Docker Compose deployment: FastAPI + PostgreSQL + Redis + RabbitMQ
Key Features
Results & Impact
- Multi-format resume parsing: PDF, DOCX, HTML, TXT via PyPDF2 + python-docx
- Achieved 95% skill extraction accuracy with fine-tuned Spacy NER model
- Semantic job matching with 88% relevance via pgvector similarity
- Claude API extracts nuanced experience ("led team of 5" → leadership skill)
- Bias detection identifies problematic language in job descriptions
- Explainable ranking: shows why candidate matched (skill overlap, experience)
- FastAPI async backend with Celery for batch processing
- Real-time parsing via WebSocket with <2s response time