Job Hunter: An Autonomous RAG Agent That Applies With Evidence
How Job Hunter discovers roles, ranks them against a FAISS-backed career persona, and fills applications with Playwright — under a zero-hallucination policy that only synthesises from uploaded CV, portfolio, and project exports.
The job market as an information asymmetry
Most "auto-apply" tools are scrapers with a mail-merge. They spray generic answers, burn reputation, and teach platforms to distrust automation. Job Hunter is built on the opposite premise: every claim in an application must be retrievable from the candidate's own artefacts.
That constraint turns the product into a RAG system with a browser body — not a chatbot with a form filler bolted on.
The intelligence engine
Documents are chunked with recursive character splitting (~500 tokens) and indexed into FAISS. When an application asks about ETL experience, the brain retrieves the most relevant segments of real history and only then drafts an answer.
This is the same production RAG discipline as hybrid retrieval elsewhere in the portfolio: recall first, then constrain generation to evidence. The zero-hallucination policy is enforced by architecture, not by a prompt admonition.
Autonomous workflow stages
| Stage | Component | Output |
|---|---|---|
| Discovery | Board scrapers (Greenhouse / Lever / Workday, etc.) | Job pool |
| Ranking | LLM suitability scorer | 0–100 score + discard below threshold |
| Retrieval | FAISS persona index | Grounded context chunks |
| Application | Playwright agent | Filled form + screenshots / JSONL log |
| Learning | Prompt/context/response capture | Fine-tuning dataset seed |
Why ranking before applying matters
An unconstrained apply loop maximises volume and destroys signal. Job Hunter scores each description against the persona and only queues roles above a configurable threshold (the README example uses a minimum score of 50 on a 0–100 scale).
That gate is product strategy disguised as ML: the scarce resource is not compute — it is the credibility of the applications that do get sent.
Schematic funnel after suitability gating
Invented proportions to show the intended shape: most discovered roles never reach the browser agent. Tune the threshold; do not remove it.
Source — Illustrative schematic — not live Job Hunter telemetry
Playwright as a tool, not a brain
The application agent uses Playwright for navigation and field detection, then maps inputs — text, select, radio — onto candidate data and RAG-grounded answers. Tricky preference questions fall back to configured policy rather than improvisation.
Failures are first-class: captchas, validation errors, and screenshots land in a persistent log so a human can audit what the agent did instead of guessing from an empty confirmation page.
Mission Control is not vanity UI. A live suitability chart and RAG answer simulator are how you debug an agent before it spends your reputation on a live portal.
Self-learning without self-mythology
Every answered form question can append prompt, retrieved context, and response to a fine-tuning dataset. That is useful only if the upstream retrieval stays honest — otherwise you fine-tune the model to imitate its own hallucinations.
The durable asset is the grounded application log, not the claim of autonomy. Autonomy is the loop; evidence is the product.