AI-native CV toolkit for developers. One YAML, multiple CVs, zero hassle.
- Multi-variant - One data file generates backend/fullstack CVs
- Bilingual - EN/RU from same source
- PDF-level analysis - Measures actual rendered widths, not character counts
- AI-native - Built for Claude Code with skills for the entire job search
# 1. Clone and install
git clone https://github.com/AHTOOOXA/easy-cv
cd easy-cv
pip install -e .
# 2. Get started (with Claude Code)
/help # Interactive guide
/cv:init # Set up from existing resume or interview
# Or manually
cp examples/cv-data.example.yaml cv-data.yaml
# Edit cv-data.yaml with your info
# 3. Generate CVs
/cv:generate # Or: python src/generate.py --pdf- Python 3.10+
- pdflatex (LaTeX distribution)
- pymupdf (
pip install pymupdf) - pyyaml (
pip install pyyaml)
macOS:
brew install --cask mactex-no-guiUbuntu/Debian:
sudo apt-get install texlive-latex-base texlive-fonts-recommended texlive-lang-cyrillicWindows: Download MiKTeX
# Generate all variants (tex only)
python src/generate.py
# Specific CV type and language
python src/generate.py backend en
python src/generate.py fullstack ru
# Generate and compile to PDF
python src/generate.py --pdf
# Generate, compile, and move to Downloads
python src/generate.py --pdf --moveCheck for page overflow and orphan words:
python src/analyze.pyOutput shows:
[+] FITS- has free space[~] TIGHT- barely fits (acceptable)[!] OVERFLOW- needs fixing
| Type | Title | Focus |
|---|---|---|
backend |
Python Backend Developer | APIs, microservices, distributed systems |
fullstack |
Fullstack Developer | Python + React/Vue, end-to-end |
personal_info:
name:
en: "John Doe"
ru: "Джон Доу"
email: "john.doe@example.com"
job_titles:
backend:
en: "Python Backend Developer"
fullstack:
en: "Fullstack Developer"
about_me:
backend:
en: "Backend Developer with 4+ years..."
fullstack:
en: "Fullstack Developer with 4+ years..."
experience:
- position:
en: "Senior Backend Developer"
achievements:
en:
- "Reduced order processing latency by 70%"
projects:
- name:
en: "NotHotDog"
show_in: ["backend", "fullstack"] # Control which CVs include thisSee examples/cv-data.example.yaml for full structure.
This toolkit includes Claude Code skills for AI-assisted job search. Commands are entry points, skills contain the logic.
/help Interactive guide based on your situation
/cv:karen Full help menu - shows all commands
/cv:init Set up cv-data.yaml (import resume or interview)
/cv:generate Generate CV files, compile to PDF
/cv:analyze Check PDFs for overflow and orphans
/cv:optimize Fix formatting issues iteratively
/cv:improve Review and improve CV content
/cv:cover-letter Write cover letter for specific job
/cv:interview Prepare for interview
/cv:salary Salary research and negotiation
/cv:linkedin Optimize LinkedIn profile
| Skill | What it does |
|---|---|
help |
Interactive guide - assesses state, suggests next steps |
init |
Set up cv-data.yaml from existing resume or interview |
generate |
Generate LaTeX from YAML, compile to PDF |
analyze |
Measure PDF text widths, find orphans |
optimize |
Iteratively fix overflow and orphans |
cv-improve |
Review CV, quantify achievements, edit YAML |
cover-letter |
Write formal + messenger versions for job posting |
interview-prep |
Fit analysis, STAR stories, prep checklist |
salary-nego |
Market research, positioning, negotiation scripts |
linkedin-profile |
Generate headline, about, experience for LinkedIn |
You: /help
Claude: [Checks state, asks what you need, routes to right skill]
You: /cv:init
Claude: [Asks: import resume or interview? Guides you through setup]
You: /cv:generate
Claude: [Generates all CV variants as PDFs]
You: /cv:analyze
Claude: [Reports overflow on fullstack_ru, orphan in backend_en about_me]
You: /cv:optimize
Claude: [Edits cv-data.yaml to fix issues, regenerates, verifies]
You: Write cover letter for [paste job posting]
Claude: [Uses cover-letter skill, saves to notes/]
You: Prepare me for interview at Stripe
Claude: [Uses interview-prep skill, researches company, creates prep doc]
easy-cv/
├── cv-data.yaml # Your data (gitignored)
├── src/
│ ├── generate.py # YAML -> LaTeX -> PDF
│ └── analyze.py # PDF quality analysis
├── templates/
│ └── modern.tex # LaTeX template
├── output/ # Generated files (gitignored)
├── notes/ # Cover letters, prep docs (gitignored)
├── examples/
│ ├── cv-data.example.yaml
│ └── output/ # Sample PDFs for preview
└── .claude/
├── commands/ # Slash commands (wrappers)
└── skills/ # AI skills (logic)
MIT