AI News HubLIVE
In-site rewrite2 min read

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.

SourceHacker News AIAuthor: torontodev007

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%