Show HN: An AI agent that applies to jobs for me (Playwright, GPT-5.4 form filling)
This project is an AI agent that automates the entire job application loop: discovers open roles, tailors your resume, generates a PDF, and fills out ATS application forms (Greenhouse, Ashby, Lever, etc.), but stops before submitting to let you review and click Submit. It's an assistant, not a spam cannon.
Notifications You must be signed in to change notification settings
Fork 0
Star 0
BranchesTags
Open more actions menu
Folders and files
NameName
Last commit message
Last commit date
Latest commit
History
4 Commits
4 Commits
.gitignore
.gitignore
README.md
README.md
apply.sh
apply.sh
discover.py
discover.py
find_jobs.sh
find_jobs.sh
followup.py
followup.py
gen_pdf.py
gen_pdf.py
gmail_job_audit.py
gmail_job_audit.py
gmail_web_audit.py
gmail_web_audit.py
login.py
login.py
main.py
main.py
make_cv.py
make_cv.py
outreach.py
outreach.py
outreach.sh
outreach.sh
requirements.txt
requirements.txt
simplify_capture.py
simplify_capture.py
simplify_debug.py
simplify_debug.py
tailor.py
tailor.py
yc_discover.py
yc_discover.py
Repository files navigation
An AI agent that does the whole job-application loop: discovers open roles, tailors your resume per job description, generates a PDF, and fills out the ATS application form (Greenhouse, Ashby, Lever, ...) — dropdowns, comboboxes, and the "why do you want to work here" boxes included. Then it stops and waits for you to review and click Submit. It never submits on its own.
▶️ Watch the full demo — it applies to real jobs on camera
What it does
Discovers open roles across job boards (discover.py, yc_discover.py)
Tailors your resume to each job description and generates a fresh PDF (tailor.py, gen_pdf.py, make_cv.py)
Fills the actual application in its own browser window — so your main browser stays free, unlike extension-based autofill (main.py)
Pauses for human review before every submit — it's an assistant, not a spam cannon
Survives crashes: queue processing picks up where it left off
Follows up: drafts follow-up emails for submitted applications (followup.py)
How it works
profile.yaml holds your facts + voice notes (single source of truth)
Playwright opens the job URL in a dedicated Chromium with a persistent profile (logins/cookies survive between runs)
The form is extracted from the DOM; an LLM maps every field to an answer — profile facts verbatim, open-ended questions drafted in your voice, unknowns skipped
The agent fills the form, then pauses — you review and click Submit yourself
Setup
python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt playwright install chromium
create profile.yaml with your details (name, contact, work history, voice notes)
export LLM_API_KEY=... # and optionally LLM_BASE_URL / LLM_MODEL
Run
python main.py https://boards.greenhouse.io/acme/jobs/12345 python main.py --queue jobs.txt # one URL per line ./apply.sh # full pipeline via launcher script
Notes
Quality over volume: review every application before submit
Don't point this at LinkedIn Easy Apply (ToS) or CAPTCHA-walled flows
Workday: log in once in the agent's browser window; the persistent profile remembers
Browser profiles, resumes, and application data are gitignored — keep it that way; they contain session cookies and personal info
About
Job application agent, ai applies jobs and I review and Submit using Python, gpt 5.4, PLAYWRIGHT
Resources
Readme
Uh oh!
There was an error while loading. Please reload this page.
Activity
Stars
0 stars
Watchers
0 watching
Forks
0 forks
Report repository
Releases
No releases published
Packages 0
Uh oh!
There was an error while loading. Please reload this page.
Contributors
Uh oh!
There was an error while loading. Please reload this page.
Languages
Python 99.0%
Shell 1.0%