A clean, professional, and ATS-friendly resume and cover letter bundle built with Typst. The layout is optimized for Software Engineering roles and is highly adaptable for the German/EU market.
This project uses a Jinja2 templating system to generate the .typ files from a central config.toml file, making it easy to manage your information and generate documents.
| Resume | Cover Letter |
|---|---|
| • Two-column grid layout • Dark navy sidebar • Professional typography • Skill progress bars • ATS-parseable text flow • Circular profile picture |
• DIN 5008 compliant (German standard) • Positioned address fields for window envelopes • Fold marks for easy mailing • Clean, single-column layout • Matches resume's typography • Separated content and logic |
- Data-Driven: All content is stored in
config.toml, providing a single source of truth. - Templated: Jinja2 templates separate content from layout, allowing for flexible and maintainable design.
- Streamlined Workflow: A single script to
build,compile, andcleanall documents. - Organized Output: All generated PDFs are stored in a dedicated
output/directory. - ATS Friendly: The resume uses a standard text flow that Applicant Tracking Systems can easily parse.
- German/EU Ready:
- Resume: Supports profile pictures and personal details common in the DACH region.
- Cover Letter: Compliant with DIN 5008 for professional letter formatting.
- Modular & Customizable: Easily extend or modify the templates and data structure.
- Typst CLI: Required to compile the generated
.typfiles into PDFs. - Python 3.11+: Required to run the generation script (uses
tomllib).
.
├── templates/
│ ├── coverletter.typ.j2
│ └── resume.typ.j2
├── coverletter/
│ └── template.typ
├── cv/
│ ├── template.typ
│ ├── lang.toml
│ └── img/
│ └── profile.png
├── output/ # (Generated PDFs appear here)
├── config.toml # <-- All your content goes here
├── main.py # (Build script)
├── pyproject.toml
└── README.md
This project uses uv for package management, as defined in pyproject.toml.
With uv:
uv syncOpen config.toml and fill in your personal information, work experience, skills, and other details. You can also define one or more cover letters.
Use the generate.py script to manage your documents.
A) Build & Compile Everything
To generate the .typ files and then immediately compile them into PDFs in the output/ directory, run:
uv run main.py build
uv run main.py compileB) Clean Up
To remove all generated .typ and .pdf files from the cv, coverletter, and output directories, run:
uv run generate.py cleanThis will produce your resume and cover letters as PDFs in the /output directory.