Rizzumé: A Local-First Résumé Builder on JSON Resume

Why I built it

Every few years I update my résumé, and every few years I run into the same problems.

Most résumé builders require an account, store my data somewhere and eventually export a PDF. If I want to move to another tool, I'm usually back to copying and pasting everything.

I also tried paying for Standard Resume. Unfortunately, I hit a billing bug where I was charged three times but never received Pro access. To their credit, they eventually refunded everything, although it took a while through customer support. It wasn't the reason I built Rizzumé, but it did reinforce that I wanted a tool I completely owned.

To me, a résumé is structured data. The PDF is just one representation of it. I should be able to keep the source, move it between tools and generate whatever output I need.

Rizzumé is my attempt at building that.

What it does

  • Local-first
  • Built on JSON Resume
  • Printable templates
  • Browser-based PDF export
  • Live preview
  • Multiple résumé versions
  • Import and export
  • Deterministic résumé checks
  • No accounts
  • No backend

Why JSON Resume?

I didn't want another proprietary format. Everything in Rizzumé is stored as a standard JSON Resume document, which means your data remains portable. The application only adds a small meta.rizzume section for UI preferences like templates and résumé versions.

The goal is simple: if Rizzumé disappeared tomorrow, your résumé would still be usable.

Local-first

Once I chose JSON Resume, I realised I didn't need a backend.

Everything lives in localStorage through a Zustand store. There are no accounts to create, no authentication flow and no server storing your résumé.

Your data never leaves your browser.

Templates

Rizzumé currently includes 14 templates.

Each template is just a React component reading the same underlying JSON Resume data, so switching templates doesn't transform your résumé or duplicate data.

Pick a different template and the data stays exactly the same.

Resume checks

Instead of inventing an "ATS score", Rizzumé performs deterministic checks that can actually be explained.

Some examples:

  • Missing contact information
  • Empty sections
  • Long bullet points
  • Passive or first-person writing
  • Missing quantified achievements

Every result links back to where it can be fixed.

Multiple résumé versions

Rather than maintaining separate files, Rizzumé lets you keep multiple versions together.

One master résumé.

Several tailored versions.

One backup file.

It makes applying for different roles much easier without duplicating everything.

Import and export

Export works in two ways.

  • Standard JSON Resume
  • Complete Rizzumé backup

Import detects the difference automatically, validates the file and restores the appropriate data.

That means you can move between devices without creating an account.

Welp?

Building Rizzumé reminded me how enjoyable small projects can be.

It started because I wanted a better résumé builder for myself. Along the way it became an excuse to explore local-first architecture, open standards and a few ideas around making résumé editing simpler.

🌐 Live Demo: https://rizzume.katpadi.ph
💻 GitHub: https://github.com/katpadi/rizzume
📄 JSON Resume: https://jsonresume.org