Resume Generator is a hybrid CLI + desktop GUI application for turning structured configuration files into polished resumes. Run the binary with no arguments to launch the desktop app, or pass arguments to use the CLI. It supports multiple template formats — LaTeX, HTML, and DOCX — and ships with a flexible template system so you can generate professional PDFs and Word documents from YAML, JSON, or TOML data.
Left: Modern HTML template | Right: Modern LaTeX template
Native desktop app with template gallery and live PDF preview
- Desktop GUI: Native desktop app with drag-and-drop resume files, live PDF preview, template gallery, and save as PDF/DOCX
- Multiple Template Types: Generate output from LaTeX, HTML, or DOCX templates with the same data model
- DOCX Support: Native Word document generation for easy editing in Microsoft Word or Google Docs
- Data-Only Inputs: Provide resume content as YAML, JSON, or TOML; the tool selects templates and output targets
- Template System: Modular templates with embedded assets; customize or create new templates per project
- Robust Path Resolution: Works from any directory, supports
~, relative paths, and dated output workspaces
- CLI Commands: Validate inputs, preview data, list templates, generate outputs, and export JSON schema (the GUI is also available for all generation tasks)
- Schema Generation: Generate JSON Schema for IDE integration and validation
- Go 1.24+
- Node.js 22+ (for frontend build)
- TeX Live or compatible LaTeX engine (only needed for LaTeX templates)
- Wails CLI — required for building the desktop app and running dev mode
- just for helper commands
Rod auto-downloads a compatible Chromium binary on first use — no manual installation required. To use an existing browser instead (useful for CI), set the ROD_BROWSER_BIN environment variable:
export ROD_BROWSER_BIN="/usr/bin/chromium-browser"Download and install the latest release binary to ~/.local/bin:
curl -fsSL https://raw.githubusercontent.com/urmzd/resume-generator/main/install.sh | bashSupports macOS (Apple Silicon) and Linux (x86_64). After installation, run resume-generator from anywhere.
-
Clone the Repository
git clone https://github.com/urmzd/resume-generator.git cd resume-generator -
Build the CLI
go build -o resume-generator . -
Generate a Resume
./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-html
Pre-built desktop binaries for macOS, Linux, and Windows are available on the Releases page. Download the latest release for your platform and run it — no build tools required.
To build from source instead (requires Wails CLI):
-
Build the desktop app:
wails build
-
Launch the GUI by running the binary with no arguments:
./build/bin/resume-generator
Note:
go buildproduces a CLI-only binary (no GUI). Usewails buildfor the full desktop app with embedded frontend.
-
Generate Resume
# Generate PDF from an HTML template ./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-html # Generate an editable DOCX ./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-docx # Generate with multiple templates (creates separate outputs for each) ./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-html -t modern-latex # Generate with all available templates (if -t is omitted) ./resume-generator run -i assets/example_resumes/software_engineer.yml # Use comma-separated template names ./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-html,modern-latex # Custom output root with multiple templates ./resume-generator run -i assets/example_resumes/software_engineer.yml -o outputs/custom-run -t modern-html -t modern-latex # Validate configuration ./resume-generator validate assets/example_resumes/software_engineer.yml # Preview without generation ./resume-generator preview assets/example_resumes/software_engineer.yml # List available templates ./resume-generator templates list # Check available LaTeX engines ./resume-generator templates engines
-
Path Resolution
The CLI supports flexible path resolution:
- Relative paths:
./assets/example_resumes/software_engineer.yml,../data/resume.yml - Absolute paths:
/Users/name/Documents/resume.yml - Home directory:
~/Documents/resume.yml - Custom output locations: Specify any directory path for generated artifacts
- Directory output: Provide a directory, and a dated workspace will be created (with PDF + debug artifacts)
- Aliases: Use
-o/--output-dir(alias--output-root) to control the root output folder
Examples:
# Relative input, custom output root ./resume-generator run -i assets/example_resumes/software_engineer.yml -o outputs/my_resume # Absolute paths ./resume-generator run -i /path/to/resume.yml -o /path/to/output-directory # Home directory paths ./resume-generator run -i ~/resumes/resume.yml -o ~/Documents/resumes # Output to directory (creates dated workspace) ./resume-generator run -i resume.yml -o ~/Documents/resume-exports
Each run results in structured directories:
- Single template:
outputs/first[_middle]_last/YYYY-MM-DD/<template_name>/first[_middle]_last_resume.pdf - Multiple templates: Each template gets its own subdirectory with the same structure
- Debug artifacts: A matching
<resume_basename>_debug/folder in each template directory preserves the rendered.tex/.html,.log,.aux, and supporting class files.
For example, when generating with multiple templates:
~/Documents/ResumeGeneratorOutputs/ └── john_doe/ └── 2025-10-25/ ├── modern_html/ │ ├── john_doe_resume.pdf │ └── john_doe_resume_debug/ │ └── john_doe_resume.html └── modern_latex/ ├── john_doe_resume.pdf └── john_doe_resume_debug/ ├── john_doe_resume.tex ├── john_doe_resume.log └── john_doe_resume.aux - Relative paths:
Run the binary with no arguments to launch the GUI:
./resume-generatorThe desktop app provides:
- Template gallery — browse and select from available templates
- Live PDF preview — see your resume rendered in real time
- Native file picker — open resume data files (YAML, JSON, TOML) via drag-and-drop or file dialog
- Export — save output as PDF or DOCX
- HTML Templates: Modern responsive templates in
templates/*-html/ - LaTeX Templates: LaTeX-based templates in
templates/*-latex/ - DOCX Templates: Editable Word document templates in
templates/*-docx/ - Custom Templates: Create your own templates following the provided patterns
Resume inputs should contain only the data you want to render — template selection, output formats, and destination paths are handled entirely by the CLI or the desktop app.
Use the CLI to explore or apply templates:
# List available templates
./resume-generator templates list
# Generate a resume with a specific template
./resume-generator run -i resume.yml -t custom-templateTo customize your resume, edit the source data file (e.g., software_engineer.yml) with your personal information, experiences, and skills. The tool supports YAML, JSON, and TOML inputs.
The project includes a justfile with convenient commands:
# Install Go deps + npm packages
just init
# Build CLI-only binary (no GUI, no CGO)
just install
# Build desktop app with Wails
just build-desktop
# Build CLI and generate a resume (default example input)
just run
# Generate with custom input/output/template
just run assets/example_resumes/software_engineer.yml outputs -t modern-html
# Wails dev mode with hot reload
just dev
# Clean frontend cache and rebuild, then start dev mode
just dev-cleanThe preview helpers look for
magick,convert, orpdftoppm. Install ImageMagick or poppler-utils to enable the conversion.
Built-in templates live in the templates/ directory, one folder per template (for example, templates/modern-html/template.html or templates/modern-latex/template.tex). Each template ships with a config.yml describing its format (html, latex, or docx) and any supporting metadata. LaTeX templates bundle their required .cls or helper files directly alongside the template, so no additional classes directory is needed.
Contributions to the Resume Generator project are welcome. Please read CONTRIBUTING.md for detailed guidelines on:
- Development setup and workflow
- Code style and conventions
- Testing requirements
- Pull request process
- Adding new templates
- Documentation standards
Submit pull requests for any enhancements, bug fixes, or documentation improvements.



