# JobOps — job search orchestration (personal fork)

Self-hosted stack: scrapes job boards, AI-scores fit, tailors resumes (RxResume), tracks application email.

You still apply yourself; the app finds roles, helps match CVs, and keeps status straight.

Docker-based. See [LICENSE](LICENSE) for terms.

<img width="1200" height="600" alt="Product screenshot" src="https://github.com/user-attachments/assets/14fdc392-0e96-43be-bc1f-cf819ab2afc4" />

## Documentation

Full docs live in this repo under `docs-site/`.

```bash
npm install
npm run docs:dev
```

Then open the local URL Docusaurus prints (usually `http://localhost:3000`).

## Quick start

```bash
git clone <your-repo-url>
cd Jobber   # or whatever you named the directory

cp .env.example .env
# Edit .env: model / LLM keys, RXRESUME_*, search settings, etc.

docker compose up -d
```

Dashboard: `http://localhost:3005` (host port from `docker-compose.yml`; app listens on 3001 inside the container).

## Features (summary)

- **Sources**: LinkedIn, Indeed, Glassdoor, Adzuna, Hiring Café, Gradcracker, UK Visa Jobs (and extensible extractors).
- **Scoring**: LLM ranking vs your profile (OpenAI, OpenRouter, OpenAI-compatible, Gemini, etc.).
- **Resumes**: Tailored PDFs via [RxResume v4](https://v4.rxresu.me).
- **Email**: Gmail integration for interview / offer / rejection signals.
- **Data**: SQLite under `./data` when using the default compose setup.

## Deploy, cron, Telegram

See [DEPLOY_GITEA_VM_CRON_TELEGRAM.md](./DEPLOY_GITEA_VM_CRON_TELEGRAM.md) for VM or container deploy, scheduled `POST /api/pipeline/run`, and optional Telegram notifications.

## License

**AGPLv3 + Commons Clause** — self-host, use, and modify; you may not sell the software or offer paid hosting/support whose value substantially comes from this codebase. Details in [LICENSE](LICENSE).
