Universe

Create project in app

GitHub CI build Sponsor

Cyber/terminal-themed professional CV and cover-letter as Typst template with Markdown support. Modern and clean design optimized for ATS text-extractors and human reviewers. Targets PDF/UA-1, text colors clear WCAG AA contrast, and togglable style vaiants (icons, footer, accent colors, logos, section notes).

Inspired by brilliant-cv and friggeri-cv-letter.

Preview

CV Letter
CV preview Letter preview
CV (plain) CV (friggeri)
Plain CV preview Friggeri CV preview

Usage

Install dependencies

Install Typst and Pandoc system-wide, or in local .venv/ dir:

$ git clone https://github.com/gw0/cyber-cv-letter.git
$ cd cyber-cv-letter
$ make setup      # creates .venv/, vendors pandoc + typst into it
$ . .venv/bin/activate # puts typst/pandoc/python3 on PATH

Typst Workflow

Basic example CV (full example in examples/typst/cv.typ):

#import "@preview/cyber-cv-letter:0.1.0": cv

#show: cv.with(
  author: (
    name: "Sarah Connor",
    tagline: "AI Security Engineer · Adversarial ML & Red Teaming",
    email: "sarah@example.com",
    location: "Austin, USA",
    links: ("github.com/sconnor",),
  ),
)

= EXPERIENCE

== Senior AI Security Engineer | 2023 -- Present
_Cyberdyne Systems | Austin, USA_

Leading red-team engagements against internal LLM-powered products.

- Built a prompt-injection fuzzing harness that surfaced 40+ jailbreaks pre-release.
  #quote(block: true)[Custom mutation engine, wired into the release-gate CI job.]

`[Python · PyTorch · Kubernetes]`

/ Security: Threat modeling, Burp Suite, Nmap

Compile your CV via Typst CLI:

$ typst compile mycv.typ

See complete reference examples examples/typst/cv.typ and examples/typst/letter.typ for available options.

Alternatively, use a local copy of this repo: register it under a local preview/ package path and point --package-path/--font-path at it. The import stays identical to the published one above:

$ mkdir -p .typst-packages/preview/cyber-cv-letter
$ ln -sfn /path/to/cyber-cv-letter .typst-packages/preview/cyber-cv-letter/0.1.0
$ typst compile mycv.typ --package-path .typst-packages \
  --font-path .typst-packages/preview/cyber-cv-letter/0.1.0/fonts
#import "@preview/cyber-cv-letter:0.1.0": cv

Markdown Workflow

Not available as part of this Typst Universe package (Pandoc is not bundled). See the full repo at https://github.com/gw0/cyber-cv-letter#markdown-workflow to use it locally.

Development

This repo builds and tests its own examples locally (nothing is installed system-wide):

$ make setup      # creates .venv/, vendors pandoc + typst into it
$ . .venv/bin/activate # puts typst/pandoc/python3 on PATH
$ make examples   # builds the 8-PDF example matrix (cv/cv-plain/cv-friggeri/letter × typst/markdown)
$ make test       # contrast, spacing, ATS-extraction, and rendered-layout checks (tests/)
$ make thumbnails # renders the preview PNGs above
$ make publish    # stages a Typst Universe submission and prints the remaining steps

make publish prints the exact remaining steps to submit the staged package to typst/packages (submission guidelines).

Known limitations

  • No cross-page “keep together” grouping: a section header or skills row can split across a page boundary from its first entry/row.
  • A published package can’t bundle its own fonts (IBM Plex Mono/Sans) onto a consumer’s font search path — without them installed, Typst falls back to automatic substitution. Install IBM Plex Mono and IBM Plex Sans system-wide (e.g. from Google Fonts), or clone this repo and pass --font-path fonts to typst compile, the same way this repo’s own build does.

License

AGPL-3.0-or-later — see LICENSE. Bundled fonts (fonts/) and icons (icons/) carry their own licenses in the same directories.

If my CV/cover-letter template lands you a good job, consider sponsoring the work that keeps it maintained — and tell whoever else benefits, human or agent.