vitae

vitae is a resume/CV generator in Guile Scheme. You write your resume or cover letter as a Scheme data value; vitae renders it to HTML, LaTeX, Typst, Markdown, or JSON Resume.

A resume is a Scheme file whose last expression is a <resume> record. vitae new <path> (or vitae new --letter <path>) scaffolds a runnable starting point.

Most renderers (HTML, LaTeX, Typst, Markdown) drive a generic walker over the document, so look-and-feel is customised by inheriting from the format's default walker and overriding only the slots you care about — primitives, document chrome, or per-element rendering. JSON Resume uses its own whole-document backend instead.

Built-in renderers: html, latex, typst, markdown, and json. Run vitae list-renderers to list them.

Usage

A minimal resume:

(use-modules (vitae data))

(make-resume
 #:person (make-person #:name "Jane Doe" ...)
 #:sections (list ...))

Build it:

vitae build my-resume.scm --renderer typst -o out.typ

Requirements

Installation

From a fresh checkout:

./bootstrap && ./configure && make
sudo make install

Or via Guix:

guix install -f guix.scm

License

GPL-3.0-or-later

Git Repository

vitae is developed using the Git version control system. The official repository is hosted at https://git.sr.ht/~campbellr/vitae.

To clone the repository, run:

git clone https://git.sr.ht/~campbellr/vitae

For full details, see the README at https://git.sr.ht/~campbellr/vitae.

Contributing

Patches and bug reports welcome — see the repository for details.