Creating beautiful LaTeX CVs using RenderCV

Creating and maintaining a good professional resume is one of those painfully boring(and frustrating!) chores that you have no choice but to slog through. You can spend hours reading up best practices, looking up themes, fighting with word processors and still be left unsatisfied with the resulting output. Unfortunately, I cannot help you in figuring out "what" goes into making a good resume in terms of its contents but once you've figured out the "what" (i.e. the content), there are some pretty handy tools that can handle "how" to bring it to life.

A good CV builder should ideally satisfy the following requirements:

  • It should not lock you into a walled garden
  • Allow for easy import/exports
  • Should generate version controllable files
  • Provide a few simple & elegant themes/templates
  • Provide sufficient options for customization

After looking through a bunch of options on GitHub, I finally came upon RenderCV which checked all of my boxes and then some.

Enter RenderCV

RenderCV allows you to create a high-quality CVs using a YAML input file. For example:

cv:
  name: John Doe
  location: Your Location
  email: youremail@yourdomain.com
  phone: +905419999999 
  website: https://example.com/
  social_networks:
    - network: LinkedIn 
      username: yourusername
    - network: GitHub 
      username: yourusername
  ....

So you write out your resume in YAML and RenderCV renders the output in a bunch of file formats at one go including PDF, LaTeX, Markdown, HTML, and PNGs. That's pretty neat!

It also comes with 4 built-in themes that can be customized to your liking. Moreover, it allows you to create and use your own custom themes for rendering your CV. I personally found the built-in themes pretty darn good and apart from making a few cosmetic changes, they required no tinkering on my part.

Quick Start

RenderCV is written in Python and all you need is a quick pip install to get it running. It has a very nice CLI that comes with all the options you need. To get started:

  1. Set up your virtual environment:
python -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`
  1. Install RenderCV:
pip install rendercv
  1. Create a new CV using the new sub-command:
rendercv new "Full Name" --theme "THEME_NAME"
  • THEME_NAME is the name of one of four available themes: classic, moderncv, sb2nov, engineeringresumes. You can take a look at how they look on the project's GitHub and use whichever one you find best. If you skip the --theme option, the default classic theme is used.
  • Running this command will create a few files but the main one you need to look at is the YAML input file called Your_Name_CV.yaml. This file contains the content and design options of your CV.
  1. Edit the YAML file with your personal details:

    • Now that the YAML file is generated, you can fill in your own details. It already comes with a lot of placeholder content that can serve as a good starting point. You just need to replace this filler content with whats relevant for you.
    • Take a look at the docs if you want to know how this YAML file is supposed to be structured, what fields can be added/removed, etc. Visit: Structure of the YAML Input File
  2. Render the CV using the YAML file:

rendercv render "Your_Name_CV.yaml"
  • Running this command creates a directory called rendercv_output, which contains your generated CV in PDF, markdown, LaTeX and PNG formats.

That's pretty much it! I highly suggest taking a look at the docs if you want to tweak and customize anything. They're very well written and contain everything that you could need for making a CV to your liking.

Bonus : More CV building tools

While searching for good resume making tools, I found a couple more that I liked. Feel free to give them a go:

  • Oh My CV - An in-browser, local-first Markdown resume builder. Allows you to write your resume in Markdown.
  • OpenResume - is a powerful open-source resume builder and resume parser.
  • JSONResume - Its a community driven open source initiative to create JSON-based standard for resumes. It's like RenderCV but uses JSON instead of YAML. I have not used this one personally.

That's all for now. I hope you find these tools as useful as I did. Thanks for reading!