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 (plain) | CV (friggeri) |
|---|---|
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 fontstotypst 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.