Playwright-based CLI that fills job application forms automatically — review before submitting.
Currently supports Greenhouse ATS (used by Rubrik, Stripe, Notion, and 10,000+ companies).
pip install -r requirements.txt
playwright install chromium
cp profile.example.yaml profile.yaml # fill in your details
python apply.py --url <greenhouse-job-url> --profile profile.yaml
# ^ fills the form and saves a screenshot — does NOT submit
python apply.py --url <greenhouse-job-url> --profile profile.yaml --submit
# ^ submits after you've verified the screenshotSee profile.example.yaml. Your profile.yaml is gitignored — never commit it.
- Navigates to the job URL in a real Chromium browser (visible, not headless)
- Fills all standard fields: name, email, phone, location, LinkedIn
- Uploads resume PDF and injects cover letter text
- Handles work-authorization dropdowns via label matching
- Takes a full-page screenshot for review
- Only submits when
--submitis explicitly passed
- Headed browser by default — you can watch it fill in real time and catch issues
- Screenshot before submit — mandatory review step, not optional
- YAML profile — separates your personal data from the automation code
- Label-based custom question matching — works across different Greenhouse form configurations without hardcoded selectors
- Lever ATS support
- Ashby ATS support
- Multi-URL batch mode (apply to many jobs from a CSV)
- Session persistence (resume interrupted runs)