Skip to main content
Thanuka.
Back to Articles
AI EngineeringThanuka9/Job-Hunter

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.

Thanuka EllepolaAugust 10, 20267 min read

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.

FAISS
Retrieval store
CV · portfolio · GitHub exports
Playwright
Browser agent
Dynamic DOM form filling
0–100
Rank threshold
Suitability gate before apply
Streamlit
Dashboard
Mission control + RAG simulator

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

StageComponentOutput
DiscoveryBoard scrapers (Greenhouse / Lever / Workday, etc.)Job pool
RankingLLM suitability scorer0–100 score + discard below threshold
RetrievalFAISS persona indexGrounded context chunks
ApplicationPlaywright agentFilled form + screenshots / JSONL log
LearningPrompt/context/response captureFine-tuning dataset seed
Public README workflow. Ranking before browser automation is what keeps the agent from wasting cycles on poor-fit roles.

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

Illustrative

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.