GitHub - torontodeveloper/job-application-agent: Job application agent · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
torontodeveloper
job-application-agent
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>3 Commits<br>3 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
View all files
Repository files navigation
Job Application Agent
Fills ATS job application forms (Greenhouse, Lever, Ashby, ...) in its own browser<br>window so your main browser stays free — unlike extension-based autofill that<br>holds your tab hostage while it works.
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<br>(logins/cookies survive between runs)
The form is extracted from the DOM; an LLM maps every field to an answer —<br>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.<br>It never submits on its own.
Setup
python -m venv .venv && source .venv/bin/activate<br>pip install -r requirements.txt<br>playwright install chromium<br>cp profile.yaml profile.yaml # fill in your details<br>export LLM_API_KEY=... # and optionally LLM_BASE_URL / LLM_MODEL
Run
python main.py https://boards.greenhouse.io/acme/jobs/12345<br>python main.py --queue jobs.txt # one URL per line
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
About
Job application agent
Resources
Readme
Uh oh!
There was an error while loading. Please reload this page.
Activity
Stars
stars
Watchers
watching
Forks
forks
Report repository
Releases
No releases published
Packages
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<br>98.8%
Other<br>1.2%
You can’t perform that action at this time.