Skip to main content

Build clean, ATS-friendly PDF resumes from YAML with Typst.

Project description

CVForge

PyPI version Downloads License: MIT

CVForge is a CLI that turns a YAML file into a clean, ATS-friendly PDF resume using Typst. Edit your content, rerun the command, and regenerate the same layout locally. Ideal for fast iteration and version control.


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.


Installation

Using UV (Recommended)

# Install as a tool
uv tool install cvforge

# Update
uv tool upgrade cvforge

# Uninstall
uv tool uninstall cvforge

Using Pip

# Install
pip install cvforge

# Update
pip install --upgrade cvforge

# Uninstall
pip uninstall cvforge

Usage

# Initialize a new CV
cvforge init

# Generate PDF from YAML
cvforge cv.yaml
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.

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.2.0b1.tar.gz (25.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.2.0b1-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file cvforge-1.2.0b1.tar.gz.

File metadata

  • Download URL: cvforge-1.2.0b1.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.2.0b1.tar.gz
Algorithm Hash digest
SHA256 834090b4847f1d1739860ea5c4ad8ff3c9943aa8300686d0333ee949ca77c3e9
MD5 9eb1ea73d63bff776203dee1f50d293c
BLAKE2b-256 9fe4232a09a5039b4288fa297cf79bb4c6ffd1a42d62e4c33a8df7b00c9f0c0a

See more details on using hashes here.

File details

Details for the file cvforge-1.2.0b1-py3-none-any.whl.

File metadata

  • Download URL: cvforge-1.2.0b1-py3-none-any.whl
  • Upload date:
  • Size: 18.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.2.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 25c1147fb484b011e2a2241896a44289c7304c8c8142a7ca9f57af56a67ae43c
MD5 04655868c7c6cd0b2887f06e6718d43d
BLAKE2b-256 efb8eda97018e828007cad375ec632f97fb9a33f6275c54ff202cef9961bc407

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