Job hunting means reading hundreds of listings against your own CV. The agent searches allowlisted job boards, scores each listing in code and backs every claim with a verbatim quote — it never applies or messages anyone.
A self-hosted web app with a background worker. Upload a CV, mark which profile answers are verified, and ask the agent to find roles in India and the Middle East. It searches allowlisted public job sources, saves matches, and runs a match analysis that quotes your CV for every point.
Phases 1–3 of a 12-phase roadmap are complete. Applying, tailored CVs and outreach are later phases and are not built.
The problem
Matching a CV to job listings is slow, and AI tools that “auto-apply” are a liability: they invent experience and act on your behalf without asking.
The approach
Keep the agent’s power deliberately small — read, search allowlisted sources, save, analyse — and make every output checkable: quotes are verified word for word, scores are computed by code, and every step is logged.
What it includes
- Encrypted CV uploadPDF/DOCX with text extraction and suggested contact details.
- Verified answersOnly answers you marked verified are ever reused.
- “Find jobs for me”Greenhouse, Lever, Ashby, Remotive and optional JSearch; deny-by-default source registry.
- Match analysis with quotesEvery claim cites your CV; quotes are checked verbatim, the score is calculated in code.
- Agent chatPaste a job; the agent saves it and explains the fit, showing each step.
- Activity timelineDurable tasks with leases, retries, cancellation and a per-step log.
- Per-user isolation & health checksBetter Auth sessions; Docker, database and model health page.
- Apply & fill formsPlannedBrowser-agent interfaces only.
- Tailored CV, cover letters & outreachPlannedRoadmap phases 7–12.
Role
- Sole developer: architecture, agent loop, tool policy, worker, UI, tests and CI.
How it is put together
- Next.js web appChat, jobs, CVs, activity
- Task queuePostgreSQL + Redis
- Agent loopTool calling, limits, budget
- Tool executorSide-effect policy per tool
- Model adapterOllama (local) or Anthropic
- Side-effect-aware tool policy
- Deny-by-default job sources
- Verbatim quote verification
- Budget & step limits
Simplified. The worker runs the same loop for background tasks.
Agent profile
- Objective
- Find relevant roles and explain, with evidence, how well your CV fits each one.
- Input
- A chat message on the Agent page, or a background job (search, analysis, CV processing) picked up by the worker from a queue.
- Reasoning
- A hand-written loop over native tool calling (Anthropic tool_use / Ollama tool_calls). It stops on a step limit, a deadline, an exhausted budget, a refusal or cancellation.
- Tools
- get_my_profile, get_my_verified_answers, get_primary_cv_text, save_job_posting, list_saved_jobs, analyze_job_match
- Execution
- Tasks are durable: leased, reconciled, retried and cancellable, with every step recorded and shown on the Activity page. Analysis output is validated — quotes must match the source text exactly.
- Safety
- Each tool declares its side effect (none, internal write, external read, external write, irreversible); the executor uses that to decide when a policy check or approval is required. No AI call runs without consent, a key and budget. It never logs in, scrapes behind sign-in, or submits anything.
- Models
- Local first: Ollama with qwen3:4b-instruct on your own machine, so the CV never leaves it. Anthropic is an opt-in paid alternative with a monthly budget cap.
Screens


