Structure of the YAML Input File¶
RenderCV's input file consists of four parts: cv
, design
, locale_catalog
and rendercv_settings
.
cv:
...
YOUR CONTENT
...
design:
...
YOUR DESIGN
...
locale_catalog:
...
TRANSLATIONS TO YOUR LANGUAGE
...
rendercv_settings:
...
RENDERCV SETTINGS
...
- The
cv
field is mandatory. It contains the content of the CV. - The
design
field is optional. It contains the design options of the CV. If you don't provide adesign
field, RenderCV will use the default design options with theclassic
theme. - The
locale_catalog
field is optional. You can provide translations for some of the strings used in the CV, for example, month abbreviations. RenderCV will use English strings if you don't provide alocale_catalog
field. - The
rendercv_settings
field is optional. It contains the settings of RenderCV (output paths, etc.). If you don't provide arendercv_settings
field, RenderCV will use the default settings.
Tip
To maximize your productivity while editing the input YAML file, set up RenderCV's JSON Schema in your IDE. It will validate your inputs on the fly and give auto-complete suggestions.
- Install YAML language support extension.
- Then the Schema will be automatically set up because the file ends with
_CV.yaml
. - Press
Ctrl + Space
to see the auto-complete suggestions.
"cv
" field¶
The cv
field of the YAML input starts with generic information, as shown below.
cv:
name: John Doe
location: Your Location
email: [email protected]
phone: +905419999999 # (1)!
website: https://example.com/
social_networks:
- network: LinkedIn # (2)!
username: yourusername
- network: GitHub
username: yourusername
...
- If you want to change the phone number formatting in the output, see the
locale_catalog
field'sphone_number_format
key. - The available social networks are:
LinkedIn
,GitHub
,GitLab
,Instagram
,ORCID
,Mastodon
,StackOverflow
,ResearchGate
,YouTube
,Google Scholar
,Telegram
.
None of the values above are required. You can omit any or all of them, and RenderCV will adapt to your input. These generic fields are used in the header of the CV.
The main content of your CV is stored in a field called sections
.
cv:
name: John Doe
location: Your Location
email: [email protected]
phone: +905419999999
website: https://yourwebsite.com/
social_networks:
- network: LinkedIn
username: yourusername
- network: GitHub
username: yourusername
sections:
...
YOUR CONTENT
...
"cv.sections
" field¶
The cv.sections
field is a dictionary where the keys are the section titles, and the values are lists. Each item of the list is an entry for that section.
Here is an example:
cv:
sections:
this_is_a_section_title: # (1)!
- This is a TextEntry. # (2)!
- This is another TextEntry under the same section.
- This is another another TextEntry under the same section.
this_is_another_section_title:
- company: This time it's an ExperienceEntry. # (3)!
position: Your position
start_date: 2019-01-01
end_date: 2020-01
location: TX, USA
highlights:
- This is a highlight (a bullet point).
- This is another highlight.
- company: Another ExperienceEntry.
position: Your position
start_date: 2019-01-01
end_date: 2020-01-10
location: TX, USA
highlights:
- This is a highlight (a bullet point).
- This is another highlight.
- The section titles can be anything you want. They are the keys of the
sections
dictionary. - Each section is a list of entries. This section has three
TextEntry
s. - There are seven different entry types in RenderCV. Any of them can be used in the sections. This section has two
ExperienceEntry
s.
There are seven different entry types in RenderCV. Different types of entries cannot be mixed under the same section, so for each section, you can only use one type of entry.
The available entry types are: EducationEntry
, ExperienceEntry
, PublicationEntry
, NormalEntry
, OneLineEntry
, BulletEntry
, and TextEntry
.
Each entry type is a different object (a dictionary). Below, you can find all the entry types along with their optional/mandatory fields and how they appear in each built-in theme.
EducationEntry¶
Mandatory Fields:
institution
: The name of the institution.area
: The area of study.
Optional Fields:
degree
: The type of degree.location
: The location.start_date
: The start date inYYYY-MM-DD
,YYYY-MM
, orYYYY
format.end_date
: The end date inYYYY-MM-DD
,YYYY-MM
, orYYYY
format or "present".date
: The date as a custom string or inYYYY-MM-DD
,YYYY-MM
, orYYYY
format. This will overridestart_date
andend_date
.highlights
: A list of bullet points.
institution: Boğaziçi University
area: Mechanical Engineering
degree: BS
location: Istanbul, Turkey
start_date: 2015-09
end_date: 2020-06
highlights:
- 'GPA: 3.24/4.00 ([Transcript](https://example.com))'
- "Awards: Dean's Honor List, Sportsperson of the Year"
ExperienceEntry¶
Mandatory Fields:
company
: The name of the company.position
: Your position.
Optional Fields:
location
: The location.start_date
: The start date inYYYY-MM-DD
,YYYY-MM
, orYYYY
format.end_date
: The end date inYYYY-MM-DD
,YYYY-MM
, orYYYY
format or "present".date
: The date as a custom string or inYYYY-MM-DD
,YYYY-MM
, orYYYY
format. This will overridestart_date
andend_date
.highlights
: A list of bullet points.
company: Some Company
position: Software Engineer
location: TX, USA
start_date: 2020-07
end_date: '2021-08-12'
highlights:
- Developed an [IOS application](https://example.com) that has
received more than **100,000 downloads**.
- Managed a team of **5** engineers.
NormalEntry¶
Mandatory Fields:
name
: The name of the entry.
Optional Fields:
location
: The location.start_date
: The start date inYYYY-MM-DD
,YYYY-MM
, orYYYY
format.end_date
: The end date inYYYY-MM-DD
,YYYY-MM
, orYYYY
format or "present".date
: The date as a custom string or inYYYY-MM-DD
,YYYY-MM
, orYYYY
format. This will overridestart_date
andend_date
.highlights
: A list of bullet points.
name: Some Project
date: 2021-09
highlights:
- Developed a web application with **React** and **Django**.
- Implemented a **RESTful API**
PublicationEntry¶
Mandatory Fields:
title
: The title of the publication.authors
: The authors of the publication.
Optional Fields:
doi
: The DOI of the publication.journal
: The journal of the publication.date
: The date as a custom string or inYYYY-MM-DD
,YYYY-MM
, orYYYY
format.
title: Magneto-Thermal Thin Shell Approximation for 3D Finite
Element Analysis of No-Insulation Coils
authors:
- J. Doe
- '***H. Tom***'
- S. Doe
- A. Andsurname
date: '2021-12-08'
journal: IEEE Transactions on Applied Superconductivity
doi: 10.1109/TASC.2023.3340648
OneLineEntry¶
Mandatory Fields:
label
: The label of the entry.details
: The details of the entry.
BulletEntry¶
Mandatory Fields:
bullet
: The bullet point.
TextEntry¶
Mandatory Fields:
- The text itself.
This is a *TextEntry*. It is only a text and can be useful for
sections like **Summary**. To showcase the TextEntry completely,
this sentence is added, but it doesn't contain any information.
...
Markdown Syntax¶
All the fields in the entries support Markdown syntax.
You can make anything bold by surrounding it with **
, italic with *
, and links with []()
, as shown below.
company: "**This will be bold**, *this will be italic*,
and [this will be a link](https://example.com)."
...
Using arbitrary keys¶
RenderCV allows the usage of any number of extra keys in the entries. For instance, the following is an ExperienceEntry
containing an additional key, an_arbitrary_key
.
company: Some Company
location: TX, USA
position: Software Engineer
start_date: 2020-07
end_date: '2021-08-12'
an_arbitrary_key: Developed an [IOS application](https://example.com).
highlights:
- Received more than **100,000 downloads**.
- Managed a team of **5** engineers.
By default, the an_arbitrary_key
key will not affect the output as the built-in templates do not use it. However, you can use the an_arbitrary_key
key in your custom templates. Further information on overriding the built-in templates with custom ones can be found here.
Also, you can use arbitrary keys in the cv
field. You can use them anywhere in the templates, but generally, they are used in the header of the CV (Header.j2.tex
).
"design
" field¶
The cv
field of the input contains your content, and the design
field contains your design options. The design
field starts with a theme name. Currently, the available themes are: classic
, moderncv
, sb2nov
, engineeringresumes
. However, custom themes can also be used (see here).
Each theme may have different options for design. classic
, sb2nov
, and engineeringresumes
almost use identical options, but moderncv
is slightly different. Please use an IDE that supports JSON schema to avoid missing any available options for the theme (see above).
An example design
field for a classic
theme is shown below:
design:
theme: classic
color: blue
disable_external_link_icons: false
disable_last_updated_date: false
last_updated_date_style: Last updated in TODAY
disable_page_numbering: false
page_numbering_style: NAME - Page PAGE_NUMBER of TOTAL_PAGES
font: Source Sans 3
font_size: 10pt
header_font_size: "30 pt"
page_size: a4paper
show_timespan_in:
- 'Experience'
text_alignment: justified
margins:
page:
bottom: 2 cm
left: 2 cm
right: 2 cm
top: 2 cm
section_title:
bottom: 0.2 cm
top: 0.3 cm
entry_area:
date_and_location_width: 4.5 cm
education_degree_width: 1 cm
left_and_right: 0.2 cm
vertical_between: 0.2 cm
highlights_area:
left: 0.4 cm
top: 0.10 cm
vertical_between_bullet_points: 0.10 cm
header:
bottom: 0.3 cm
horizontal_between_connections: 0.5 cm
vertical_between_name_and_connections: 0.3 cm
"locale_catalog
" field¶
This field is what makes RenderCV a multilingual tool. RenderCV uses some English strings to render PDFs. For example, it takes the dates in ISO format (2020-01-01
) and converts them into human-friendly strings ("Jan 2020"
). However, you can override these strings for your own language or needs with the locale_catalog
field. Also, you can change the phone number formatting with the phone_number_format
key.
Here is an example:
locale_catalog:
phone_number_format: national # (1)!
date_style: "MONTH_ABBREVIATION YEAR" # (2)!
abbreviations_for_months: # translation of the month abbreviations
- Jan
- Feb
- Mar
- Apr
- May
- Jun
- Jul
- Aug
- Sep
- Oct
- Nov
- Dec
full_names_of_months: # translation of the full month names
- January
- February
- March
- April
- May
- June
- July
- August
- September
- October
- November
- December
month: month # translation of the word "month"
months: months # translation of the word "months"
year: year # translation of the word "year"
years: years # translation of the word "years"
present: present # translation of the word "present"
to: to # translation of the word "to"
- The available phone number formats are:
national
,international
, andE164
. - The
MONTH_ABBREVIATION
andYEAR
are placeholders. The available placeholders are:FULL_MONTH_NAME
,MONTH_ABBREVIATION
,MONTH
,MONTH_IN_TWO_DIGITS
,YEAR
, andYEAR_IN_TWO_DIGITS
.
"rendercv_settings
" field¶
The rendercv_settings
field contains RenderCV settings. We plan to add more settings soon, such as the ability to bold specific words and disable sections. Currently, it only includes the render_command
field, which contains all the CLI options of the rendercv render
command, as shown below. If CLI arguments are provided, they will override the values in the YAML file. All the fields are optional.
rendercv_settings:
render_command:
output_folder_name: rendercv_output
pdf_path: NAME_IN_SNAKE_CASE_CV.pdf # (1)!
latex_path: NAME_IN_LOWER_SNAKE_CASE_cv.tex
html_path: NAME_IN_KEBAB_CASE_CV.html
markdown_path: null # (2)!
dont_generate_html: false
dont_generate_markdown: false
dont_generate_png: false
NAME_IN_SNAKE_CASE
is a placeholder. The available placeholders are:NAME_IN_SNAKE_CASE
,NAME_IN_LOWER_SNAKE_CASE
,NAME_IN_UPPER_SNAKE_CASE
,NAME_IN_KEBAB_CASE
,NAME_IN_LOWER_KEBAB_CASE
,NAME_IN_UPPER_KEBAB_CASE
,NAME
,FULL_MONTH_NAME
,MONTH_ABBREVIATION
,MONTH
,MONTH_IN_TWO_DIGITS
,YEAR
, andYEAR_IN_TWO_DIGITS
.- When the
markdown_path
field is set tonull
, RenderCV will not copy the Markdown file from the output folder to another location. See the CLI documentation for more information.