This commit is contained in:
DaKheera47 2026-02-07 16:07:19 +00:00
commit c1605065fd

103
README.md
View File

@ -3,19 +3,43 @@
AI-powered job discovery and application pipeline. Automatically finds jobs, scores them against your profile, and generates tailored resumes.
## Workflow
1. **Search**: Scrapes Gradcracker, Indeed, LinkedIn, and UK Visa Sponsorship jobs.
2. **Score**: AI ranks jobs by suitability using the configured LLM provider (OpenRouter by default).
3. **Tailor**: Generates a custom resume summary for top-tier matches.
4. **Export**: Uses [RxResume v4](https://v4.rxresu.me) to create tailored PDFs.
5. **Manage**: Review and mark jobs as "Applied" via the dashboard (syncs to Notion).
5. **Manage**: Review and mark jobs as "Applied" via the dashboard (calls webhooks for lifecycle events).
## Example of generating a tailored resume for a job
https://github.com/user-attachments/assets/5b9157a9-13b0-4ec6-9bd2-a39dbc2b11c5
## Example of applying to a Ready job
https://github.com/user-attachments/assets/06e5e782-47f5-42d0-8b28-b89102d7ea1b
## Quick Start
## How to Start
### Prerequisites
- Docker Desktop (or Docker Engine + Docker Compose)
### Overview
- Run the app with Docker (this pulls the pre-built image).
- Create accounts:
- OpenRouter (LLM scoring/tailoring)
- RxResume v4 (PDF export + editable resume data)
- Open the dashboard and complete the onboarding wizard:
- Add API keys/credentials
- Choose a resume template from RxResume
- Run the pipeline to fetch jobs → score → tailor → export PDFs
- Review jobs in the dashboard and mark stages
### Quick Start (commands)
```bash
# 1. Clone and move to directory
git clone https://github.com/DaKheera47/job-ops.git
@ -24,68 +48,35 @@ cd job-ops
# 2. Start with Docker (pulls pre-built image from GHCR)
docker compose up -d
# 3. Open the dashboard, the app will onboard your credentials
open http://localhost:3005
# 3. Open the dashboard in your browser, the app will onboard your credentials
# http://localhost:3005
```
### Required accounts
- OpenRouter (LLM provider)
- Create an account and generate an API key.
- RxResume v4
- Create an account on v4.rxresu.me
- The summary, title, chosen projects, and keywords in the Resume will be tailored for the job description
- Recreate/import your resume there so JobOps can:
- pick a template
- generate tailored PDFs from your stored resume data
### App Onboarding
The app will guide you through setup on first launch. The onboarding wizard helps you:
- Configure the LLM provider (OpenRouter by default) and add an API key if required (for AI scoring/tailoring)
- Add your RxResume credentials (for PDF export via v4.rxresu.me)
- Select a template resume from your v4.rxresu.me account
Note: `OPENROUTER_API_KEY` is deprecated. Existing OpenRouter keys are automatically migrated/copied to `LLM_API_KEY` on upgrade. Other providers are also supported.
## Technical Details
## Structure
- `/orchestrator`: React frontend + Node.js backend & pipeline.
- `/extractors`: Specialized scrapers (Gradcracker, JobSpy, UKVisaJobs).
- `/data`: Persistent storage for SQLite DB and generated PDFs.
Technical breakdowns here: `documentation/extractors/README.md`
Orchestrator docs here: `documentation/orchestrator.md`
## Read-only mode (Basic Auth)
You can make the app read-only for the public by setting a username and password in the **Settings** page.
After this, all write actions (POST/PATCH/DELETE) require Basic Auth; browsing and viewing remain public.
Persistent data lives in `./data` (bind-mounted into the container).
## Public Demo Mode
Set `DEMO_MODE=true` to run an opinionated public demo experience.
- Works: browsing jobs, filtering, stage updates, and local demo DB changes.
- Simulated: pipeline run, summarize/process/rescore/pdf/apply flows, onboarding validation.
- Blocked: settings writes, database clear, backup create/delete, and status bulk-delete.
- Reset policy: demo dataset automatically resets every 6 hours.
Demo responses include request metadata and may include:
- `meta.simulated=true` for simulated actions
- `meta.blockedReason` for blocked actions
## Running (local dev)
Prereqs: Node 20+, Python 3.10+, Playwright browsers (Firefox).
Install Node deps (both packages):
```bash
cd orchestrator && npm install
cd ../extractors/gradcracker && npm install
```
Configure the orchestrator env + DB:
```bash
cd ../orchestrator
cp .env.example .env
npm run db:migrate
npm run dev
```
Dev URLs:
- API: `http://localhost:3001/api`
- UI (Vite): `http://localhost:5173`
- Technical breakdowns here: `documentation/extractors/README.md`
- Orchestrator docs here: `documentation/orchestrator.md`
- Persistent data lives in `./data` (bind-mounted into the container).
## Notes / sharp edges