Skip to main content

YAML -> LaTeX -> PDF resume builder with strict theme schemas.

Project description

resumex

PyPI Tests

An easy, YAML-based, theme-driven resume generator. resumex takes your structured data and produces professional LaTeX and PDF resumes with strict schema validation.

Features

  • YAML-first: Store your career data in a clean, versionable format.
  • Strict Validation: Powered by Pydantic to ensure your data matches your theme's requirements.
  • Theme System: Fully customizable layouts using Jinja2 templates.
  • Dual Usage: Use it via CLI or as a Python module in your own scripts.
  • Smart Compilation: Automatically handles LaTeX runs using latexmk or falls back to direct engines like pdflatex.

Installation

Requirements

  • Python: 3.12 or higher.
  • LaTeX: A distribution (like TeX Live, MacTeX, or MiKTeX) providing latexmk (recommended) or pdflatex.

Using uv (Recommended)

uv tool install resumex-py

Using pip

pip install resumex-py

Quickstart

  1. Create your resume: Save your data in resume.yaml (see examples/resume.yaml).
  2. Generate PDF:
    resumex build resume.yaml --out build
    
  3. Generate TeX only:
    resumex tex resume.yaml --out build
    

Custom Themes

resumex allows you to go beyond the bundled themes by creating your own.

Using a local theme

You can point the generator to a folder containing your theme:

resumex build resume.yaml --theme ./path/to/my-theme

Theme Structure

A theme directory must contain:

  • theme.yaml: Configuration for allowed sections, templates, and models.
  • templates/main.tex.j2: The main entry point for the resume layout.
  • partials/: Reusable Jinja2 fragments for specific sections.

To start a new theme, copy the default theme data from the package:

cp -r src/resumex/themes_data/default ./my-theme

Module Usage

You can also integrate resumex into your Python applications:

from pathlib import Path
from resumex.engine.pipeline import build_pdf

result = build_pdf(
    yaml_path=Path("resume.yaml"),
    theme_id="default",  # or a path like "./my-theme"
    out_dir=Path("output")
)

print(f"Resume generated at: {result.pdf_path}")

Development & Testing

We use uv for development. To run tests:

uv run pytest tests/

License

MIT

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

resumex_py-0.1.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

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

resumex_py-0.1.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file resumex_py-0.1.0.tar.gz.

File metadata

  • Download URL: resumex_py-0.1.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for resumex_py-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bea9bc083f122e8dee73311a4f8234a66f09ec5f5ba471127a09ef578298e4ad
MD5 13e956cc7f75e991da42d4ac93b0ba89
BLAKE2b-256 dfeea13eb6165f919c0306bf6a31792a33aa5c8adef3146ed153c259041998f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for resumex_py-0.1.0.tar.gz:

Publisher: publish.yml on rsm-vsivasankaran/resumex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file resumex_py-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: resumex_py-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for resumex_py-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c53edb033bab84ebd1e1f35159d36c3c2aa04b873d0e262f8ae3e41f4518a99
MD5 6d3f5b2c96141baa96bc2bcfab40fd9b
BLAKE2b-256 3414e38471dcfb21d7719cb19f7df937303d21d55f7ab79d5ff33c99449e9dac

See more details on using hashes here.

Provenance

The following attestation bundles were made for resumex_py-0.1.0-py3-none-any.whl:

Publisher: publish.yml on rsm-vsivasankaran/resumex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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