Stop hunting. Start matching.
Headless Hunter is a terminal-first, autonomous agent that cuts through the noise of modern job boards. It doesn't just search; it scouts, scrapes, and analyzes with a cynical eye to find only the roles that actually fit your profile.
headless-hunter-demo.mp4
- Aggregator Hell: Skip the "Ghost Jobs" and sponsored clutter of job boards.
- Deep Intelligence: Scrapes past the "Show More" buttons to analyze the full job description.
- Privacy First: Run the entire reasoning engine locally with Ollama. No data leaks.
- Cynical Analysis: The agent is trained to be skeptical, filtering out roles that don't match your technical depth.
- Self-Healing Types: Built with Zod schema validation and an auto-recovery agent. If the LLM generates invalid JSON, the Recovery Agent steps in to fix it on the fly.
- Env:
nix develop - Config: Copy
.env-exampleto.envand add API keys. - Input: Drop your
resume.md(or.pdf/.txt) in the root. - Run:
bun start
flowchart LR
User([Resume + Prompt]) --> Profiler
Profiler --> Scout
Scout --> Deep{Deep Dive?}
Deep -- Yes --> Researcher
Deep -- No --> Hunter
Researcher --> More{More Targets?}
More -- Yes --> Researcher
More -- No --> Hunter
Hunter --> Report([Final Report])
Profiler -. Error .-> Recovery([Recovery Agent])
Recovery -. Fixed .-> Profiler
Hunter -. Error .-> Recovery
Recovery -. Fixed .-> Hunter
%% Soft Professional Palette
style Profiler fill:#e1f5fe,stroke:#0277bd,stroke-width:2px,color:#000
style Scout fill:#fff9c4,stroke:#fbc02d,stroke-width:2px,color:#000
style Researcher fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#000
style Hunter fill:#ffccbc,stroke:#bf360c,stroke-width:2px,color:#000
style Recovery fill:#ffebee,stroke:#c62828,stroke-width:2px,stroke-dasharray: 5 5,color:#000
style Deep fill:#ffffff,stroke:#333,stroke-width:2px,color:#000
style More fill:#ffffff,stroke:#333,stroke-width:2px,color:#000
- Profiler (Strategist): Analyzes your resume and prompt to define the perfect "Hunter Profile" (keywords, seniority, vibe).
- Scout (Lead Sourcer): Sweeps global job indices (Tavily) to find high-potential search targets.
- Researcher (Deep Investigator): Visits every target URL, bypassing basic scrapers to extract the real page content.
- Hunter (Synthesis Agent): The cynical closer. It reviews the raw data, cross-references your resume, and writes the final report, filtering out fluff.
- Recovery: Automatic self-healing layer for LLM JSON errors.
| Var | Description |
|---|---|
LLM_PROVIDER |
Default provider (local or google). |
LLM_PROVIDER_{ROLE} |
Override specific node (e.g. LLM_PROVIDER_SCOUT). |
GOOGLE_API_KEY |
Required for Google provider. |
TAVILY_API_KEY |
Required for Production Search. |
- Lint/Format:
bun run lint/bun run format - Test:
bun test(Switches to Free Mode: DDG + Local Scraper).
Copyright (c) 2025-2026 Alexandr Timchenko
This project is open-source under the GNU AGPLv3 license.
- For Open Source / Personal Use: You are free to use, modify, and distribute this software, as long as your modifications are also open-source.
- For Commercial / Proprietary Use: If you want to use this code in a closed-source product (SaaS, proprietary backend, etc.) without sharing your changes, you must obtain a Commercial License.
Contact for Commercial Licensing: Please open a GitHub Issue with the label 'Commercial Inquiry'.