An intelligent job recommendation system that analyzes a candidate's CV and automatically discovers, matches, and ranks relevant job opportunities from MyJobMag Kenya.
# AI-Powered-Job-Recommender---LangGraph-Project
An intelligent job recommendation system that analyzes a candidate's CV and automatically discovers, matches, and ranks relevant job opportunities from MyJobMag Kenya. Built with LangGraph for workflow orchestration, AI for intelligent analysis, and Playwright for real-time web scraping.
# Features
-Automated CV Parsing: Extract skills, roles, and experience from PDF resumes
-Real-time Job Scraping: Dynamic scraping from MyJobMag Kenya using Playwright
-Multi-factor Matching: Intelligent scoring algorithm (60% skills + 30% role + 10% semantic)
-AI Quality Control: LLM-powered verification to filter false positives
-Gradio-based web interface
-Smart Insights: Skill gap analysis and match explanations
# Architecture
The system uses LangGraph to orchestrate a 6-node workflow:
_START → Parse CV → Scrape Jobs → Match Jobs → Filter → Quality Control → Summaries → END_
# Workflow Nodes
1. **Parse CV**
**Purpose**: Extract structured information from unstructured CV text
**Process**: Uses LLM to identify skills, roles, experience, education, and location
**Output**: Structured candidate profile
2. **Scrape Jobs**
**Purpose:** Discover relevant job listings from MyJobMag Kenya
**Process:**
-Builds search queries from CV profile (roles + technical skills)
-Uses Playwright for headless browser scraping
-Visits job detail pages for full descriptions
-Extracts required skills using LLM
**Output:** List of 30-50 job postings with metadata
3. **Match Jobs**
**Purpose**: Score each job against candidate profile
**Algorithm**:
Total Score = Skill Score (60%) + Role Score (30%) + Semantic Score (10%)
**Output:** Ranked jobs with scores, reasons, skill overlaps, and gaps
4. **Rank & Filter**
**Purpose:** Apply dynamic thresholds and diversify results
**Process:**
Dynamic Threshold Strategy:
-High scores (≥0.5) → threshold = 0.15
-Moderate (≥0.3) → threshold = 0.12
-Low scores → threshold = 0.05
**Ou …