Use this command to install Resume Builder with WinGet:
winget install --id=Gentian28.ResumeBuilder -e
A cross-platform desktop resume builder. Edit in a live editor with a real-time PDF preview,
pick from 25 resume templates and 3 cover-letter templates, and export to PDF, DOCX, HTML,
PNG, plain text or JSON Resume. Import from a LinkedIn data export, an existing PDF, or
JSON Resume.
Your resume never leaves your machine. There is no account and no upload: resumes are stored
in a local SQLite database, and the optional AI features can run against a local model such as
Ollama or LM Studio, so summaries, skill suggestions and bullet rewrites work fully offline.
Keyword matching and ATS scoring are local computation and need no model at all.
Exporting is free and always has been - there is no paywall between you and your own resume.
README
ResumeBuilder
A cross-platform desktop resume builder: edit a resume in a live editor, see a real-time PDF preview, pick from 25 templates, and export to PDF, DOCX, HTML, PNG, plain text, or JSON Resume.
Your resume never leaves your machine. No account, no upload, no cloud. Resumes are stored in a local SQLite database, and the AI features can run against a local model (Ollama, LM Studio) so even those work fully offline.
Download
On Windows, the quickest route is winget — it also skips the SmartScreen prompt, since winget
installs through its own trusted client:
Installer, updates itself. win-Portable.zip if you'd rather not install.
Linux
ResumeBuilder.AppImage
chmod +x and run. Needs libfontconfig1 — present on most desktops.
macOS — Apple silicon
ResumeBuilder-osx-Setup.pkg
M1 and later. See the Gatekeeper note below.
macOS — Intel
ResumeBuilder-osx-x64-Setup.pkg
2019 and earlier. An Apple silicon build will not run on Intel.
Not sure which Mac you have? Apple menu → About This Mac.
No .NET runtime needed — every build is self-contained.
SHA256SUMS-*.txt is published with every release so you can verify what you downloaded.
Code signing
Windows builds are not yet code-signed. An application to the SignPath
Foundation free-signing programme was declined in July 2026 — the
programme wants public adoption signals a brand-new project doesn't have yet — and will be
resubmitted once the project has them. Until then, the direct download triggers SmartScreen's
"unknown publisher" warning — choose More info → Run anyway — while installing via winget
avoids it entirely. macOS Gatekeeper likewise refuses the package until you allow it under
System Settings → Privacy & Security; that needs Apple notarisation, which is separate from
code signing and not yet in place.
Data storage: %LocalAppData%/ResumeBuilder/resumes.db (SQLite). Created on first run; schema upgrades are applied automatically by DatabaseInitializer.
Dictionaries: %LocalAppData%/ResumeBuilder/Dictionaries/ (downloaded on first spell check).
Add a class under ResumeBuilder.Templates/Templates/ deriving from BaseTemplate.
Fill in its Info (Id, Name, Description, Category, Layout, and its default accent color / font).
Drive the body from GetOrderedSections() and ShouldRenderSection(...) so the user's section order and visibility are honored, and use the shared Compose* helpers on BaseTemplate for standard blocks.
Register it in TemplateRegistry.
The template smoke test renders every registered template against a fully populated resume, so a new template is covered as soon as it is registered.
Configuration
The AI features are off until configured. They target any OpenAI-compatible /chat/completions endpoint:
OpenAI: supply an API key. Requests (including your resume text) go to api.openai.com.
Local LLM: point the base URL at a loopback address (Ollama, LM Studio). No key is needed and nothing leaves your machine.
Every dependency is OSI-licensed. One is worth knowing about if you fork this for commercial
work: QuestPDF, which renders every template, is MIT for open-source projects, non-profits
and companies under $1M USD annual revenue, and requires a paid licence above that. It does not
affect using, forking or redistributing this project.
(The test suite used to depend on FluentAssertions 8.x, which moved to the non-OSI Xceed
Community License permitting non-commercial use only — meaning a commercial fork could not
legally run the tests. It now uses AwesomeAssertions,
the Apache-2.0 community fork.)