Skip to content

Part 1: Build — The Observable Job Agent

Choose a tag to compare

@jamwithai jamwithai released this 28 Jul 15:25
· 75 commits to main since this release

The Observable Job Agent, Part 1: Build.

A real, observable AI job-matching agent: CV (PDF) in, real job openings out, ranked 0–100 for fit with honest gap explanations — every LLM and tool call traced in Opik from the very first run.

📖 Blog post: https://jamwithai.substack.com/p/build-your-own-job-agent-part-1

What's inside

  • LangGraph agent: fetch_jobsrank_jobs → bounded reformulation loop (max 2)
  • LLM-driven tool use: the model chooses the search arguments, you watch it choose in the trace
  • Multi-source search cascade (JSearch, Adzuna, Remotive, offline cache) — runs with zero API keys
  • Gradio step-wizard UI with streamed progress and per-run cost footer
  • Opik observability: span tree, agent graph, versioned prompts, CV attached to the trace
  • An honest documented baseline (docs/phase1_findings.md, docs/baseline.json)

Get started

git clone --branch part1.0 https://github.com/jamwithai/observable-job-agent
cd observable-job-agent
uv sync --all-groups
cp .env.example .env
make test   # 35 tests, no network needed
make app    # then upload a CV from data/fixture_cvs/