You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An intelligent web application that automatically matches candidates with suitable job opportunities using Natural Language Processing and semantic similarity algorithms. Features real-time job discovery, a Python NLP microservice, and a professional SaaS-style dashboard.
Features
π Resume Upload & Parsing β Upload PDF/DOCX resumes; AI extracts skills, experience, education, and certifications
π§ NLP Skill Extraction β Tokenisation, stop-word removal, named entity recognition (spaCy), and keyword extraction
π― Semantic Job Matching β Cosine similarity scoring with sentence-transformers for deep semantic understanding
π Real-Time Job Discovery β When no DB jobs match, automatically scrapes RemoteOK and other sources
π Skill Gap Analysis β Visual breakdown of matched vs missing skills with learning suggestions
πΌ Job Recommendations β Ranked job listings based on resume match score
π’ Recruiter Dashboard β Post jobs, browse candidates, compare match scores
cd backend
cp .env.example .env # edit MONGO_URI and JWT_SECRET
npm install
npm start # production
npm run dev # development (nodemon)
npm test# run 28 unit tests
Python NLP Service (optional)
cd nlp-service
pip install -r requirements.txt
python -m spacy download en_core_web_sm
python app.py # starts on port 8000
Frontend
cd frontend
npm install
npm start # development server (port 3000)
npm run build # production build
API Endpoints
Authentication
Method
Path
Description
POST
/api/auth/register
Register user
POST
/api/auth/login
Login β returns JWT token
GET
/api/auth/profile
Get current user profile
Resume
Method
Path
Description
POST
/api/resume/upload
Upload and parse PDF/DOCX resume
GET
/api/resume/me
Get own parsed resume
Jobs
Method
Path
Description
GET
/api/jobs
List all active jobs
POST
/api/jobs
Create job posting (recruiter)
POST
/api/jobs/match
Compute match scores vs all jobs
GET
/api/jobs/recommendations
Ranked recommendations (auto-discovers if empty)
POST
/api/jobs/scrape
Trigger real-time job discovery from web
GET
/api/jobs/scraped
List all discovered jobs (with search/filter)
Candidate
Method
Path
Description
GET
/api/candidate/profile
Dashboard data
GET
/api/candidate/skill-gap/:jobId
Skill gap analysis for a specific job
GET
/api/candidate/recruiter/candidates
All candidates (recruiter only)
Job Discovery Pipeline
Resume Upload
β
NLP Parsing (skills, experience, education)
β
Search DB Jobs (MongoDB)
β
IF jobs exist β semantic matching β return ranked results
β
IF no jobs β trigger web scraping (RemoteOK API)
β
Store scraped jobs in MongoDB (ScrapedJob collection)
β
Run semantic matching
β
Return ranked results
NLP Architecture
Node.js NLP Processor
Tokenisation β Lowercase, strip punctuation, split into tokens
Stop-word removal β Filter 80+ common English stop words
Skill extraction β Match against 150+ technical skills (multi-word aware)
Section parsing β Heuristic detection for Experience, Education, Certifications, Projects
The AI Resume and Job Matching System using NLP analyzes resumes and job descriptions to identify relevant skills and qualifications. Using semantic analysis, it matches candidates with suitable jobs and suggests improvements or missing skills, making recruitment faster, smarter, and more accurate for recruiters and job seekers.