Top-level overview of the JobPilot automated job-hunt pipeline. Scrapes ~12 job sources (native + Apify), scores postings against your resume, writes a styled XLSX report, tailors resumes for top matches, and pushes a Telegram/Discord digest on a schedule. Optionally driven headless by a local control service + web UI.
$npx -y skills add ashlesh-t/jobpilot --skill jobpilotInstalls into the current project.
Run `npx skills use "https://github.com/ashlesh-t/jobpilot" --skill "ashlesh-t/jobpilot"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.
Use the skills in "https://github.com/ashlesh-t/jobpilot" that are relevant to the current task. Run `npx skills add "https://github.com/ashlesh-t/jobpilot"` and select the relevant skills, then follow their instructions.
| 1 | # JobPilot |
| 2 | |
| 3 | [](LICENSE) |
| 4 | |
| 5 | Automated, personal job-hunting pipeline for Claude Code. |
| 6 | |
| 7 | ## 1. What it does |
| 8 | |
| 9 | JobPilot scrapes roughly a dozen job sources (LinkedIn, Indeed, Glassdoor, Google Jobs, Naukri, |
| 10 | Internshala, Wellfound, plus Hacker News "Who is hiring", YC, and Telegram job channels) |
| 11 | through Apify and free native scrapers, then scores every posting against your resume. The |
| 12 | strongest matches get a tailored resume and land in a dated, styled **XLSX** report. A digest |
| 13 | of the top picks — with the report and resumes attached — is pushed to Telegram (or Discord) |
| 14 | automatically on whatever schedule you set. You can drive it from a chat, or run it headless |
| 15 | on a schedule via the local control service (§5a). |
| 16 | |
| 17 | ## 2. Prerequisites |
| 18 | |
| 19 | - **Claude Desktop Pro** (the scheduled task runs under your Pro subscription). |
| 20 | - **Apify account** — free tier is fine (~$5 credit/month). |
| 21 | - **Telegram bot** — create one with [@BotFather](https://t.me/BotFather) and grab your chat ID. |
| 22 | - **Python 3.11+**. |
| 23 | - **tectonic** (optional) — only needed to compile LaTeX resumes to PDF. |
| 24 | |
| 25 | > **New here?** Follow [GETTING_STARTED.md](GETTING_STARTED.md) for a full step-by-step walkthrough — how to get your Apify token, create a Telegram bot, find your chat ID, fill in `.env`, and verify each piece before scheduling. |
| 26 | |
| 27 | ## 3. Install |
| 28 | |
| 29 | JobPilot is two pieces: the **Claude Code skills** (`/job-search`, `/job-setup`, …) and a |
| 30 | **Python backend** (pipeline scripts + optional web UI). Pick the path that fits — all are |
| 31 | cross-platform (Linux / macOS / Windows). |
| 32 | |
| 33 | **a. Claude Code plugin (recommended for the skills)** |
| 34 | ``` |
| 35 | /plugin marketplace add ashlesh-t/jobpilot |
| 36 | /plugin install jobpilot@jobpilot |
| 37 | ``` |
| 38 | This registers the skills in Claude Code on any OS. Then install the Python backend once with |
| 39 | either (b) or (c) below so the scripts have their dependencies. |
| 40 | |
| 41 | **b. pipx — the backend + web UI, one command on every OS** |
| 42 | ```bash |
| 43 | pipx install jobpilot-ai # or: pip install jobpilot-ai — installs the pipeline + web UI |
| 44 | jobpilot setup # configure data dir + secrets (cross-platform) |
| 45 | jobpilot serve # optional local web UI → http://127.0.0.1:8787 |
| 46 | ``` |
| 47 | macOS: `brew install ashlesh-t/tap/jobpilot` · Windows: `scoop bucket add ashlesh-t |
| 48 | https://github.com/ashlesh-t/scoop-bucket && scoop install jobpilot` · Arch (AUR): pending — |
| 49 | new AUR account registrations are temporarily disabled ([details](https://itsfoss.com/news/arch-linux-aur-malware-flood/)); the `PKGBUILD` is ready in `packaging/aur/` and |
| 50 | will be pushed once registration reopens. All are thin wrappers over the same PyPI package |
| 51 | (see `packaging/`). |
| 52 | |
| 53 | **c. From source (contributors)** |
| 54 | ```bash |
| 55 | git clone https://github.com/ashlesh-t/jobpilot ~/projects/jobpilot |
| 56 | cd ~/projects/jobpilot |
| 57 | ./setup.sh # Linux/macOS |
| 58 | python scripts/jobpilot_setup.py # Windows (or any OS — identical, no bash needed) |
| 59 | ``` |
| 60 | |
| 61 | ## 4. One-time setup |
| 62 | |
| 63 | **a. Configure JobPilot** — `jobpilot setup` (or `./setup.sh` / `python scripts/jobpilot_setup.py`) |
| 64 | creates `~/.claude/job-hunt-ai/`, initialises the SQLite cache (via Python's stdlib, so no |
| 65 | `sqlite3` CLI is needed on Windows), and runs an interactive wizard that collects your Apify |
| 66 | token, Telegram bot token, and chat ID (validates each live before saving). |
| 67 | |
| 68 | **b. Connect Google Drive** in Claude Desktop → Settings → Connections. |
| 69 | |
| 70 | **c. Create a folder** named `jobpilot-resume` in your Google Drive and upload your resume |
| 71 | as a PDF file into it. |
| 72 | |
| 73 | **d. Run `/job-setup`** in Claude Desktop. It checks that secrets and Google Drive are ready, |
| 74 | lets you pick your resume PDF from the Drive folder (shows a numbered list if there are |
| 75 | several), downloads and parses it, then asks for your job preferences (locations, CTC floor, |
| 76 | role types, experience, degree, optional tech stack). |
| 77 | |
| 78 | Everything personal — secrets, preferences, cached resume, reports — lives in |
| 79 | `~/.claude/job-hunt-ai/`, never in the repo. The resume source of truth stays in Google Drive. |
| 80 | |
| 81 | ## 5. Daily use |
| 82 | |
| 83 | Once the scheduled task is set up, you do nothing. It fires on your cadence, runs the full |
| 84 | pipeline, and pushes results to your notify channel. Just check Telegram (or Discord) for the |
| 85 | digest, the attached XLSX report, and any tailored resumes. |
| 86 | |
| 87 | ### 5a. Local control service + UI (optional) |
| 88 | |
| 89 | Instead of a chat, you can run JobPilot as a small local web app that schedules runs, lets |
| 90 | you pick an execution engine, wires up Discord/Telegram in the browser, and shows a **live, |
| 91 | harness-style view** of each run (stages lighting up, per-source counts, the final digest). |
| 92 | |
| 93 | ```bash |
| 94 | pip install -r requirements-server.txt # fastapi/uvicorn/apscheduler/… (separate from core) |
| 95 | python -m server # → http://127.0.0.1:8787 |
| 96 | ``` |
| 97 | |
| 98 | - **Engine choice (Setup tab).** *Claude Code* runs the pipeline under your Pro/Max |
| 99 | subscription (no per-token cost, needs the `claude` CLI logged in). *Anthropic API* runs it |
| 100 | metered via t |