AI-powered job search platform — University Project (Metode de Dezvoltare Software, Univ. of Bucharest)
Job Hunt Duo uses two AI agents to automate and personalise the job search:
| Agent | Model | Role |
|---|---|---|
| Agent 1 – Job Finder Bot | qwen2.5-1.5b-instruct via LMStudio |
Searches Adzuna, RemoteOK, Arbeitnow & HN Who's Hiring, scores each listing against your CV (Epic 4) |
| Agent 2 – CV Tailor Bot | llama-3.2-3b-instruct via LMStudio |
Rewrites your CV for a specific job and generates cover letters (Epic 5) |
| Layer | Technology |
|---|---|
| Backend | Django 4.2 + Django REST Framework |
| Auth | JWT (djangorestframework-simplejwt) |
| Database | SQLite (dev) / PostgreSQL 15 (Docker/prod) |
| Frontend | React 18 + React Router v7 |
| Styling | Tailwind CSS + shadcn/ui |
| AI Agents | LMStudio (OpenAI-compatible local API) |
| Containerisation | Docker + Docker Compose |
| CI | GitHub Actions (see .github/workflows/ci.yml) |
- Python 3.11+
- Node.js 20+
- LMStudio running on
localhost:1234with both models loaded
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver 0.0.0.0:8001cd frontend
yarn install
yarn start # runs on localhost:3000cp docker/.env.example docker/.env
# Fill in POSTGRES_PASSWORD and SECRET_KEY
docker compose -f docker/docker-compose.yml up --build| Variable | Default | Description |
|---|---|---|
SECRET_KEY |
(insecure dev key) | Django secret key — change in production |
DATABASE_URL |
SQLite | PostgreSQL URL for Docker/prod |
DEBUG |
True |
Set to False in production |
LMSTUDIO_BASE_URL |
http://localhost:1234/v1 |
LMStudio local API base URL |
JOB_FINDER_MODEL |
qwen2.5-1.5b-instruct |
Model used by Agent 1 |
CV_TAILOR_MODEL |
llama-3.2-3b-instruct |
Model used by Agent 2 |
All routes are prefixed with /api.
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/register/ |
US-01 Register account |
POST |
/api/auth/login/ |
US-02 Login (returns JWT) |
POST |
/api/auth/refresh/ |
Refresh access token |
GET |
/api/auth/me/ |
Get current user |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/cv/upload/ |
US-03 Upload PDF, auto-parse |
GET |
/api/cv/profile/ |
Get parsed CV data |
PATCH |
/api/cv/profile/update/ |
US-04 Edit CV fields |
| Method | Endpoint | Description |
|---|---|---|
GET/PUT |
/api/preferences/ |
US-05 Job preferences |
GET |
/api/preferences/sources/ |
US-06 List job sources |
PATCH |
/api/preferences/sources/<source>/toggle/ |
Toggle source on/off |
job-hunt-duo/
├── backend/
│ ├── server.py # ASGI entry point (Django via uvicorn)
│ ├── manage.py
│ ├── jobhunt/ # Django project config
│ │ ├── settings.py
│ │ └── urls.py
│ ├── apps/
│ │ ├── users/ # Epic 1 – Auth
│ │ ├── cv/ # Epic 2 – CV Upload & Parsing
│ │ └── preferences/ # Epic 3 – Preferences & Sources
│ ├── agents/
│ │ ├── lmstudio_client.py # Shared LMStudio HTTP client
│ │ ├── job_finder_stub.py # Agent 1 stub (Epic 4)
│ │ └── cv_tailor_stub.py # Agent 2 stub (Epic 5)
│ └── tests/
│ └── test_api.py # pytest test suite (15 tests, all passing)
├── frontend/
│ └── src/
│ ├── pages/ # Auth, Dashboard, CV, Preferences
│ ├── components/ # Sidebar, TopBar, layout
│ ├── context/ # AuthContext (JWT management)
│ └── services/ # Axios API client
├── docker/
│ ├── docker-compose.yml
│ ├── Dockerfile.backend
│ ├── Dockerfile.frontend
│ └── .env.example
├── README.md
└── AI_REPORT.md
cd backend && pytest tests/ -vcd frontend && yarn testFull backlog: job_hunt_duo_backlog_v2.html
Implemented (Sprint 1):
- US-01 User registration
- US-02 User login (JWT)
- US-03 CV PDF upload + auto-parsing
- US-04 Edit extracted CV data
- US-05 Job preferences (title, location, work type, seniority)
- US-06 Job source configuration (Adzuna, RemoteOK, Arbeitnow, HN)
Upcoming:
- US-07–09 Agent 1: Job Finder Bot (Epic 4)
- US-10–12 Agent 2: CV Tailor Bot (Epic 5)
- US-13–15 Email digest, tracking, mobile UX (Epic 6)
TODO (required for submission): Create in draw.io and link below.
- Component Architecture Diagram (Docker services)
- UML Use Case Diagram (Job Seeker actor)
- AI Agent Flow Diagram (Agent 1 + Agent 2)
See AI_REPORT.md
University project — University of Bucharest, 2025.