Skip to content

Configuration Reference — metadata.toml

The metadata.toml file is the main configuration file for your CV. By changing the key-value pairs in the config file, you can set up the names, contact information, and other details displayed in your CV.

You can also override the language set in metadata.toml via the CLI:

typst compile cv.typ --input language=fr

Full Example

#:schema https://raw.githubusercontent.com/yunanwg/brilliant-CV/main/metadata.toml.schema.json

# Must match folder suffix: "en" → modules_en/, "fr" → modules_fr/, etc.
language = "en"

[layout]
    # Accent color used for section titles, icons, and highlights in the rendered PDF
    # Preset: skyblue, red, nephritis, concrete, darknight — or any hex like "#1E90FF"
    awesome_color = "skyblue"

    # Controls vertical spacing; increase to spread out sections/entries, decrease to compact
    before_section_skip = "1pt"
    # Vertical space before each entry within a section
    before_entry_skip = "1pt"
    # Vertical space before entry description text
    before_entry_description_skip = "1pt"

    # Page dimensions and margins applied to the PDF output. Possible values: a4 (default), us-letter
    paper_size = "a4"

    # Overrides the width of the right-side date column in entries; omit to use sensible defaults
    #date_width = "3.6cm"

    # Overrides base font size for body text; affects overall density of content
    #font_size = "9pt"

    [layout.fonts]
        # Typeface used for body text, entry descriptions, and general content
        regular_fonts = ["Source Sans 3"]
        # Typeface used for the name and section headings in the header
        header_font = "Roboto"

    [layout.header]
        # Aligns the entire header block (name, info, quote). Possible values: left, center, right
        header_align = "left"

        # false hides the photo and gives full width to name/info
        display_profile_photo = true
        # "50%" = circle, "0%" = square, "10%" = rounded corners
        profile_photo_radius = "50%"
        # Font size for the contact-info line (email, phone, links) in the header
        info_font_size = "10pt"

    [layout.entry]
        # true = company name bold on top, role below; false = role bold on top
        # Must be true to use cv-entry-start / cv-entry-continued pattern
        display_entry_society_first = true

        # false hides all company/organisation logos in entries
        display_logo = true

    [layout.footer]
        # true shows "1/2" style page numbers in the footer
        display_page_counter = false

        # false removes the footer entirely (no page text, no counter)
        display_footer = true


[inject]
    # Hidden text injected into the PDF for ATS keyword matching (invisible to readers)
    # custom_ai_prompt_text = "Custom prompt text here..."  # Uncomment to add a custom ATS prompt string

    # Hidden keywords injected into PDF metadata for ATS keyword matching (invisible to readers)
    injected_keywords_list = ["Data Analyst", "GCP", "Python", "SQL", "Tableau"]

[personal]
    # Your first name, displayed in the header
    first_name = "John"
    # Your last name, displayed in the header
    last_name = "Doe"
    # Your mailing address, used as default sender-address in the cover letter
    # address = "123 Main St, San Francisco, CA 94102"

    # The order of entries below controls the display order of icons/links in the header
    # The custom value is for any additional information you want to add, name it as custom-1, custom-2, etc.
    [personal.info]
        # Shown as clickable icon in header; auto-links to github.com/<value>
        github = "yunanwg"
        # Shown as phone icon in header; displayed as-is with a tel: link
        phone = "+33 6 12 34 56 78"
        # Shown as envelope icon in header; auto-links to mailto:<value>
        email = "john.doe@me.org"
        # Shown as clickable icon in header; auto-links to linkedin.com/in/<value>
        linkedin = "johndoe"
        # Shown as clickable icon in header; auto-links to gitlab.com/<value>
        gitlab = "yunanwg"
        # Shown as clickable globe icon in header; auto-links to https://<value>
        homepage = "johndoe.dev"
        # Shown as ORCID icon in header; auto-links to orcid.org/<value>
        orcid = "0000-0000-0000-0000"
        # researchgate = "John-Doe"  # Shown as a clickable ResearchGate icon in header
        # Shown as map-marker icon in header; displayed as plain text (no link)
        location = "San Francisco, CA"
        # extraInfo = "Available for remote work"  # Shown as extra text with an info icon in header
        # Insert a line break in the header info, splitting icons across two lines
        #linebreak = ""

        # Custom info with awesome icon
        [personal.info.custom-1]
            awesomeIcon = "graduation-cap" # See https://typst.app/universe/package/fontawesome/
            # Display text shown next to the icon in the header
            text = "PhD in Data Science"
            # URL the icon/text links to; omit for non-clickable entries
            link = "https://www.example.com"

        # Custom info with image icon
        # To use a custom image icon, pass it via custom-icons in cv.typ:
        #   custom-icons: ("custom-2": image("assets/my-icon.png"))
        [personal.info.custom-2]
            awesomeIcon = "certificate"
            text = "AWS Certified"
            link = "https://aws.amazon.com/certification/"


# Add a [lang.xx] section for each language you support
# Each section must contain header_quote, cv_footer, and letter_footer
[lang.de]
    # Italic tagline displayed below your name and contact info
    header_quote = "Erfahrener Datenanalyst sucht ab sofort eine Vollzeitstelle"
    # Text shown in the left side of the footer on CV pages
    cv_footer = "Lebenslauf"
    # Text shown in the left side of the footer on cover letter pages
    letter_footer = "Anschreiben"

