← Case Studies

Agentic Workflow · Open Source

Job Application Agent

An autonomous agent that searches job boards, scores each listing against a candidate profile using a local LLM, and submits applications through ATS portals. No API key required.

What it does

Job hunting at scale is repetitive and time-consuming. This agent automates the mechanical parts: finding listings, filtering noise, tailoring application materials, and submitting forms, while keeping a human in the loop for edge cases and borderline fits.

The core design is a configurable threshold gate. The agent applies automatically above a high-confidence score, flags listings for manual review in the middle band, and silently skips poor fits. Nothing gets submitted without clearing the bar.

Four-stage pipeline

1. Search

Scrapes configured job boards (Indeed, Glassdoor, and others) using JobSpy. Each listing ID is stored in a local SQLite database so no listing is ever processed twice. Listings matching any excluded keyword are dropped before analysis.

2. Analyse

Each new listing is sent to a locally running Ollama model alongside the candidate's master resume. The model returns a fit score (0-100), a rationale, identified gaps, rewritten resume bullets, and a tailored cover letter.

3. Gate

Scores below the review threshold are skipped. Scores in the middle band are flagged with the listing URL for manual action. Scores at or above the auto-apply threshold proceed to submission.

4. Apply

Playwright fills and submits application forms on Greenhouse and Lever portals. Unsupported portals (LinkedIn Easy Apply, Workday) are flagged for manual action rather than attempted with fragile heuristics.

Key choices that matter

  • Local LLM via Ollama: no API key, no cost, no data leaving the machine
  • SQLite deduplication: stateful across runs without a database server
  • Threshold gate: automation only where confidence is high; humans handle the rest
  • Portal-specific handlers: explicit support per ATS rather than brittle generic selectors
  • Dry-run mode: search and analyse without submitting any applications

Tools involved

  • Python 3.12
  • uv
  • JobSpy
  • Ollama / Llama 3.2
  • Playwright
  • SQLite
  • Rich