Generate polished PDF and HTML resumes from a single YAML file.
simple-resume
simple-resume is a Python 3.10+ CLI and library for converting structured YAML into production-ready resumes (PDF, HTML, or LaTeX). Templates and static assets ship with the package such that users can render without needing to create additional content.
Supported platforms
- Python: 3.10+ (tested in CI)
- OS: Linux, macOS, Windows. PDF output uses WeasyPrint; ensure Cairo/Pango/GTK are available on your platform (see Usage Guide).
Installation
# With uv (recommended) uv add simple-resume # With pip pip install simple-resume
Why Simple-Resume
- Keep your resume version-controlled as plain YAML.
- Swap templates, palettes, and formats without rewriting content.
- Pure-Python core with shell adapters; effects are testable and side-effect aware.
- Bundled HTML templates and static assets prevent "TemplateNotFound" errors in wheels/editable installs.
Feature Comparison
| Feature | simple-resume | JSON Resume | HackMyResume | Resume.io |
|---|---|---|---|---|
| Open Source | ✓ | ✓ | ✓ | ✗ |
| Data Format | YAML | JSON | JSON/FRESH | Proprietary |
| Version Control | ✓ Git-friendly | ✓ Git-friendly | ✓ Git-friendly | ✗ Cloud-only |
| Local Processing | ✓ 100% private | ✓ 100% private | ✓ 100% private | ✗ Cloud storage |
| Template System | HTML + Jinja2 | JSON themes | Multiple formats | Web builder |
| LaTeX Support | ✓ Professional | ✗ | ✗ | ✗ |
| Python API | ✓ Native | ✗ | ✗ | ✗ |
| CLI Tools | ✓ | ✓ | ✓ | ✗ |
| Real-time Preview | ✓ HTML + auto-reload | ✗ | ✗ | ✓ |
| Custom Themes | ✓ Unlimited | ~ Limited | ~ Limited | ~ Paid only |
| Color Palettes | ✓ Professional | ✗ | ~ Basic | ~ Limited |
| Privacy | ✓ | ✓ | ✓ | ✗ Data stored on servers |
| Setup Time | 5 min | 10 min | 15 min | 2 min |
| Learning Curve | Moderate | Easy | Easy | Easiest |
Key Advantages
Best for Developers: Version control, automation, Python integration, privacy Best for Privacy: 100% local processing with no data exposure Most Flexible: HTML templates + unlimited customization Professional Output: LaTeX typesetting for academic/technical resumes
Legend: ✓ = Supported, ✗ = Not Supported, ~ = Limited
See Detailed Comparison for full analysis and use case recommendations.
Development setup
git clone https://github.com/athola/simple-resume.git cd simple-resume uv sync --dev --extra utils # or: pip install -e .[dev,utils]
Quick start (CLI)
Create a minimal YAML in resume_private/input/my_resume.yaml:
template: resume_no_bars full_name: Jane Doe email: jane.doe@example.com body: Experience: - title: Senior Engineer company: TechCorp start: 2022 end: Present description: | - Lead microservices migration - Improved latency by 40%
Generate output:
uv run simple-resume generate --format pdf # PDF uv run simple-resume generate --format html --open # HTML + open in browser
Built-in templates: resume_no_bars, resume_with_bars, demo.html (see src/simple_resume/shell/assets/templates/html/). Static assets live under .../assets/static/.
Python API
from simple_resume import generate, preview from simple_resume.shell.generate import GenerateOptions options = GenerateOptions(formats=["pdf", "html"], template="resume_with_bars") results = generate("resume_private/input/my_resume.yaml", options) print(results["pdf"].output_path) # Browser preview preview("resume_private/input/my_resume.yaml")
For batch operations:
from simple_resume.shell.session import ResumeSession with ResumeSession(data_dir="resume_private") as session: session.generate_all(format="pdf")
Customization
- Palettes:
--palette "Professional Blue"or--palette path/to/palette.yaml. - Custom templates:
--template custom.htmlwith--templates-dir /path/to/templates. - LaTeX: set
config.output_mode: latexand compile with your TeX toolchain (see Usage Guide). - Color utilities:
simple_resume.core.colors.get_contrasting_text_colorfor accessibility checks.
Release workflow
Releases are automated via GitHub Actions. To create a new release:
# Tag the version (must start with 'v')
git tag v0.1.2
git push origin v0.1.2The workflow builds the package, generates a changelog from commit history, and publishes a GitHub release with distribution artifacts.
Workflows & docs
- Guides: Getting Started, Usage, Workflows, Path Handling.
- Architecture: Architecture Guide and
wiki/architecture/. - Migration: Migration Guide plus Generate module migration.
- Development: Development Guide, Contributing, PDF renderer evaluation.
- Samples:
sample/directory;sample_dark_sidebar.htmlpreview.
Troubleshooting
TemplateNotFound: confirm installation includes packaged assets (bundled in wheels/editable installs); custom templates require--templates-dir.- PDF on Linux: install system libs
cairo,pango,gdk-pixbuf(WeasyPrint requirement).
Contributing
- Follow the Development Guide to set up tools.
- Run
make lintandmake test(ormake check-all validate) before opening a PR. - Submit issues or ideas in GitHub Issues or discussions.
License
MIT License. See LICENSE.
