Open-source · self-hosted · June 2026
Autonomous Job-Application Agent
An autonomous, always-on re-architecture of my self-hosted job agent (bring-your-own-keys, MIT, open source). On a daily schedule it scans company ATS feeds, scores each role against a structured profile, then auto-selects the best matches and auto-generates a tailored résumé and cover letter for each, emailing a digest. A deliberate human-in-the-loop final step never submits an application.
$0 / mo
Hosting cost
90+ tests
Test suite
Daily
Run cadence
What it does
- Re-architected the agent into an autonomous, always-on system: on a daily schedule it scans ATS feeds, LLM-scores each role against a structured profile, then auto-selects the best matches and auto-generates a tailored résumé and cover letter for each, emailing a digest. The human-in-the-loop final step only records an application and opens the posting; it never submits (a deliberate account-ban and safety decision).
- Designed an autonomy release valve and triage queue: anything the agent cannot finish (an LLM quota or API error, or a posting behind a manual portal like Workday, Taleo, or iCIMS) is flagged with a reason and a Retry / Apply / Dismiss action, so nothing is ever silently dropped.
- Built a no-build-step FastAPI and Jinja monitoring console (HTTP Basic auth): today's stats, a ready-to-apply queue, the triage queue, run history, a live next-run countdown, an editable application tracker (CSV import, active-count, auto-ghosting of stale 'Applied' rows), and Chart.js insights on agent activity.
- Engineered a resilient LLM layer (Claude primary, Gemini fallback, exponential-backoff retry, provider-named errors) behind a single chat() entry point; an anti-fabrication guard drops any generated fact or link absent from the single source-of-truth profile.
- Implemented template-faithful document generation that fills the candidate's real .docx (fonts, margins, two-column layout, clickable links) to a full page, projects ordered most-recent-first.
- Shipped always-on-for-$0 deployment: an Oracle Cloud Always Free VM with systemd, Caddy auto-HTTPS, and DuckDNS, on a uv-managed Python venv. Secrets and personal data are delivered via scp, never committed to the public repo. Config-driven, with a hermetic 90+ test pytest suite in CI.