simple-resume is a Python 3.10+ command-line tool and library that converts structured YAML resume data into polished PDF, HTML, or LaTeX output.
What is simple-resume?
simple-resume is an open-source (MIT-licensed) resume generator maintained on GitHub by athola. It accepts a YAML file (or a standard JSON Resume file) as input and produces PDF, HTML, or LaTeX output using bundled templates, so no separate theme installation is needed. The tool runs on Linux, macOS, and Windows, and requires Python 3.10 or newer; PDF rendering uses WeasyPrint, which needs Cairo, Pango, and GTK system libraries on Linux. It is distributed as a pip/uv package and also exposes a Python API for programmatic use.
Key Features
- Multi-format generation — One YAML source produces PDF (via WeasyPrint), HTML (with browser auto-reload preview), or LaTeX output for your own TeX toolchain.
- Six built-in resume templates —
resume_no_bars,resume_with_bars,resume_modern,resume_professional,resume_creative, anddemo, plus a dedicatedcovertemplate for cover letters, all shipped inside the package to avoid TemplateNotFound errors. - ATS resume scoring — Score a resume against a job description with four algorithms: TF-IDF + cosine similarity, Jaccard + n-gram overlap, exact keyword matching with a skills taxonomy of 800+ entries from O*NET and LinkedIn, and optional BERT semantic embeddings (via the
bertextra). - YAML and JSON Resume support — Native YAML schema with editor autocomplete from a bundled JSON Schema, and automatic conversion of any
*.jsonJSON Resume file when placed in the input folder. - Customization options — Choose built-in color palettes or load a custom palette YAML, point to custom Jinja2 HTML templates with
--templates-dir, and switch output mode to LaTeX via configuration. - CLI and Python API — Run batch generation with
simple-resume screen resumes/ --batch --top 5, or script workflows withgenerate(),preview(),score_resume(), andResumeSession. - Git-friendly workflow — Resume content lives as plain YAML in a private input directory, enabling version control and 100% local processing without cloud storage.
Who is it for?
- Developers and technical job seekers who want to version-control their resume as plain YAML and generate polished PDF/HTML from the command line.
- Applicants optimizing for ATS who need to score their resume against specific job descriptions and iterate, using the built-in screen command with its four scoring algorithms.
- Privacy-conscious users who prefer local processing—simple-resume runs entirely on your machine, unlike cloud-only resume builders.
- Automation-oriented teams that want to produce resumes or rank candidates in batch, via the Python API or the CLI's batch screening mode.
What can you do with simple-resume?
- Create a PDF resume instantly — Put a YAML file in
resume_private/input/and runsimple-resume generate --format pdfto get a WeasyPrint-rendered PDF. - Preview in the browser — Generate HTML with the
--openflag to launch a live-reload preview as you edit your YAML. - Screen resumes against a job description — Run
simple-resume screen resume.yaml job.txtto get an overall match score, with a--mode humanoption for semantic similarity emphasis and--batchto rank all resumes in a directory. - Customize for each application — Swap palettes, templates, or LaTeX output per role without rewriting your content, then export different formats from a single source.
How does simple-resume work?
Create a YAML file (or drop in a JSON Resume) under the input directory, then run simple-resume generate --format pdf or --format html. The CLI loads the data, applies the selected template and palette, and renders the output; a preview() Python function serves an HTML page with auto-reload for live editing.
Pricing
simple-resume is free and open source under the MIT License. There are no paid tiers or cloud services; all rendering and scoring run locally.
Alternatives
- JSON Resume — open source, but uses JSON themes and offers no LaTeX support or ATS scoring.
- HackMyResume — open source with support for multiple output formats, yet lacks native Python API and built-in ATS scoring.
- Resume.io — a proprietary web builder with cloud storage and a paid-only custom theme system.
FAQ
Is simple-resume free?
Yes, simple-resume is released under the MIT License, so it is free to use, modify, and distribute. There are no paid tiers or feature gates; the entire CLI and Python API are available locally.
What Python version does simple-resume require?
simple-resume requires Python 3.10 or newer and runs on Linux, macOS, and Windows. PDF output uses WeasyPrint, which on Linux depends on system libraries like Cairo, Pango, and GTK—see the Usage Guide for installation details.
Can I use my existing JSON Resume file?
Yes, simple-resume supports JSON Resume files. Place a *.json file in your input directory and it is automatically converted to the internal schema at load time. Editor autocomplete for YAML is provided via the bundled JSON Schema.
How do I fix a TemplateNotFound error?
TemplateNotFound usually means the packaged assets are missing. Confirm your installation includes the bundled HTML templates and static files; if you use custom templates, pass the --templates-dir flag pointing to the directory containing them.
Does simple-resume require an internet connection?
No, all generation and ATS scoring run locally with no network access. The only optional network dependency is the BERT semantic scorer, which downloads a model via sentence-transformers when you install the bert extra.







