Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

cv-renderer

Renders tailored LaTeX CVs from a single master data file and archetype configurations. Each archetype targets a different job profile (MLOps, Customer Analytics, Forecasting, Ranking) by selecting roles, bullets, and skills from the shared master data.

Quick start

uv sync
uv run cv-renderer list             # show available archetypes
uv run cv-renderer render A         # render archetype A → output/A.tex
uv run cv-renderer render A --pdf   # also compile to PDF (requires TeX)
uv run cv-renderer validate --all   # check all archetypes against master data

How it works

data/master.yaml          ← all CV content (roles, skills, education, languages)
data/archetypes/A.yaml    ← selects + orders content for a specific job profile
         ↓
    cv_renderer/engine.py  (resolve IDs, validate tiers, check evidence)
         ↓
    cv_renderer/renderer.py + templates/cv.tex.j2  (Jinja2 → LaTeX)
         ↓
    output/A.tex → output/A.pdf

Archetypes

ID Profile Target roles
A MLOps / ML Engineer Pipeline ownership, SWE foundation
B Customer Analytics DS CLV, churn, calibrated probabilities
C Forecasting / Ops DS Time series, anomaly detection
D Ranking & Experimentation Ranking, LTV, A/B testing

Archetypes are selectors — they reference IDs from master.yaml, never duplicate content. See data/archetypes/_CONTRACT.md for the full contract.

Validation rules

  • Every role and skill ID must resolve against master data
  • Core skills require evidence (role IDs where the skill was applied)
  • Tier promotion is forbidden: familiar skills cannot appear in core_order
  • Empty bullet lists are rejected
  • max_pages is asserted against the compiled PDF

Project structure

cv_renderer/
  models.py       # Pydantic models for master data + archetype YAML
  engine.py       # Resolution and validation logic
  renderer.py     # Jinja2 → LaTeX rendering
  cli.py          # Click CLI (render, validate, list)
templates/
  cv.tex.j2       # LaTeX template
data/
  master.yaml     # All CV content
  archetypes/     # Archetype YAML configs (A–D)
tests/            # 48 tests covering models, engine, renderer, CLI

CLI reference

cv-renderer render <ID>

Renders an archetype to LaTeX.

Flag Description
--output, -o Output path (default: output/<ID>.tex)
--pdf Compile to PDF via latexmk/pdflatex

cv-renderer validate <ID>

Validates an archetype against master data without rendering.

Flag Description
--all Validate all archetypes

cv-renderer list

Prints all archetype IDs and labels.

Development

uv sync
uv run pytest           # run tests
uv run ruff check       # lint

Requires Python 3.12+. PDF compilation requires a TeX distribution (texlive or similar) with latexmk.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages