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.10+

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.1.tar.gz (23.5 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.1-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cvforge-1.1.1.tar.gz
  • Upload date:
  • Size: 23.5 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.1.tar.gz
Algorithm Hash digest
SHA256 7a880de38f5d3df588841546313aa18a2cc8691d5ca9002e3512763508f8e066
MD5 00d7b32e0bc1fc3e8190c7cedbd401f0
BLAKE2b-256 d7f26d3db53a3391dd66f7d6c7fe652ab9be7e65ce8fffdb75d8ae7878207e17

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cvforge-1.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3bed8d8eba9f7ea830f9dc48e9166685a7edf23be235ef6c9fb06c5b179438c4
MD5 60d35253e12bbbce61708302e48b531c
BLAKE2b-256 0f5b467942bacb74a7f63404a649836db56f9f056e38d8c74f3c0841f511ff0e

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