I built an AI agent that applies to jobs for me — tailors my resume per job, fills the forms, and waits for my approval before submitting

2 months ago
Job searching was eating hours a day, mostly on copy-pasting the same info
into slightly different forms. So I built an agent that:
-
finds open roles across job boards
-
rewrites my resume for each job and generates a fresh PDF
-
fills out the actual application (Ashby, Greenhouse — dropdowns, comboboxes, the "why do you want to work here" boxes)
-
stops before submitting so I review every application — it's an assistant,
not a spam cannon
Built with Python + Playwright + an LLM doing the form-field mapping. The
hardest part by far was handling how differently every ATS renders its forms.
AMA about the build — curious whether people here would trust it to submit
autonomously (I don't, yet).



I would not let it submit autonomously either, at least not until the system has boring guardrails around side effects.
The useful boundary is: the agent can prepare an application package, but submission is a separate privileged action.
A few things I would add before trusting it with more volume:
keep a per-application receipt: job URL, company, role id, generated resume hash, answers used, timestamp, and whether it was submitted
diff the generated resume/answers against a base profile so weird hallucinated experience is visible before review
make every external write idempotent where possible: do not resubmit the same job/company pair unless explicitly allowed
hard-block fields that should never be invented: citizenship, work authorization, salary, disability/veteran status, location, availability
store screenshots or DOM snapshots of the final review page before submit, because ATS forms are messy and sometimes hide required fields/state
throttle and dedupe aggressively so it does not become accidental spam
The part I would be most suspicious of is not filling text boxes. It is field interpretation: dropdowns like "authorized to work," "sponsorship required," "willing to relocate," or knockout questions where a wrong mapping has real consequences.
So I think your "stops before submitting" choice is the right product shape. The interesting next step is probably a review UI that shows provenance for every filled field: source from my profile, inferred from resume, generated from job post, or needs human input.