diff --git a/README.md b/README.md index 98a1568..04b2dbe 100644 --- a/README.md +++ b/README.md @@ -3,19 +3,39 @@ 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 + +### 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 @@ -28,64 +48,32 @@ docker compose up -d open http://localhost:3005 ``` +### Required accounts + +- Create required accounts (so onboarding is smooth) +- 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