What Is Resume as Code?
Your resume is structured data. Treat it like a software project: YAML in, PDF out, Git for version control.
Resume as code means treating your resume like a software project. Your content lives in a structured data file (YAML), a rendering engine handles formatting (Typst), and you track changes with Git. No Word documents, no drag-and-drop editors, no resume_v3_final_FINAL.docx.
The idea comes from infrastructure as code: declare what you want in a file, run a build, get a deterministic output. Applied to resumes, you get reproducibility, clean diffs, automation, and full control over the result.
Why the traditional workflow breaks
Most resume tools are WYSIWYG. Type into a form, pick a template, download a PDF. For developers, this creates real problems:
No version control. Every version is a separate file or an overwritten state in some cloud app. No way to diff, branch, or roll back.
Content and design are tangled together. Change a template and you're re-adjusting content. Your data is stuck inside a proprietary format you can't easily move.
No automation. Multiple resume variants means repeating the same formatting work by hand. There's no make build for resumes.
No validation. Typos, missing dates, broken formatting. You catch these by eyeballing the PDF, if you catch them at all.
How it actually works
The workflow has four parts:
1. Structured data file
Your resume content lives in YAML. Each section is a structured object with defined fields. This file is the single source of truth.
cv:
name: Jane Smith
sections:
experience:
- company: Stripe
position: Senior Backend Engineer
start_date: 2022-03
end_date: present
highlights:
- Designed a payment reconciliation pipeline processing $2B+ monthly
Plain text. Works with any editor, any OS, any version control system.
2. Validation
A schema checks your data before rendering. Missing field? Malformed date? End date before start date? You find out immediately, not after staring at a broken PDF. In RenderCV, this is powered by Pydantic, which enforces types and constraints on every field.
3. Templates
Jinja2 templates control how data maps to layout. Templates define structure (what goes where), while the typesetting engine handles pixel-level rendering. Switch templates without touching your content. Edit content without breaking your layout.
4. Typesetting
The final PDF comes from Typst, a modern typesetting engine. Correct kerning, proper ligatures, balanced whitespace. The output is deterministic: same input, same PDF, every time.
The full pipeline
RenderCV implements all of this end-to-end:
YAML → Pydantic validation → Jinja2 templates → Typst → PDF
Install it:
pip install "rendercv[full]"
Scaffold a new resume:
rendercv new "Jane Smith"
Edit the YAML, then render:
rendercv render jane_smith_cv.yaml
Want a different look? Change the theme field to classic, sb2nov, moderncv, engineeringresumes, or engineeringclassic and re-render. Your content stays the same.
Or skip the CLI entirely and use rendercv.com, which runs the same pipeline in your browser.
Version control changes everything
Once your resume is a text file, Git becomes your resume manager.
git diff shows exactly what changed: which bullet you rewrote, which date you corrected, which skill you added.
Branches let you maintain variants. A backend-focused branch and an ml-focused branch share a common base and diverge only where needed.
Commit history is a complete audit trail. You can trace when you added a role, when you revised a description, and why.
CI/CD for your resume
Once you have a text file with a deterministic build, it fits into CI/CD like any other artifact:
name: Build Resume
on:
push:
paths:
- "resume/*.yaml"
jobs:
render:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install "rendercv[full]"
- run: rendercv render resume/cv.yaml
- uses: actions/upload-artifact@v4
with:
name: resume-pdf
path: rendercv_output/*.pdf
Push your YAML, the pipeline validates it, renders the PDF, and stores the artifact. No manual "render and upload" ceremony. Combined with branches, you can maintain parallel pipelines: a frontend branch and a backend branch each producing a tailored PDF automatically.
Who is this for?
Software engineers, DevOps engineers, data scientists, researchers, open-source contributors. Anyone who already works in terminals and text editors. If you've never used Git or a command line, a traditional resume builder is probably a better fit.
Resume as code isn't universally better. It's specifically better for people who think in structured data and version-controlled workflows.
RenderCV is open source (MIT license, 16,000+ GitHub stars) and free to use. Your resume directly affects your career. It deserves the same rigor you apply to your code.