AI Job Scout and Rate Matcher Deviad's job-hunter repository provides a complete job-search pipeline for the Pi Agent, enabling search, scoring, salary enrichment, and assisted applications via Node.js scripts and Docker services. The tool requires Node.js ≥ 22, uv ≥ 0.4, and a Chromium CDP session, with optional SearXNG, LM Studio, and MCP servers, and it emphasizes local data privacy by keeping all job-search data and credentials on the user's machine. Complete job-search pipeline for Pi Agent https://github.com/earendil-works/pi — search, score, salary enrichment, and assisted applications. | Layer | Requirement | Stage | |---|---|---| | Runtime | Node.js ≥ 22, uv ≥ 0.4 | Install | | Code | npm ci in repo root | Install | | Workspace | $JOBHUNTER HOME default ~/.job-hunter with jobhunter.sqlite , CV.docx , personal-info-cache.json | Init | | Browser | Chromium CDP on 127.0.0.1:9225 Selenium container | Search, Apply | | Search | SearXNG on 127.0.0.1:8888 | Discover | | Vision optional | LM Studio on 127.0.0.1:1234 with Qwen VLM | CAPTCHA, Debug | | MCP optional | Obscura, Apple Mail MCP servers | Browse, Outreach | Host tools docker , sqlite3 , python3 must be installed and on PATH — the doctor jh-doctor diagnoses which are missing but does not install them. git clone https://github.com/Deviad/job-hunter.git && cd job-hunter npm ci node scripts/install.mjs copies skills into ${PI AGENT HOME:-~/.pi/agent}/skills/ node scripts/install.mjs --dry-run preview without writing Re-run is idempotent and never overwrites CV.docx , personal-info-cache.json , or jobhunter.sqlite . node ~/.pi/agent/skills/job-hunter/scripts/jh-init.mjs Before applying, populate ~/.job-hunter/CV.docx and the profile.firstName , profile.lastName , profile.email , and profile.phone fields in ~/.job-hunter/personal-info-cache.json . Application helpers fail closed when required identity fields are absent; the repository contains no maintainer identity defaults. Run the doctor before each search or application session. It distinguishes required failures from optional degraded capabilities. node ~/.pi/agent/skills/job-hunter/scripts/jh-doctor.mjs Start Selenium and SearXNG: js export SEARXNG SECRET="$ node -e "process.stdout.write require 'node:crypto' .randomBytes 32 .toString 'hex' " " docker compose up -d bash scripts/rehearse-compose.sh isolated health-check rehearsal with teardown See docs/prerequisites.md for full host-tool list and docs/security-and-privacy.md for security boundaries. node ~/.pi/agent/skills/job-hunter/scripts/jh-search.mjs --source linkedin --country GB --role "Software Engineer" node ~/.pi/agent/skills/job-hunter/scripts/jh-search.mjs --source indeed --country GB --query "Software Engineer" node ~/.pi/agent/skills/job-hunter/scripts/jh-discover.mjs --locations "United Kingdom" --queries "Software Engineer" Ask Pi to score the saved jobs. The job-match-scorer skill reads the user's CV and workspace profile rather than repository defaults. node ~/.pi/agent/skills/salary-calculator/scripts/enrich-job-salary.mjs --db ~/.job-hunter/jobhunter.sqlite --all-unsalaried Ask Pi to apply to a scored job. The auto-job-application skill uses the user's local CV, cache, and authenticated Chromium session; there is no repository-level submit command. node ~/.pi/agent/skills/job-hunter/scripts/jh-status.mjs node ~/.pi/agent/skills/job-hunter/scripts/jh-backup.mjs git pull && npm ci && node scripts/install.mjs node scripts/install.mjs --uninstall Removes only files recorded in the installation manifest. User data CV.docx , DB, cache is untouched. node ~/.pi/agent/skills/job-hunter/scripts/jh-doctor.mjs full diagnostic Common issues: CDP not reachable : ensure docker compose up -d ran and curl -s http://127.0.0.1:9225/json/version returns JSON. SearXNG 502 : SearXNG needs a few seconds after container start; retry after 5s. better-sqlite3 build failure : ensure python3 and a C compiler Xcode CLT on macOS are installed. MCP "Not connected" : run the repair skill or bash scripts/rehearse-compose.sh to verify transport. - All job-search data, credentials, and browser sessions stay on your machine. - The installer never reads or transmits personal files. - Authenticated browser sessions LinkedIn, Indeed belong to you — this project does not bypass MFA, or site access controls. - See docs/security-and-privacy.md for the full policy. MIT — see LICENSE .