Skip to main content

ATS-friendly CV/Resume builder using YAML and Typst

Project description

CVForge

A YAML-based, ATS-compatible CV/Resume generator powered by Typst.


Why This Tool?

I created CVForge because I needed a fast, reliable way to build and rebuild my resume without:

  • Using Word or clunky desktop apps
  • Trusting random online resume builders with my personal data
  • Spending time on formatting instead of content

CVForge lets you define your CV once in YAML and regenerate it instantly. Change a job title, add a skill, rebuild — done. 100% local, 100% private.


Requirements

  • Typst: Must be installed and available in your PATH
  • Python 3.8+

Installation

Using UV (Recommended)

# Run without installing
uvx cvforge init
uvx cvforge cv.yaml

# Or install as a tool
uv tool install cvforge
cvforge cv.yaml

# Update
uv tool upgrade cvforge

# Uninstall
uv tool uninstall cvforge

Using Pip

# Install
pip install cvforge

# Update
pip install --upgrade cvforge

# Use
cvforge cv.yaml

Usage

Command Description
cvforge init Creates a template cv.yaml
cvforge <file.yaml> Generates PDF from YAML
cvforge fonts Lists available fonts
cvforge ats-check <file.pdf> Checks PDF for ATS compatibility

Configuration

Language

The language parameter controls the section headings in your CV (e.g., "Experience" vs "Deneyim"). It does not translate your content.

language: "en"  # English headings (default)
language: "tr"  # Turkish headings

Fonts

Run cvforge fonts to see available options. The font must be installed on your system.

font: "roboto"  # Options: noto, roboto, inter, lato, arial, times, calibri, etc.

YAML Structure

Field Required Description
language No Section heading language: "en" (default) or "tr"
font No Font family (run cvforge fonts to list options)
name Yes Your full name
role Yes Job title / professional role
email Yes Contact email
phone No Phone number
location No City, Country
website No Personal website URL
website-text No Custom display text for website link
linkedin No LinkedIn profile URL
linkedin-text No Custom display text for LinkedIn link
github No GitHub profile URL
github-text No Custom display text for GitHub link
photo No Path to profile photo
photo-width No Photo width (default: "2.5cm")
summary No Professional summary paragraph
skills No List of skill categories with items
experience No Work experience entries
education No Education entries
projects No Project entries
certifications No Certification entries
awards No Award entries
languages No Language proficiencies
interests No List of interests/hobbies

Run cvforge init to generate a complete example YAML file with all fields.


Features

  • Cross-platform: Linux, Windows, macOS
  • ATS Compatible: Clean, parseable text
  • Multi-language: EN/TR section headings
  • 17 fonts available
  • Built-in ATS checker
  • Photo support
  • 100% Local & Private

Support

If you find this project useful, consider supporting its development:

Buy Me A Coffee


License

This project is licensed under the MIT License.

© 2025 Ahmet Burhan Kayalı

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cvforge-1.1.0.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cvforge-1.1.0-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file cvforge-1.1.0.tar.gz.

File metadata

  • Download URL: cvforge-1.1.0.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cvforge-1.1.0.tar.gz
Algorithm Hash digest
SHA256 71dee84e69931d781363b922b079f407090cca758e07f77a6e38ac494a5fb601
MD5 f808c45a9a927b914fb07d40bc70d862
BLAKE2b-256 75c8c1e42710baf51c9e9422c605db2b25372b0566d15b8b19dc47672622da30

See more details on using hashes here.

File details

Details for the file cvforge-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: cvforge-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cvforge-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07afd0d15260897e107df83fa4d98274a4ebb7075a8b6000f33613d7018f99e8
MD5 c33cc6318beae00d98af048654628132
BLAKE2b-256 8f074c7ef0b7b0c60abcd9f7583f019fe832b9907b604bea7ea15ac40d7ba0c4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page