3.0 KiB
3.0 KiB
Job Ops 🚀
Automated job discovery, scoring, and resume generation pipeline.
Features
- Job Crawler - Discovers jobs from Gradcracker and other sources
- AI Scoring - Ranks jobs by suitability using OpenRouter API
- Resume Generator - Creates tailored PDFs via RXResume automation
- Dashboard UI - React-based interface for reviewing and applying
Quick Start with Docker
1. Configure Environment
# Copy the example env file
cp .env.example .env
# Edit with your credentials
nano .env
Required environment variables:
OPENROUTER_API_KEY- Get from openrouter.ai/keysRXRESUME_EMAIL- Your rxresu.me account emailRXRESUME_PASSWORD- Your RXResume password
2. Add Your Base Resume
Place your resume JSON at resume-generator/base.json.
You can export this from RXResume.
3. Run
# Build and start
docker compose up -d
# View logs
docker compose logs -f
# Stop
docker compose down
4. Access
- Dashboard: http://localhost:3001
- API: http://localhost:3001/api
- Health: http://localhost:3001/health
Data Persistence
All data is stored in the ./data directory:
data/jobs.db- SQLite databasedata/pdfs/- Generated resume PDFs
Development
Without Docker
# Install dependencies
cd orchestrator && npm install
cd ../job-extractor && npm install
# Set up Python environment for resume generator
cd ../resume-generator
python3 -m venv .venv
source .venv/bin/activate
pip install playwright
playwright install chromium
# Run orchestrator (from orchestrator folder)
cd ../orchestrator
cp .env.example .env # Configure your env
npm run db:migrate
npm run dev
Build Docker Image
docker build -t job-ops:latest .
Push to Docker Hub
docker tag job-ops:latest yourusername/job-ops:latest
docker push yourusername/job-ops:latest
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/jobs |
List all jobs |
| GET | /api/jobs/:id |
Get job details |
| PATCH | /api/jobs/:id |
Update job |
| POST | /api/jobs/:id/process |
Generate resume for job |
| POST | /api/jobs/:id/apply |
Mark as applied |
| POST | /api/jobs/:id/reject |
Skip job |
| POST | /api/jobs/process-discovered |
Process all discovered jobs |
| GET | /api/pipeline/status |
Pipeline status |
| POST | /api/pipeline/run |
Trigger pipeline |
| GET | /api/pipeline/progress |
SSE progress stream |
| DELETE | /api/database |
Clear all data |
Architecture
job-ops/
├── orchestrator/ # Node.js backend + React frontend
│ ├── src/server/ # Express API, services, DB
│ └── src/client/ # React dashboard
├── job-extractor/ # Crawlee-based job crawler
├── resume-generator/ # Python Playwright automation
├── data/ # SQLite DB + generated PDFs
├── Dockerfile
└── docker-compose.yml
License
MIT