JobHunter
AI-powered job application pipeline in Rust — scrapes 141+ boards, scores jobs, researches companies, generates outreach emails via LLM, and sends them at $0 LLM cost.
Overview
JobHunter is an AI-powered job application pipeline written in Rust (~700 lines). It scrapes 141+ job boards, scores jobs by match quality, researches companies, generates personalized outreach emails via free-tier LLM providers, and sends them — all at $0 LLM cost.
Two binaries ship in one tarball: the Rust core orchestrates the pipeline, and a thin Go bridge connects to scrappy for the actual scraping.
Architecture
jobhunter (Rust binary)
├── spawns → scraper (Go bridge)
│ └── scrappy (141 sites, email extraction, MX verify)
├── LLM router (9 free providers, weighted random + failover)
├── SMTP sender (Gmail STARTTLS, rate-limited)
├── Tracking server (open/click pixels)
└── Telegram alerts (per-run reports)
Pipeline
- Scrape — 141 boards → title filter → email filter → SQL dedup → email queue
- Score — Unscored jobs ranked 1-10 via LLM
- Research — 3 talking points per company generated via LLM
- Send — Personalized emails sent via SMTP with rate limiting
- Track — Open/click tracking via 1x1 pixel and redirects
Key Features
$0 LLM Cost
Routes requests across 9 free-tier LLM providers with weighted random selection and automatic failover. No API keys needed for the core pipeline.
141+ Job Boards
Scrapes via scrappy's guest API — no Playwright or browser automation needed.
Smart Email Pipeline
Rate-limited SMTP sending with daily quota tracking, signature with GitHub/Portfolio/Resume links, and recruiter reply triage (positive/negative/neutral).
Tracking Dashboard
Built-in HTTP tracking server with open/click pixel tracking and a Vercel-deployed pipeline dashboard.
Tech Stack
- Core: Rust
- Scraper bridge: Go
- Scraping engine: scrappy (Go library, 141 sites)
- Pipeline dashboard: TypeScript, Vercel
- Database: SQLite (via Rust)