Open-source · self-hosted · BYOK · June 2026
Autonomous Job-Application Agent
A self-hosted, bring-your-own-keys job-application agent (MIT, open source) that I built end-to-end and then re-architected into an autonomous, always-on system. It began as a CLI + Telegram tool that ingests live roles from company ATS feeds (Greenhouse / Lever / Ashby public JSON), LLM-scores each against a structured profile, and drafts tailored applications under a human-in-the-loop step. The current version moves it to a daily autonomous cycle on a free always-on cloud VM: it auto-selects the best matches, auto-generates tailored documents, emails a digest, and surfaces everything in a web console — while a deliberate human-in-the-loop final step still never submits an application.
$0 / mo
Hosting cost
90+ tests
Test suite
Daily
Run cadence
Demo

What it does
- Every day, on its own, it scans company ATS feeds (Greenhouse, Lever, Ashby), scores each role 0–100 against a structured profile, picks the strongest matches, and writes a tailored résumé and cover letter for each — then emails a digest. The one thing it never does is hit submit: the final apply is always a human click, a deliberate account-ban and safety decision.
- When it can't finish a role — an LLM quota or API error, or a posting locked behind a manual portal like Workday, Taleo, or iCIMS — it drops the job into a triage queue with the reason and Retry / Apply / Dismiss actions, so nothing ever gets silently lost.
- A web console is the cockpit: today's stats, a ready-to-apply queue, the triage queue, run history, a live countdown to the next run, an editable application tracker (CSV import, active-count, auto-ghosting of stale 'Applied' rows), and charts of the agent's activity. A one-click demo mode opens an isolated, freshly-seeded sandbox that makes no live API calls.
- It writes every document straight into the candidate's real Word template — keeping the fonts, margins, two-column layout, and clickable links — filled to a full page with projects ordered most-recent-first, and never invents a fact or link that isn't in the single source-of-truth profile.
- Its language model never becomes a single point of failure: calls go to Claude first and fall back to Gemini automatically, with retries and clear, provider-named error messages when something is wrong.
- It stays online around the clock for $0, running on a free Oracle Cloud VM with automatic HTTPS; personal data and API keys live only on that machine and are never committed to the public repository.