An extensible Python agent that discovers fresh job postings, ranks them against a candidate's resume, and drives a browser to submit applications automatically. The agent combines structured job search APIs, resume-aware scoring, and computer-vision assisted button detection to reliably automate repetitive application workflows.
- Freshness-aware discovery – query multiple job boards using rolling windows (past 24 hours, 3 days, etc.) while avoiding duplicates.
- Resume intelligence – extract resume text from PDF, compute keyword and skill overlap, and prioritise the most relevant roles.
- Browser automation – use Playwright to navigate postings, locate "Apply" buttons (with fallbacks that leverage template-based computer vision), upload resumes, and populate contact forms.
- Configurable pipeline – customise user profile, resume path, search preferences, and automation settings through a single configuration file.
- Extensible sources – add new job source integrations by implementing the
JobSourceprotocol.
Create a virtual environment and install the project with the testing extras:
python -m venv .venv
source .venv/bin/activate
pip install -e .[testing]To enable browser automation you also need Playwright and its browser binaries:
pip install .[playwright]
playwright install chromium-
Create a configuration file similar to
examples/config.sample.jsonand update the paths and personal information. Ensure theresume.pathpoints to a local PDF file. -
Run the agent from the command line:
autoapply-agent path/to/config.json --limit 5
The agent will query fresh jobs, rank them, and attempt applications using the configured automation settings.
Implement the JobSource protocol in autoapply.job_sources.base and register the class in the CLI's create_sources factory. See RemotiveJobSource for a fully working example that integrates with the Remotive public API.
pytest