A portfolio-grade job recommendation system that uses NLP/ML to match your resume to job postings with explainable recommendations.
- Resume Parsing: Upload your resume (PDF/TXT) and extract skills automatically
- Semantic Matching: Uses sentence-transformers to find jobs that match your experience
- Hybrid Scoring: Combines embedding similarity, skill overlap, location, salary, and recency
- Explainable Recommendations: See why each job was recommended
- Modern React UI: Fast, responsive interface with real-time updates
- Local-first: Runs entirely on your machine with persistent data
| Component | Technology |
|---|---|
| Backend | FastAPI (Python 3.11+) |
| Frontend | React 19 + TypeScript + Vite |
| NLP Model | all-MiniLM-L6-v2 (sentence-transformers) |
| Vector DB | ChromaDB |
| Metadata DB | SQLite |
| Data Source | Adzuna API |
| Resume Parsing | pdfplumber |
git clone https://github.com/BillSteinUNB/JobFinder.git
cd JobFinder
python scripts/setup_local.py- Create Python environment:
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt- Install frontend:
cd jobhunt && npm install && cd ..- Configure environment - create .env:
ADZUNA_APP_ID=your_app_id
ADZUNA_APP_KEY=your_app_key
- Collect jobs and build index:
python scripts/collect_all_jobs.py --target 1000
python scripts/build_vector_index.pyTerminal 1 - Backend:
uvicorn api.main:app --reload --port 8000Terminal 2 - Frontend:
cd jobhunt && npm run devOpen: http://localhost:5173
For demos/interviews:
- Install ngrok from https://ngrok.com/download
- Start backend: uvicorn api.main:app --reload --port 8000
- Expose backend: ngrok http 8000
- Update jobhunt/.env.local with ngrok URL
- Restart frontend
MIT