Skip to content

Repository files navigation

CV Builder

A small, maintainable CV generator that turns structured profile data into clean HTML, Markdown, and PDF outputs.

The goal is not to replace design tools. The goal is to keep CV content versioned, reusable, multilingual, and easy to regenerate.

Open the live Vercel deployment

Quick Start

npm install
npx playwright install chromium
npm run validate -- --data ./data/example.cv.yml
npm run example:html
npm run example:markdown
npm run example:pdf

The example commands write generated files into ./output.

What It Does

CV Builder reads a structured YAML data file and generates one or more CV outputs.

Input format:

YAML

Supported outputs:

HTML
PDF
Markdown

The default workflow is:

cv.yml -> HTML -> optional PDF

HTML is generated first so the result can be reviewed, adjusted, printed manually, or converted into PDF by the tool.

Why This Exists

CVs are usually hard to maintain because the content and layout are mixed together.

This project separates:

data       -> who you are, what you did, what to show
templates  -> how the CV is structured
styles     -> how the CV looks
outputs    -> generated files

That makes it easier to:

- maintain one source of truth
- generate CVs in multiple languages
- adjust styling without rewriting content
- keep consistent HTML, Markdown, and PDF outputs
- version changes in Git

Local Usage

Validate your own CV source:

npm run validate -- --data ./path/to/your.cv.yml

Generate a single output:

npm run generate -- --data ./path/to/your.cv.yml --format html
npm run generate -- --data ./path/to/your.cv.yml --format markdown
npm run generate -- --data ./path/to/your.cv.yml --format pdf

Generate all outputs for all languages defined in the source file:

npm run example:all

Schema Expectations

At minimum, your YAML source needs:

- profile.name
- profile.headline
- profile.contact.email
- content

The content object must contain at least one language key, such as en or de.

If settings.defaultLanguage is omitted, the first language key in content becomes the default.

Each language block can include:

- summary
- sidebar
- experience
- projects
- education
- certifications
- languages
- publications

Download the current example source and schema here:

data/example.cv.yml
schema/cv.schema.json

AI Prompt Suggestion

If you want an AI to help convert an existing CV into the required source file, keep the prompt short and strict:

Rewrite the attached CV into valid YAML for the attached schema. Keep only factual content from the source CV, preserve dates and employers, keep the result concise, and return YAML only.

Vercel Deployment

This repository is Vercel-compatible with a small static frontend and Node.js API routes.

The deployed app provides:

- a browser UI for uploading/pasting CV YAML
- HTML and Markdown generation
- downloadable example data
- downloadable schema documentation

Use the browser's print dialog on the generated HTML if you want a PDF from the deployment.

After connecting the repo to Vercel, the root page at / serves the browser UI and the API routes provide the generated downloads.

Example Usage

cv-builder generate --data ./data/cv.yml --lang en --out ./output --format html
cv-builder generate --data ./data/cv.yml --lang en --out ./output --format pdf
cv-builder generate --data ./data/cv.yml --lang all --out ./output --format all

Suggested Project Structure

cv-builder/
  api/
  data/
    example.cv.yml
  public/
  schema/
    cv.schema.json
  src/
    cli/
    generator/
    templates/
    styles/
  output/
  README.md
  package.json
  vercel.json

Data Concept

The CV data file should support:

- shared profile data
- multiple languages
- summary sections
- sidebar sections
- work experience
- projects
- education
- certifications
- languages
- publications
- configurable visibility per output

A single CV data file can generate different language versions from the same source.

Output Strategy

The first supported output is HTML.

PDF generation uses the same HTML and CSS through a browser-based renderer.

This keeps styling predictable and makes manual review easy before final export.

License

MIT

About

A small, maintainable CV generator that turns structured profile data into clean, printable CV outputs.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages