I built RenderCV because Word kept breaking my layout and LaTeX was overkill. I wanted my CV as a single YAML file (content, design, margins, everything) that I could render with one command.
Run rendercv render cv.yaml → get a perfectly typeset PDF.
Highlights:
1. Version-controllable: Your CV is just text. Diff it, tag it.
2. LLM-friendly: Paste into ChatGPT, tailor to a job description, paste back, render. Batch-produce variants with terminal AI agents.
3. Perfect typography: Typst under the hood handles pixel-perfect alignment and spacing.
4. Full design control: Margins, fonts, colors, and more; tweak everything in YAML.
5. Comes with JSON Schema: Autocompletion and inline docs in your editor.
Battle-tested for 2+ years, thousands of users, 120k+ total PyPI downloads, 100% test coverage, actively maintained.
GitHub: https://github.com/rendercv/rendercv
Docs: https://docs.rendercv.com
Overview on RenderCV's software design (Pydantic + Jinja2 + Typst): https://docs.rendercv.com/developer_guide/understanding_rend...
I also wrote up the internals as an educational resource on maintaining Python projects (GitHub Actions, packaging, Docker, JSON Schema, deploying docs, etc.): https://docs.rendercv.com/developer_guide/
Second, if I may make a request, could you please follow SemVer? I tried rendering my resume again last week, only 3 or 4 months after having made it originally with RenderCV version 2 point something I cannot recall, and it would not work. The design schema and perhaps also the CLI options have changes so much that I expect I would need to spend 2 to 4 hours getting it to work again, and there is no guarantee that it would not break again in another month. I would have appreciated if the versioning scheme followed SemVer, so I would know that any v2 engine would work and v3 engine would not.
I also would appreciate it if you could write detailed migration docs between versions and/or recommendations in error messages. The reason I think migrating my CV would take so long is that I have to go by trial and error, searching for similar-sounding parameter names and replacing them one-by-one. I gave up after an hour of this as I was nowhere near done.
Third, is markdown render supposed to miss information or is it a bug? Some sections of the resume would not end up in the markdown version, only showing section title and nothing else. If this is not expected behaviour, please let me know.
Again, thank you for making this. I look forward to using it again in the future.
reply