[HN Gopher] Show HN: RenderCV - Open-source CV/resume generator,...
       ___________________________________________________________________
        
       Show HN: RenderCV - Open-source CV/resume generator, YAML to PDF
        
       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/
        
       Author : sinaatalay
       Score  : 62 points
       Date   : 2025-12-21 13:15 UTC (9 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | scythmic_waves wrote:
       | I used this recently for my resume and I recommend it.
       | 
       | I have the technical background to write Latex and Typst
       | documents but I honestly didn't want the headache. Plus I'm the
       | type to futz with styling all day long instead of putting down
       | actual content. RenderCV was simple to use and did exactly what I
       | wanted.
        
       | pietz wrote:
       | A bit of a missed opportunity not to use the JSON Resume schema
       | for this.
       | 
       | https://jsonresume.org/schema
        
         | sinaatalay wrote:
         | We deliberately chose not to use JSON Resume because we wanted
         | greater flexibility. For example, in RenderCV, you can use any
         | section title you want and place any of the 9 available entry
         | types under any section. In contrast, JSON Resume has
         | predefined section titles, and each section is restricted to a
         | predefined entry type. For instance, you must use the
         | experience entry schema under the experience section.
        
           | pietz wrote:
           | I hear you. This boils town to personal opinion. I would have
           | preferred to use an existing standard than introducing yet
           | another one. The custom sections aren't something I've ever
           | seen or needed anyway.
        
       | catapart wrote:
       | Oh awesome! This is a great solution to resumes. The only thing
       | I'd like more is a web app to run it in.
        
         | sinaatalay wrote:
         | We do have that, but it's a bit outdated. We'll update it at
         | some point: https://app.rendercv.com
        
       | varun_ch wrote:
       | This looks really interesting, but I'm wondering what this adds
       | that someone can't already do with Typst+a resume template. The
       | basic-resume template already abstracts enough that you only need
       | to care about content rather than formatting:
       | 
       | https://typst.app/universe/package/basic-resume/
       | 
       | Does anyone have examples of how they're using the YAML?
        
         | sinaatalay wrote:
         | RenderCV actually relies on its own Typst package:
         | https://typst.app/universe/package/rendercv
         | 
         | Here are a couple of reasons, just a few that come to mind, why
         | using YAML + RenderCV can be more appealing than working
         | directly in Typst:
         | 
         | - Reusing the same content across multiple themes. YAML +
         | RenderCV allows you to experiment with different themes and
         | design options to the exact same content with no changes to the
         | data itself. This is difficult to achieve in pure Typst, where
         | switching templates typically means adapting your content to a
         | different set of Typst commands.
         | 
         | - Centralized control over entry layouts. You can adjust how
         | entire classes of entries are rendered from a single place--for
         | example, changing the layout of all education entries at once,
         | rather than editing each entry individually.
        
       | subdavis wrote:
       | I'd love to know if this performs better than your average resume
       | in OCR or scanning tools. I think if you could advertise that you
       | follow some kind of arcane best practices, that would be super
       | attractive to a lot of people.
       | 
       | I have a lot of anxiety about missing opportunities because of
       | shitty OCR.
        
         | sinaatalay wrote:
         | Thank you. We will add an analysis of how RenderCV PDFs perform
         | with applicant tracking systems in docs at some point, but
         | users have been reporting positive results. We generate the
         | PDFs using Typst, which adheres to modern PDF standards.
        
       | NewsaHackO wrote:
       | Wish I had seen this before making my resume in latex. One
       | question, though to add publications, is it possible to use
       | bibtex, or do you have to manually convert each publication to
       | YAML?
        
         | sinaatalay wrote:
         | Yes, unfortunately, you will need to convert them to YAML. I
         | think an LLM can easily do that for you, though. This has been
         | requested before, but we haven't implemented it in order to
         | keep our schema robust and simple. Maybe we should add it.
        
       | joshdavham wrote:
       | Favorited for next time I make a resume - thanks for making this!
       | Hopefully I'll never have to touch LaTeX ever again.
        
       | Cloudly wrote:
       | I have been through a huge over supply of AI generated CVs using
       | similar tools this year. I am sure this will help people so not
       | bashing the tool per se, but bare in mind that you will be
       | joining the robots.
       | 
       | I don't know what the solution really is, but as much as I hate
       | it, a verified Linkedin Profile is a huge signal now. Otherwise a
       | real personal site with care and history. I am guilty of being
       | bad with the second so - no easy answers. Maybe even a wacky
       | looking CV would make me notice a candidate more. Powerpoint 90s
       | style.
        
         | mkozak wrote:
         | AI generated (and quite often fake) CVs are a fucking joke.
         | I've spent many hours over the last 2 years going through the
         | pile of them
        
         | browningstreet wrote:
         | Lots of people apply to places other than startups, and for
         | positions other than developer.
        
       | uniqueuid wrote:
       | I get the motivation, but it honestly feels a bit weird to use
       | tens of thousands of lines of python code to do something that
       | you can just directly do in typst.
       | 
       | I mean, a CV is not really rocket science and there are quite a
       | few great typst templates out there.
        
         | browningstreet wrote:
         | As someone who's done a lot of hiring over the years and
         | read/scanned thousands of resumes, I can attest: CVs are indeed
         | rocket science.
        
           | uniqueuid wrote:
           | Point taken, but I'd prefer 200 lines of rocket science that
           | I understand and control over 60k lines of (cleanly written
           | and documented) rocket science.
           | 
           | (Although admittedly both plain typst and this project are
           | still way less complex than LaTeX.)
        
       | dfajgljsldkjag wrote:
       | This is clearly a real project that was built over several years
       | with human effort (not vibe coded). Which makes it all the more
       | depressing that the author decided to take a massive dump over
       | the entire README.md with AI slop.
       | 
       | Sadly, it appears the project was heavily sloppified a mere 2
       | weeks ago:
       | https://github.com/rendercv/rendercv/commit/5cc5fbdf9ec1a742...
        
         | sinaatalay wrote:
         | You're absolutely right!
        
       | opengrass wrote:
       | Yaml itself can be a resume.
        
       | mkozak wrote:
       | Looks nice! I do, however, see an issue with such tools, as they
       | require people to maintain their CV. I don't want to hijack the
       | thread so I won't link here unless asked to do so, but I've build
       | something to keep developers' profiles up to date
        
         | Dansvidania wrote:
         | please share?
        
       | thangalin wrote:
       | In tough job markets, submitting 100 resumes before getting hired
       | is not uncommon. Of possible interest is my Creating Catchy Cover
       | Letters blog post, which uses my Markdown editor, KeenWrite
       | (https://keenwrite.com), to create PDF files styled to match a
       | company's branding:
       | 
       | https://keenwrite.com/blog/2025/10/15/creating-catchy-cover-...
       | 
       | A handful of prospective managers told me that my cover letter
       | stood out among hundreds of applicants.
       | 
       | Here's the full shell script I used to build cover letters
       | (you'll need to point "theme dir" to the directory where the
       | cover letter theme---aspiros---is found). With this script,
       | creating a cover letter went from about 20 minutes down to 5. If
       | you have any troubles getting it to work, contact me via
       | https://whitemagicsoftware.com/.                   #!/usr/bin/env
       | bash              # This script builds a cover letter based on a
       | company's branding. The         # parameters include:         #
       | # $1 -- The company name as a directory, containing colours and
       | logo.         # $2 -- The company name (normal case).         #
       | $3 -- The company role (job title).         # $4 -- The relative
       | path to the cover letter to typeset.         #         # Example:
       | #         # ./build.sh corp Corporation 'Job Title'
       | template/cover-letter.md              readonly
       | SCRIPT_SRC="$(dirname "${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}")"
       | readonly SCRIPT_DIR="$(cd "${SCRIPT_SRC}" >/dev/null 2>&1 &&
       | pwd)"              readonly COMPANY_DIR="${1:-template}"
       | readonly COMPANY_NAME="${2:-Template}"         readonly
       | COMPANY_ROLE="${3:-Job Title}"         readonly
       | PATH_COVER_LETTER="${4:-climate/cover-letter.md}"
       | readonly EMPLOYEE_NAME="${5:-Your Name}"         readonly
       | EMPLOYEE_ROLE="${6:-Your Role}"              read -r COLOUR_FG
       | COLOUR_BG COLOUR_AC < "$COMPANY_DIR/colours.txt"         readonly
       | COLOUR_FG COLOUR_BG COLOUR_AC              magick \
       | signature-black.png \           -alpha extract \
       | -background "#${COLOUR_AC}" \           -alpha shape \
       | -define png:color-type=6 \           signature.png
       | rm -f ${HOME}/.local/share/keenwrite/logo_svg_*.pdf
       | keenwrite.bin \           -i "${PATH_COVER_LETTER}" \
       | -o cover-letter.pdf \
       | --set=employer.company.name="${COMPANY_NAME}" \
       | --set=employer.position.role="${COMPANY_ROLE}" \
       | --set=employee.name="${EMPLOYEE_NAME}" \
       | --set=employee.role="${EMPLOYEE_ROLE}" \
       | --set=employee.contact.phone="555-1212" \
       | --set=employee.contact.email="email@hostname" \
       | --set=employee.portfolio.url="gitlab.com/YourName" \
       | --set=employee.address.line.1="address 1" \
       | --set=employee.address.line.2="city, province" \
       | --set=employee.address.line.3="postal code" \
       | --metadata="foreground=${COLOUR_FG}" \
       | --metadata="background=${COLOUR_BG}" \
       | --metadata="accent=${COLOUR_AC}" \           --image-
       | dir="${SCRIPT_DIR}/${COMPANY_DIR}" \           --theme-
       | dir="${HOME}/dev/java/keenwrite/themes/aspiros"
       | exiftool \           -overwrite_original_in_place \
       | -Title="${EMPLOYEE_NAME}" \           -Author="${EMPLOYEE_NAME}"
       | \           cover-letter.pdf
       | 
       | This saved me about 19 hours of work; hopefully it will save you
       | time, as well. See also: https://xkcd.com/1205/
        
       | michidk wrote:
       | Why invent a new file format when there is
       | https://jsonresume.org/? Its also quite easy to customize and add
       | more things as it does not prohibit extra values
        
         | sinaatalay wrote:
         | The JSON Resume schema did not support what we needed, so we
         | deliberately created our own.
         | 
         | We wanted to define 9 different entry schemas that could be
         | used under any section title. In our schema, each section,
         | regardless of its title, contains a list composed of one of
         | these nine entry types. This is different from the JSON Resume
         | approach, where specific entry schemas are tied to specific
         | sections (work schema for work section, etc.).
         | 
         | In RenderCV, users can choose any section title they want and
         | use any of the 9 entry types within it. Each entry type is
         | rendered differently in the generated PDF.
        
       | zpusmani wrote:
       | I really love tools that treat documents as code. I have been
       | trying to move my workflows away from binary formats (like PPT &
       | Word) to text based ones I can more easily version control.
       | 
       | Does this support custom CSS for the layout or is it bound to the
       | YAML templates?
        
         | sinaatalay wrote:
         | It's completely flexible. However, it's not done through CSS.
         | We use Typst to generate PDFs, and we template Typst files
         | using Jinja2 from YAML. You can override the built-in Typst
         | templates; see the guide here:
         | https://docs.rendercv.com/user_guide/how_to/override_default...
        
           | zpusmani wrote:
           | Ah makes sense, using Typst under the hood for strict layout
           | control compared to CSS. Thanks for the link to the override
           | guide and I'll check it out.
        
       | smnrchrds wrote:
       | First of all, thank you for making this. I used it in my recent
       | job search and it was fantastic.
       | 
       | 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.
        
         | dfajgljsldkjag wrote:
         | The author discovered AI coding 2 weeks ago and completely went
         | to town on the entire project. If you use any version before
         | this (2.2) it will probably work fine.
         | 
         | https://github.com/rendercv/rendercv/commit/5cc5fbdf9ec1a742...
        
           | sinaatalay wrote:
           | Just to clarify, that commit was the result of about a month
           | of careful development, and involved significant manual
           | effort beyond AI coding.
           | 
           | See the PR: https://github.com/rendercv/rendercv/pull/528
        
         | sinaatalay wrote:
         | Thank you so much for the kind words, and I'm sorry for the
         | trouble the changes caused you.
         | 
         | To give some context: I hadn't worked on RenderCV for about six
         | months, and when I came back, I had grown technically and my
         | design taste had changed. I decided to do a significant
         | overhaul rather than preserve backwards compatibility. It felt
         | necessary to maintain my enthusiasm for this project long-term.
         | 
         | You're right about semantic versioning. I used a two-number
         | scheme (MAJOR.MINOR) back in 2023 when I didn't know much about
         | releasing software. By the time I understood the benefits of
         | MAJOR.MINOR.PATCH, I didn't want to change it mid-stream. I'm
         | planning to switch after v3. It will give me more flexibility
         | to tag updates appropriately.
         | 
         | I'm also adding migration documentation to my list. You're
         | right that I should have done this. Going forward, there will
         | be clear migration guides.
         | 
         | Regarding the Markdown issue where sections show only titles,
         | that sounds like a bug. If you could open an issue with
         | details, I'd appreciate it.
         | 
         | Thank you for using RenderCV!
        
       ___________________________________________________________________
       (page generated 2025-12-21 23:00 UTC)