A local-first assistant to track roles, tailor cover letters, prep application answers, and draft LinkedIn updates— without breaking site Terms of Service.
This tool does not auto-submit on third‑party sites. It helps you prepare high‑quality materials fast and keep an organized pipeline.
- Add roles manually or from RSS/Atom feeds
- Keyword‑aware tailoring for cover letters (optionally uses OpenAI if
OPENAI_API_KEYis set) - SQLite tracker for stages (saved, applied, interview, offer, rejected)
- Email draft export (copy/paste into email client)
- Draft LinkedIn update text for your project progress
- Clean Typer CLI with Rich output
# 1) Create & activate venv (Windows PowerShell)
python -m venv .venv
. .venv/Scripts/Activate.ps1
# macOS/Linux
python3 -m venv .venv
source .venv/bin/activate
# 2) Install deps
pip install -r requirements.txt
# 3) Configure your details
cp data/user_profile.example.yml data/user_profile.yml
cp .env.example .env
# edit data/user_profile.yml and .env to taste
# 4) See commands
python src/app.py --help# Add a job manually
python -m src.app jobs add --title "AI & Machine Learning Engineer, Associate" --company "BlackRock" --location "London, UK" --url "https://careers.blackrock.com/job/london/ai-and-machine-learning-engineer-associate/45831/85486803104" --source manual --keywords "AI, Kubernetes, Cloud, Python, ML, Rust"
# Pull from a feed (if you have one)
python src/app.py feeds add --name "Company Careers" --url "https://example.com/careers/rss"
python src/app.py feeds pull
# Tailor materials for a job (creates /out/<job_id>/)
python src/app.py tailor run <job_id>
# Mark progress
python src/app.py jobs status <job_id> applied
python src/app.py jobs status <job_id> interview
# Draft LinkedIn post about your progress
python src/app.py social post-draft --job-id <job_id>- Run:
python src/app.py --help - Provided
.vscode/tasks.jsonandlaunch.jsonfor convenience.
If you want a web UI later, you can convert this to a small FastAPI/Streamlit service; the core logic is already separated in modules.
- Respect each site’s Terms of Service and robots policies.
- Don’t auto‑submit on third‑party forms unless you have written permission.
- Keep credentials private (
.envis ignored by git).