Skip to content

Latest commit

 

History

495 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YAMLResume

English | Français | Deutsch | Español | Português | Bahasa Indonesia | 日本語 | 简体中文 | 繁體中文

GitHub CI Documentation Discord Codecov Security Rating Debuggix Security

Node.js Version npm version npm downloads Docker Pulls Docker Image Size

LaTeX TypeScript PNPM Conventional Commits Biome Vitest

News: YAMLResume v0.15 is out with curated sample resumes in 12 locales and AI-powered resume generation. Also check out the YAMLResume GitHub Action to automate PDF builds in CI/CD.

Writing resumes may not be hard, but it is definitely not fun and it's tedious.

YAMLResume lets you manage and version-control your resumes as plain-text YAML and turn them into beautifully typeset, professional documents with a single command.

YAMLResume Playground

The Design Principle

This project started as the core typesetting engine for PPResume, a LaTeX-based, pixel-perfect resume builder. After careful consideration, we decided to open source it so people can always say no to vendor lock-in.

YAMLResume follows Separation of Concerns:

  • Content lives in plain-text YAML.
  • Structure and validation are enforced by the compiler and a strict schema.
  • Presentation is handled by pluggable layout engines (LaTeX, HTML, Markdown, DOCX).

You edit the what; YAMLResume handles the how.

Features at a Glance

  • One source, multiple outputs. From a single resume.yml generate pixel-perfect PDFs (via LaTeX), clean Markdown, responsive HTML, and Microsoft Word DOCX files.
  • A real resume compiler. Parse, validate, transform, and render. Catch errors early with Zod runtime validation and JSON Schema editor integration.
  • Great developer experience. Watch mode with yamlresume dev, environment diagnostics with yamlresume doctor, and instant schema validation.
  • AI-powered generation. Bootstrap a complete resume from a job title and locale with yamlresume ai generate.
  • Flexible layouts. Rename and reorder sections, switch templates, tune typography, paper size, line spacing, and toggle icons.
  • Global i18n. Built-in support for 10 languages across 12 locale codes.
  • Rich ecosystem. Docker image, Homebrew formula, GitHub Action, embeddable Playground, curated samples, and a JSON Resume converter.

Quick Start

The fastest way to try YAMLResume is with Docker. The image ships with the CLI, XeTeX, and recommended fonts:

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

YAMLResume Docker Demo

You can also install yamlresume with your favorite package manager (Node.js

= 22 is required):

# npm
npm install -g yamlresume

# pnpm
pnpm add -g yamlresume

# yarn
yarn global add yamlresume

# bun
bun add -g yamlresume

# Homebrew (macOS)
brew install yamlresume

Verify the installation and check your environment:

yamlresume help
yamlresume doctor

For detailed installation steps, including how to set up a typesetting engine, see the installation guide.

Create a new resume

You can create your own resume by cloning one of our sample resumes here. Once you have the sample resume on your computer, you can generate a PDF with:

$ yamlresume new my-resume.yml
✔ Created my-resume.yml successfully.

$ yamlresume build my-resume.yml
✔ Generated resume tex file successfully: my-resume.tex
◐ Generating resume pdf file with command: xelatex -halt-on-error my-resume.tex...
✔ Generated resume pdf file successfully: my-resume.pdf
✔ Generated resume docx file successfully: my-resume.docx
✔ Generated resume markdown file successfully: my-resume.md
✔ Generated resume html file successfully: my-resume.html

You can also use the dev command to rebuild the resume on each file change, which provides a modern web development-like experience:

$ yamlresume dev my-resume.yml
✔ Generated resume tex file successfully: my-resume.tex
◐ Generating resume pdf file with command: xelatex -halt-on-error my-resume.tex...
◐ Watching file changes: my-resume.yml...
✔ Generated resume pdf file successfully: my-resume.pdf
✔ Generated resume docx file successfully: my-resume.docx
✔ Generated resume markdown file successfully: my-resume.md

Check out the generated PDF here.

Software Engineer Page 1 Software Engineer Page 2

PPResume Gallery provides a showcase of all the possible types of resumes, categorized by languages and templates.

Multi-Layout Output

Layouts decouple your content from presentation. Add as many output formats as you need in resume.yml:

layouts:
  - engine: latex
    template: moderncv-banking
    typography:
      fontSize: 11pt
  - engine: markdown
  - engine: html
    template: calm
  - engine: docx
    template: calm

Learn more about each engine:

Watch Mode

Use yamlresume dev to rebuild your resume automatically as you edit the YAML file:

yamlresume dev my-resume.yml

This gives you a tight feedback loop similar to modern web development: save the file and the PDF updates moments later. You can pass --no-pdf or --no-validate to speed things up during drafting.

Validating Resumes

YAMLResume provides a built-in schema that validates your resume before rendering. Add the schema header to your YAML file for IDE autocomplete, hover documentation, and real-time format checks:

# yaml-language-server: $schema=https://yamlresume.dev/schema.json

Run yamlresume validate my-resume.yml for clang-style diagnostics:

YAMLResume validate output

AI-Powered Resume Generation

New in v0.14, yamlresume ai generate creates a complete, schema-valid resume from a position and language:

export OPENAI_API_KEY=sk-...
yamlresume ai generate --position "Software Engineer" --language en resume.yml

Supported providers include OpenAI, DeepSeek, Kimi, and Ollama. Read the AI documentation for setup details.

Templates

YAMLResume ships with a growing set of templates across engines:

Engine Templates
LaTeX moderncv-banking, moderncv-casual, moderncv-classic, jake
HTML calm, vscode
DOCX calm

Run yamlresume templates list to see everything that is installed.

HTML Calm template HTML VS Code template DOCX Calm template

Languages

YAMLResume supports localization out of the box. Set your locale in resume.yml:

locale:
  language: en

Supported languages include English, Chinese (Simplified, Traditional TW/HK), Spanish, French, Norwegian, Dutch, Japanese, German, Indonesian, and Brazilian Portuguese. See the locale docs for the full list.

Ecosystem

YAMLResume provides a set of tools to help you create, convert, and manage your resumes more efficiently:

Contributing

YAMLResume is under active development and new features land regularly. Contributions are deeply appreciated. Please read the guidelines before submitting a pull request.

Star History

YAMLResume Star History Chart

Roadmap

  • more resume templates
  • more layout engines (typst, and others)
  • more languages and locales
  • ATS optimization features

Support the Project

If you find YAMLResume helpful, please consider supporting the project:

Buy Me a Coffee