Structure of the Input¶
RenderCV's input file consists of four parts: cv, design, locale and rendercv_settings.
cv:
...
YOUR CONTENT
...
design:
...
YOUR DESIGN
...
locale:
...
TRANSLATIONS TO YOUR LANGUAGE
...
rendercv_settings:
...
RENDERCV SETTINGS
...
- The
cvfield is mandatory. It contains the content of the CV. - The
designfield is optional. It contains the design options of the CV. If you don't provide adesignfield, RenderCV will use the default design options with theclassictheme. - The
localefield is optional. It contains all the strings that define the CV's language (like month names, etc.). If you don't provide alocalefield, the default English strings will be used. - The
rendercv_settingsfield is optional. It contains the settings of RenderCV (output paths, keywords to make bold, etc.). If you don't provide arendercv_settingsfield, the default settings will be used.
"cv" field¶
The cv field of the YAML input starts with generic information, as shown below.
cv:
name: John Doe
location: Your Location
email: youremail@yourdomain.com
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
localefield'sphone_number_formatkey. - The available social networks are:
LinkedIn,GitHub,GitLab,Instagram,ORCID,Mastodon,StackOverflow,ResearchGate,YouTube,Google Scholar,Telegram,X.
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: youremail@yourdomain.com
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
sectionsdictionary. - Each section is a list of entries. This section has three
TextEntrys. - There are seven different entry types in RenderCV. Any of them can be used in the sections. This section has two
ExperienceEntrys.
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 (e.g., BS, MS, PhD)location: The locationstart_date: The start date inYYYY-MM-DD,YYYY-MM, orYYYYformatend_date: The end date inYYYY-MM-DD,YYYY-MM, orYYYYformat or "present"date: The date as a custom string or inYYYY-MM-DD,YYYY-MM, orYYYYformat. This will overridestart_dateandend_date.summary: The summaryhighlights: The 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"
![figure["alt_text"]](assets/images/classic/education_entry.png)
![figure["alt_text"]](assets/images/sb2nov/education_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/education_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/education_entry.png)
![figure["alt_text"]](assets/images/moderncv/education_entry.png)
ExperienceEntry¶
Mandatory Fields:
company: The name of the companyposition: The position
Optional Fields:
location: The locationstart_date: The start date inYYYY-MM-DD,YYYY-MM, orYYYYformatend_date: The end date inYYYY-MM-DD,YYYY-MM, orYYYYformat or "present"date: The date as a custom string or inYYYY-MM-DD,YYYY-MM, orYYYYformat. This will overridestart_dateandend_date.summary: The summaryhighlights: The 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.
![figure["alt_text"]](assets/images/classic/experience_entry.png)
![figure["alt_text"]](assets/images/sb2nov/experience_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/experience_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/experience_entry.png)
![figure["alt_text"]](assets/images/moderncv/experience_entry.png)
NormalEntry¶
Mandatory Fields:
name: The name of the entry
Optional Fields:
location: The locationstart_date: The start date inYYYY-MM-DD,YYYY-MM, orYYYYformatend_date: The end date inYYYY-MM-DD,YYYY-MM, orYYYYformat or "present"date: The date as a custom string or inYYYY-MM-DD,YYYY-MM, orYYYYformat. This will overridestart_dateandend_date.summary: The summaryhighlights: The list of bullet points
name: Some Project
date: 2021-09
summary: This is a summary of the project.
highlights:
- Developed a web application with **React** and **Django**.
- Implemented a **RESTful API**
![figure["alt_text"]](assets/images/classic/normal_entry.png)
![figure["alt_text"]](assets/images/sb2nov/normal_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/normal_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/normal_entry.png)
![figure["alt_text"]](assets/images/moderncv/normal_entry.png)
PublicationEntry¶
Mandatory Fields:
title: The title of the publicationauthors: The authors of the publication
Optional Fields:
doi: The DOI of the publicationurl: The URL of the publicationjournal: The journal of the publicationdate: The date as a custom string or inYYYY-MM-DD,YYYY-MM, orYYYYformat
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
![figure["alt_text"]](assets/images/classic/publication_entry.png)
![figure["alt_text"]](assets/images/sb2nov/publication_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/publication_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/publication_entry.png)
![figure["alt_text"]](assets/images/moderncv/publication_entry.png)
OneLineEntry¶
Mandatory Fields:
label: The label of the entrydetails: The details of the entry
![figure["alt_text"]](assets/images/classic/one_line_entry.png)
![figure["alt_text"]](assets/images/sb2nov/one_line_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/one_line_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/one_line_entry.png)
![figure["alt_text"]](assets/images/moderncv/one_line_entry.png)
BulletEntry¶
Mandatory Fields:
bullet: The bullet point
![figure["alt_text"]](assets/images/classic/bullet_entry.png)
![figure["alt_text"]](assets/images/sb2nov/bullet_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/bullet_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/bullet_entry.png)
![figure["alt_text"]](assets/images/moderncv/bullet_entry.png)
NumberedEntry¶
Mandatory Fields:
number: The content of the numbered entry
![figure["alt_text"]](assets/images/classic/numbered_entry.png)
![figure["alt_text"]](assets/images/sb2nov/numbered_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/numbered_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/numbered_entry.png)
![figure["alt_text"]](assets/images/moderncv/numbered_entry.png)
ReversedNumberedEntry¶
The ReversedNumberedEntry displays entries in descending numerical order.
Mandatory Fields:
reversed_number: The content of the reversed numbered entry
![figure["alt_text"]](assets/images/classic/reversed_numbered_entry.png)
![figure["alt_text"]](assets/images/sb2nov/reversed_numbered_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/reversed_numbered_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/reversed_numbered_entry.png)
![figure["alt_text"]](assets/images/moderncv/reversed_numbered_entry.png)
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.
...
![figure["alt_text"]](assets/images/classic/text_entry.png)
![figure["alt_text"]](assets/images/sb2nov/text_entry.png)
![figure["alt_text"]](assets/images/engineeringresumes/text_entry.png)
![figure["alt_text"]](assets/images/engineeringclassic/text_entry.png)
![figure["alt_text"]](assets/images/moderncv/text_entry.png)
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 default design options do not use it. However, you can use the an_arbitrary_key key in your own design options (see design.entry_types field).
"design" field¶
The design field contains your theme selection and its options. Currently, the available themes are: classic, sb2nov, engineeringresumes, engineeringclassic, moderncv. The only difference between the themes are the design options. Their Typst templates are the same. Any theme can be obtained by playing with the design options.
An example design field for a classic theme is shown below:
design:
theme: classic # (1)!
page:
size: us-letter # (2)!
top_margin: 2cm
bottom_margin: 2cm
left_margin: 2cm
right_margin: 2cm
show_page_numbering: true
show_last_updated_date: true
colors:
text: black
name: '#004f90'
connections: '#004f90'
section_titles: '#004f90'
links: '#004f90'
last_updated_date_and_page_numbering: grey
text:
font_family: Source Sans 3 # (3)!
font_size: 10pt
leading: 0.6em
alignment: justified # (4)!
date_and_location_column_alignment: right # (5)!
links:
underline: false
use_external_link_icon: true
header:
name_font_family: Source Sans 3
name_font_size: 30pt
name_bold: true
small_caps_for_name: false
photo_width: 3.5cm
vertical_space_between_name_and_connections: 0.7cm
vertical_space_between_connections_and_first_section: 0.7cm
horizontal_space_between_connections: 0.5cm
connections_font_family: Source Sans 3
separator_between_connections: ''
use_icons_for_connections: true
alignment: center # (6)!
section_titles:
type: with-partial-line # (7)!
font_family: Source Sans 3
font_size: 1.4em
bold: true
small_caps: false
line_thickness: 0.5pt
vertical_space_above: 0.5cm
vertical_space_below: 0.3cm
entries:
date_and_location_width: 4.15cm
left_and_right_margin: 0.2cm
horizontal_space_between_columns: 0.1cm
vertical_space_between_entries: 1.2em
allow_page_break_in_sections: true
allow_page_break_in_entries: true
short_second_row: false
show_time_spans_in: []
highlights:
bullet: • # (8)!
top_margin: 0.25cm
left_margin: 0.4cm
vertical_space_between_highlights: 0.25cm
horizontal_space_between_bullet_and_highlight: 0.5em
summary_left_margin: 0cm
entry_types:
one_line_entry:
template: '**LABEL:** DETAILS'
education_entry:
main_column_first_row_template: '**INSTITUTION**, AREA'
degree_column_template: '**DEGREE**'
degree_column_width: 1cm
main_column_second_row_template: |-
SUMMARY
HIGHLIGHTS
date_and_location_column_template: |-
LOCATION
DATE
normal_entry:
main_column_first_row_template: '**NAME**'
main_column_second_row_template: |-
SUMMARY
HIGHLIGHTS
date_and_location_column_template: |-
LOCATION
DATE
experience_entry:
main_column_first_row_template: '**COMPANY**, POSITION'
main_column_second_row_template: |-
SUMMARY
HIGHLIGHTS
date_and_location_column_template: |-
LOCATION
DATE
publication_entry:
main_column_first_row_template: '**TITLE**'
main_column_second_row_template: |-
AUTHORS
URL (JOURNAL)
main_column_second_row_without_journal_template: |-
AUTHORS
URL
main_column_second_row_without_url_template: |-
AUTHORS
JOURNAL
date_and_location_column_template: DATE
-
The
design.themefield only changes the default values of all the other fields in thedesignfield. Therefore, if you don't change any of the other fields, the output will be the same for all the themes. You can remove all the other fields and just keep thedesign.themefield to use the default values of that theme.The available themes are:
classic,sb2nov,engineeringresumes,engineeringclassic,moderncv. -
The available page sizes are:
a0,a1,a2,a3,a4,a5,a6,a7,a8,us-letter,us-legal,us-executive,us-gov-letter,us-gov-legal,us-business-card,presentation-16-9,presentation-4-3. - The available font families are:
<class 'str'>,PlainValidator(func=<function validate_font_family at 0x7fddfa9a4f40>, json_schema_input_type=typing.Any). - The available text alignments are:
left,justified,justified-with-no-hyphenation. - The available date and location column alignments are:
left,center,right. - The available header alignments are:
left,center,right. - The available section title types are:
with-parial-line,with-full-line,without-line,moderncv. - The available bullet types are:
•,◦,-,◆,★,■,—,○.
"locale" 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 field.
Here is an example:
locale:
language: en
phone_number_format: national # (1)!
page_numbering_template: NAME - Page PAGE_NUMBER of TOTAL_PAGES # (4)!
last_updated_date_template: Last updated in TODAY # (3)!
date_template: MONTH_ABBREVIATION YEAR # (2)!
month: month
months: months
year: year
years: years
present: present
to: –
abbreviations_for_months:
- Jan
- Feb
- Mar
- Apr
- May
- June
- July
- Aug
- Sept
- Oct
- Nov
- Dec
full_names_of_months:
- January
- February
- March
- April
- May
- June
- July
- August
- September
- October
- November
- December
- The available phone number formats are:
national,international, andE164. - The
MONTH_ABBREVIATIONandYEARare placeholders. The available placeholders are:FULL_MONTH_NAME,MONTH_ABBREVIATION,MONTH,MONTH_IN_TWO_DIGITS,YEAR, andYEAR_IN_TWO_DIGITS. - The available placeholders are:
TODAY, which prints the today's date withlocale.date_template. - The available placeholders are:
NAME,PAGE_NUMBER,TOTAL_PAGES, andTODAY.
"rendercv_settings" field¶
The rendercv_settings field contains RenderCV settings.
rendercv_settings:
date: "2025-01-06" # (1)!
bold_keywords:
- Python # (2)!
render_command:
output_folder_name: rendercv_output
pdf_path: NAME_IN_SNAKE_CASE_CV.pdf # (3)!
typst_path: NAME_IN_LOWER_SNAKE_CASE_cv.typ
html_path: NAME_IN_KEBAB_CASE_CV.html
markdown_path: NAME.md
dont_generate_html: false
dont_generate_markdown: false
dont_generate_png: false
- This field is used for time span calculations and last updated date text.
- The words in the list will be bolded in the output automatically.
NAME_IN_SNAKE_CASEis 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.