LinkedIn Easy Apply automation tool built with Playwright that logs in, discovers jobs, auto-fills application forms with profile data and AI-assisted answers, tracks runtime state, and generates session reports.
- Python 3.11+
- Windows PowerShell (recommended for bootstrap scripts)
src/
app.py # Main orchestration flow
config.py # Loads config/data.json
logging_setup.py # Shared Rich logging + console
models.py # SessionStats and JobRecord
__main__.py # python -m src entrypoint
automation/
easy_apply_agent.py
answering_mixin.py
form_interaction_mixin.py
modal_submit_mixin.py
services/
ai.py
linkedin.py
reporting.py
storage/
json_store.py
ui/
dashboard.py
config/
data.json # Candidate/job preferences (local private data)
assets/
dummy.pdf # Local sample resume (replace with your own)
runtime/
application_history.json # Runtime state
daily_stats.json # Runtime state
job_queue.json # Runtime state
linkedin_state.json # Runtime state
session_report.html # Generated report output
scripts/
start.ps1 # Bootstrap .venv, install deps if needed, run app
start.cmd # cmd wrapper for start.ps1
main.py # Root launcher (calls src.app.run)
requirements.txt # Python dependencies
pyproject.toml # Packaging metadata
tests/ # Unit tests
- Create local config files from the samples:
Copy-Item .env.example .env
Copy-Item config/data.sample.json config/data.jsonThen edit your local .env and config/data.json with your real values.
- Run bootstrap script (creates
.venv, installs requirements if changed, then runs app):
powershell -ExecutionPolicy Bypass -File scripts/start.ps1From cmd:
scripts\start.cmdUse this when you only want environment + dependency setup:
powershell -ExecutionPolicy Bypass -File scripts/start.ps1 -NoRunRun with root launcher:
.\.venv\Scripts\python.exe main.pyRun as module:
.\.venv\Scripts\python.exe -m srcOptional console script (after editable install):
.\.venv\Scripts\python.exe -m pip install -e .
linkedin-autopilot.\.venv\Scripts\python.exe -m unittest discover -s tests -p "test_*.py"- Edit your local
.envandconfig/data.jsonwith your own values. - Set
application_settings.resume_pathto your resume file path (for exampleassets/your_resume.pdf). - Runtime/session files are stored in
runtime/.
- Windows quick start:
powershell -ExecutionPolicy Bypass -File scripts/start.ps1 - Manual run:
python main.py - Module run:
python -m src

