YAMLResume is an MIT-licensed command-line tool that treats a résumé the way a programmer treats code: the content lives in one plain-text resume.yml file, and a compiler parses, validates and typesets it into a finished document. It began life as the typesetting engine behind PPResume, a commercial LaTeX-based résumé builder, and was released openly so that users are not locked into a hosted service. One source file can produce a pixel-perfect PDF through LaTeX plus Markdown, responsive HTML and a Word DOCX, and because everything is text the résumé can sit in git next to the projects it describes.
resume.yml renders PDF through XeLaTeX, Markdown, responsive HTML and DOCX; layouts are declared in the file itself, so several formats build in one pass.yamlresume validate prints clang-style diagnostics, and pointing the YAML header at the schema URL gives editors autocomplete and inline documentation.yamlresume dev rebuilds on every save, with --no-pdf and --no-validate to keep the loop fast while drafting.yamlresume templates list reports what is installed.locale block in the YAML.yamlresume ai generate builds a complete, schema-valid résumé from a job title and language, backed by OpenAI, DeepSeek, Kimi or a local Ollama model.The design follows a strict separation of concerns: content stays in YAML, structure and validation belong to the compiler, and presentation is delegated to pluggable layout engines for LaTeX, HTML, Markdown and DOCX. Building a résumé from scratch takes two Docker commands and no local LaTeX install:
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume build my-resume.yml
That second command emits the .tex source, the PDF, a DOCX file, Markdown and HTML in a single run. yamlresume doctor checks the environment — Node version, typesetting engine, fonts — before the first build, which is the usual place a missing XeLaTeX or template dependency surfaces.
Developers and technical writers who would rather diff their CV than drag boxes around a canvas, and who want one authoritative file that rebuilds the same document identically a year later. It is less appealing if you want a visual designer with live formatting handles, or if you are not comfortable installing Node.js or running a container — in that case a browser-based builder is the better fit.
.tex by hand than generate it