A modern, modular, and feature-rich CV template for Typst.
v4 is a breaking change. Coming from v3? See the Migration Guide for the v3 fields that now panic with a migration message (
language,non_latin_font,[lang.<code>],inject_ai_prompt, β¦) and their v4 replacements.
β¨ Key Features
- One profile, one complete CV β bind it to anything β Each
profile_<name>/is a self-contained variant you can target at a specific job, audience, or language, switched with--input profile=<name>at compile time. Profiles are fully decoupled from language: any script (CJK, Arabic, Hebrew, β¦) works via[layout.fonts]. - Compose from modular content β Build each CV from reusable blocks (experience, education, projects, publications, skills), and keep as many tailored variants as you need β a long academic version, a one-page industry cut, one per application β from the same building blocks.
- Polished by default β Clean, modern typography with Font Awesome icons and a matching cover letter, for a professional result without fighting the layout.
Quick Start
typst init @preview/brilliant-cv # scaffolds a project directory with the template
cd brilliant-cv
Using Typst Web? Upload the Font Awesome 7 Free desktop OTF files (Regular, Solid, and Brands) to your project so the contact icons render correctly.
Edit profile_en/metadata.toml and the content modules in profile_en/*.typ β itβs the most heavily annotated profile. To add a new variant, copy the directory and tweak the fields that differ.
typst compile cv.typ # default profile
typst compile cv.typ --input profile=fr # switch profile at compile time
Optional: embed a hidden, ATS-friendly keyword layer for automated screeners β opt-in and off by default. Read the notes in
profile_en/metadata.tomlbefore enabling, and keep keywords truthful.
Full guide, component gallery, recipes, and configuration reference β brilliant-CV Documentation.
Gallery
The same design across scripts β one profile per language, all from the same building blocks:
| English | FranΓ§ais | δΈζ |
|---|---|---|
![]() |
![]() |
![]() |
Previews are generated in CI from the live template (just previews).
Contributing
Contributions are welcome β see the project repository for the contribution guide.
Sponsors
If this template helps you land a job, consider buying me a coffee! βοΈ