[lang.en]
    # Italic tagline displayed below your name and contact info
    header_quote = "Experienced Data Analyst looking for a full time job starting from now"
    cv_footer = "Curriculum vitae"
    letter_footer = "Cover letter"

[lang.fr]
    header_quote = "Analyste de données expérimenté à la recherche d'un emploi à temps plein disponible dès maintenant"
    cv_footer = "Résumé"
    letter_footer = "Lettre de motivation"

[lang.zh]
    header_quote = "具有丰富经验的数据分析师,随时可入职"
    cv_footer = "简历"
    letter_footer = "申请信"

[lang.it]
    header_quote = "Senior data analyst attualmente disponibile per una posizione di lavoro full-time"
    cv_footer = "Curriculum vitae"
    letter_footer = "Lettera di presentazione"

# For languages that are not written in Latin script
# Currently supported non-latin language codes: ("zh", "ja", "ko", "ru")
[lang.non_latin]
    # Your name in non-Latin script
    name = "王道尔"
    # Font to use for non-Latin text (e.g. "Heiti SC", "Noto Sans JP")
    font = "Heiti SC"

Key Reference

Root

Key Type Default Description
language string "en" Must match folder suffix: "en" → modules_en/, "fr" → modules_fr/, etc.

[layout]

Key Type Default Description
awesome_color string "skyblue" Accent color used for section titles, icons, and highlights in the rendered PDF. Preset: skyblue, red, nephritis, concrete, darknight — or any hex like "#1E90FF"
before_section_skip string "1pt" Controls vertical spacing; increase to spread out sections/entries, decrease to compact
before_entry_skip string "1pt" Vertical space before each entry within a section
before_entry_description_skip string "1pt" Vertical space before entry description text
paper_size string "a4" Page dimensions and margins applied to the PDF output. Possible values: a4 (default), us-letter
date_width string (optional) Overrides the width of the right-side date column in entries; omit to use sensible defaults
font_size string (optional) Overrides base font size for body text; affects overall density of content

[layout.fonts]

Key Type Default Description
regular_fonts array ["Source Sans 3"] Typeface used for body text, entry descriptions, and general content
header_font string "Roboto" Typeface used for the name and section headings in the header

[layout.header]

Key Type Default Description
header_align string "left" Aligns the entire header block (name, info, quote). Possible values: left, center, right
display_profile_photo bool true false hides the photo and gives full width to name/info
profile_photo_radius string "50%" "50%" = circle, "0%" = square, "10%" = rounded corners
info_font_size string "10pt" Font size for the contact-info line (email, phone, links) in the header

[layout.entry]

Key Type Default Description
display_entry_society_first bool true true = company name bold on top, role below; false = role bold on top. Must be true to use cv-entry-start / cv-entry-continued pattern
display_logo bool true false hides all company/organisation logos in entries

[layout.footer]

Key Type Default Description
display_page_counter bool false true shows "1/2" style page numbers in the footer
display_footer bool true false removes the footer entirely (no page text, no counter)

[inject]

Key Type Default Description
custom_ai_prompt_text string (optional) Hidden text injected into the PDF for ATS keyword matching (invisible to readers). Uncomment to add a custom ATS prompt string
injected_keywords_list array ["Data Analyst", "GCP", "Python", "SQL", "Tableau"] Hidden keywords injected into PDF metadata for ATS keyword matching (invisible to readers)

[personal]

Key Type Default Description
first_name string "John" Your first name, displayed in the header
last_name string "Doe" Your last name, displayed in the header
address string (optional) Your mailing address, used as default sender-address in the cover letter

[personal.info]

The order of entries below controls the display order of icons/links in the header The custom value is for any additional information you want to add, name it as custom-1, custom-2, etc.

See the full example above for all supported keys.

Key Type Default Description
github string Shown as clickable icon in header; auto-links to github.com/
phone string Shown as phone icon in header; displayed as-is with a tel: link
email string Shown as envelope icon in header; auto-links to mailto:
linkedin string Shown as clickable icon in header; auto-links to linkedin.com/in/
gitlab string Shown as clickable icon in header; auto-links to gitlab.com/
homepage string Shown as clickable globe icon in header; auto-links to https://
orcid string Shown as ORCID icon in header; auto-links to orcid.org/
researchgate string (optional) Shown as a clickable ResearchGate icon in header
location string Shown as map-marker icon in header; displayed as plain text (no link)
extraInfo string (optional) Shown as extra text with an info icon in header
linebreak string (optional) Insert a line break in the header info, splitting icons across two lines

[personal.info.custom-N]

Custom info with awesome icon

Key Type Default Description
awesomeIcon string See https://typst.app/universe/package/fontawesome/
text string Display text shown next to the icon in the header
link string URL the icon/text links to; omit for non-clickable entries

[lang.<code>]

Add a [lang.xx] section for each language you support Each section must contain header_quote, cv_footer, and letter_footer

Key Type Default Description
header_quote string Italic tagline displayed below your name and contact info
cv_footer string Text shown in the left side of the footer on CV pages
letter_footer string Text shown in the left side of the footer on cover letter pages

[lang.non_latin]

For languages that are not written in Latin script Currently supported non-latin language codes: ("zh", "ja", "ko", "ru")

Key Type Default Description
name string Your name in non-Latin script
font string Font to use for non-Latin text (e.g. "Heiti SC", "Noto Sans JP")