Skip to main content

applyr

CLI job application tracker designed for AI coding agents.

Track applications, measure your funnel, spot skill gaps, and generate tailored CVs — all from your terminal. Built to work with Claude Code, Cursor, Aider, or any AI coding agent.

Why applyr?

I built this while applying to 200+ jobs. Most job trackers are web apps that don't talk to your AI tools. applyr is different:

  • CLI-first — runs in your terminal, pipes into anything
  • AI-agent native — your coding agent reads/writes offers, generates CVs, and gives you insights
  • Zero dependencies — Python 3.10+ stdlib only. No frameworks, no API keys
  • Local & private — your data stays in a SQLite file on your machine

Install

pip install applyr

Or clone and install locally:

git clone https://github.com/DeibyGS/applyr.git
cd applyr
pip install .

Quick Start

# 1. Initialize (creates ~/.applyr/ with config and database)
applyr init

# 2. Edit your CV master (source of truth for all CVs)
#    Open ~/.applyr/cv-master.md in your editor

# 3. Add your first offer
applyr add '{"title": "Backend Developer", "company": "Acme", "work_mode": "remote", "salary_min": 35000, "salary_max": 45000, "seniority_level": "junior", "tech_stack": "Python, FastAPI, PostgreSQL"}'

# 4. Check your pipeline
applyr pipeline

# 5. See your stats
applyr stats

Commands

Command Description
applyr init Set up ~/.applyr/ (config, database, templates)
applyr add '<json>' Register a new job offer
applyr list [--status S] [--sort F] List offers (default: last 50)
applyr pipeline [--min-score N] View offers grouped by status
applyr show <id> Show full offer details
applyr update <id> <status> Update offer status
applyr delete <id> Delete an offer
applyr search <keyword> Search by company/title/notes/tech
applyr stats Conversion funnel and metrics
applyr gaps Skill gap analysis
applyr followups Pending/overdue follow-ups
applyr trends Application trends over time
applyr summary [--json] Weekly summary (LLM-optimized)
applyr export [--format csv|json] Export all data
applyr cv generate <id> Generate CV instructions for an offer
applyr cv pdf <file.html> Convert HTML CV to PDF via Chrome
applyr version Show version

Offer Statuses

pending > applied > waiting > in_process > offer

Side tracks: discarded, rejected

Offer Fields

All fields are optional except title. Your AI agent fills in what it can from the job posting:

{
  "title": "AI Engineer",
  "company": "Acme Corp",
  "summary": "Building LLM-powered features...",
  "date_received": "2026-08-06",
  "date_applied": "2026-08-06",
  "compatibility_pct": 78,
  "status": "applied",
  "canal": "linkedin_easy",
  "work_mode": "remote",
  "location": "Madrid",
  "salary_min": 30000,
  "salary_max": 40000,
  "seniority_level": "junior",
  "role_category": "ai",
  "tech_stack": "Python, LangChain, AWS",
  "cover_letter": 1,
  "contact_name": "Ana Garcia",
  "contact_role": "Recruiter",
  "job_url": "https://...",
  "notes": "Referred by John",
  "topics": {
    "tech_stack": {"score": 85, "detail": "Python strong, LangChain learning"},
    "education": {"score": 70, "detail": "DAM completed"},
    "english": {"score": 60, "detail": "B1 level"},
    "experience": {"score": 40, "detail": "6 months internship"},
    "projects": {"score": 90, "detail": "3 production projects"},
    "cultural_fit": {"score": 80, "detail": "Startup culture match"}
  }
}

Scoring

Compatibility is auto-calculated from topic scores using configurable weights:

Topic Default Weight
Tech Stack 30%
Education 15%
English 10%
Experience 15%
Own Projects 20%
Cultural Fit 10%

Customize weights, topic names, and threshold in ~/.applyr/applyr.toml.

Using with AI Agents

applyr is designed to be used through your AI coding agent. Here's the workflow:

You:   "Analyze this job posting for AI Engineer at Acme"
Agent: Reads the posting + your cv-master.md
       Evaluates compatibility per topic
       Runs: applyr add '<json with all fields>'
       Output: "Registered as #42 — 78% match. Gaps: English, Experience"

You:   "What should I focus on improving?"
Agent: Runs: applyr gaps
       Output: "English appears in 15 offers. Consider getting B2 cert."

You:   "Generate a CV for offer #42"
Agent: Runs: applyr cv generate 42
       Reads cv-master.md + offer details
       Creates tailored HTML CV
       Runs: applyr cv pdf cv-acme.html

You:   "Weekly summary"
Agent: Runs: applyr summary --json
       Output: structured JSON with metrics, trends, and recommendations

CLAUDE.md Integration

Add this to your project's CLAUDE.md for automatic agent behavior:

## Job Application Tracking
- Use `applyr` CLI for all job tracking operations
- Read `~/.applyr/cv-master.md` as source of truth for CV content — never invent
- When analyzing an offer: evaluate all topics, calculate score, register with `applyr add`
- When applying: generate ATS CV with `applyr cv generate <id>`, create PDF
- Threshold to apply: >= 65% compatibility

Configuration

Edit ~/.applyr/applyr.toml:

[general]
threshold = 65          # Min compatibility % to recommend applying
followup_days = 10      # Days before follow-up reminder

[weights]
tech_stack = 0.30
education = 0.15
english = 0.10
experience = 0.15
projects = 0.20
cultural_fit = 0.10

[topics]
tech_stack = "Tech Stack"
education = "Education"
english = "English"
experience = "Experience"
projects = "Own Projects"
cultural_fit = "Cultural Fit"

[cv]
# chrome_path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
# cv_master = "~/.applyr/cv-master.md"
# output_dir = "~/.applyr/cv"

Data Storage

All data is stored locally in ~/.applyr/jobs.db (SQLite). Export anytime:

applyr export --format json --file my-applications.json

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

applyr-0.1.0.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

applyr-0.1.0-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file applyr-0.1.0.tar.gz.

File metadata

  • Download URL: applyr-0.1.0.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for applyr-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3014ccc370b3c1b6c2ebd9d9e4737d58fb2b8eb8e2b1936f79529dacc8fcacd8
MD5 6b2ba94d470668336ba01ed0e9fbec76
BLAKE2b-256 5c7a7ecdc87695838587f3ecd473dacec6a92673afb0a85b065aab654bef2b8f

See more details on using hashes here.

File details

Details for the file applyr-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: applyr-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for applyr-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 93a3ea8c65e1918f9c5aff4fd8be7ca62513d4d2c6fa795fbf062c215b8231da
MD5 b420b65079d4a0176ab8e1203904f602
BLAKE2b-256 912dfa997c30a9ce0e0ee9526a08d9c42bd1e4b66516e8d48d16633f3f6a6109

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page