Write your resume in a single YAML file. Get a clean, web-hosted resume and a print-ready PDF — no design tools, no Word docs, no fiddling with margins.
Live demo: https://troll-warlord.github.io/yaml-resume
Prerequisites: Node.js 22+
# 1. Clone the repo
git clone https://github.com/troll-warlord/yaml-resume.git
cd yaml-resume
# 2. Create your resume from the example
copy resume.example.yaml resume.yaml # Windows
# cp resume.example.yaml resume.yaml # Mac / Linux
# 3. Install and run
npm install
npm run devOpen http://localhost:5173 to see your resume. Edit resume.yaml and the page hot-reloads instantly.
resume.yamlis gitignored — it will never be accidentally committed to this repo. Keep it in a separate private repository.
npm run build
npm run pdfThis produces resume.pdf in the project root — pixel-perfect, no browser headers or footers.
npm run pdfrequires the dev/preview server to be running. It will start one automatically if needed.
Everything lives in resume.yaml. There are three top-level keys: basics, config, and sections.
Your personal and contact information.
basics:
name: Jane Smith
label: Senior Product Engineer
email: jane@example.com
phone: +1 (555) 000-0000
location:
city: New York
region: NY
country: USA
summary: >
A brief paragraph shown under your name. Keep it 2-3 sentences.
social:
- network: LinkedIn
url: https://linkedin.com/in/janesmith
icon: linkedin
- network: GitHub
url: https://github.com/janesmith
icon: github
- network: Portfolio
url: https://janesmith.dev
icon: globeSupported icons: linkedin, github, globe, mail, phone, map-pin
Controls how the resume looks and behaves. All fields are optional — defaults are shown below.
config:
showDuration: false # Show "3 yrs 2 mos" next to dates
showLocation: true # Show city/location on timeline entries
bulletMarker: '>' # Bullet prefix character — try '-', '•', '›'
dateLocale: 'en-US' # Date format locale — e.g. 'en-GB' for UK dates
accentColor: '#2563eb' # Primary colour — drives icons, borders, links
pageSize: 'A4' # PDF page size — 'A4' or 'Letter'An ordered list of sections. Each section needs an id, title, and type.
- id: about
title: About Me
type: text
content: >
Write anything here. Good for a summary or personal statement.- id: highlights
title: Professional Summary
type: list
bullets:
- First bullet point
- Second bullet point
- Third bullet point- id: experience
title: Experience
type: experience
items:
- designation: Senior Engineer
organization: Acme Corp
location: San Francisco, CA # optional
startDate: '2021-03' # YYYY-MM format
endDate: null # null = present
current: true
bullets: # optional
- Led migration to microservices
- Mentored a team of 5 engineersOptional flags on the section:
| Flag | Effect |
|---|---|
flipHierarchy: true |
Swaps organisation and designation — useful for certifications where the cert name is more important than the issuing body |
breakInside: true |
Prevents this section from splitting across PDF pages — recommended for short sections like Education and Certifications |
Optional fields on each item:
| Field | Effect |
|---|---|
url |
Adds an external-link icon next to the heading — useful for credential links |
location |
Shows a map-pin with the city |
bullets |
List of achievement bullet points |
Certifications example (using flipHierarchy and url):
- id: certifications
title: Certifications
type: experience
flipHierarchy: true
breakInside: true
items:
- designation: Certified Kubernetes Application Developer (CKAD)
organization: Cloud Native Computing Foundation
url: https://www.credly.com/badges/your-badge-id
startDate: '2023-04'
endDate: '2026-04'
current: false- id: skills
title: Skills
type: skills
items:
- group: Languages
tags: [TypeScript, Python, Go]
- group: Frontend
tags: [Vue 3, React, Tailwind CSS]- id: projects
title: Projects
type: projects
items:
- title: My Project
url: https://github.com/you/project
description: One-line description of what it does.
tags: [Vue, Vite, Open Source]An optional list of keywords embedded in the PDF for ATS (Applicant Tracking System) scanners. They are invisible to human readers but present in both the PDF content stream and the PDF Keywords metadata field - so ATS tools that extract text from PDFs will index them.
Use this to list every skill, tool, or technology you want indexed without cluttering the visual skills section
atsKeywords:
- TypeScript
- Node.js
- PostgreSQL
- Docker
- Kubernetes
- REST API
- CI/CD| Command | What it does |
|---|---|
npm run dev |
Start local dev server with hot reload |
npm run build |
Type-check and build for production |
npm run preview |
Serve the production build locally |
npm run pdf |
Generate resume.pdf from the production build |
npm run format |
Auto-format all source files with Prettier |
npm run lint |
Check for lint errors |
npm run lint:fix |
Auto-fix lint errors |