resume-rendering
SkillATS-friendly resume PDF builder that ships the file, not just the text: the tailored resume as RenderCV YAML, typeset to a clean single-column PDF with an ATS-safe theme (plain-text links, no icon fonts, no header note), paper size by market, a page-count check, a text-layer check that shows what an applicant tracking system will parse, a DOCX twin for portals that want Word, and a matching cover-letter PDF. Use whenever a resume or CV has to be delivered as a PDF or Word file.
Instructions
Overview
A tailored resume only helps once it is a file that parses cleanly and looks professional. This skill turns the tailored content into a typeset PDF with RenderCV, checks it the way an applicant tracking system reads it, and produces the Word twin and cover letter some portals ask for. It replaces hand-made HTML-to-PDF conversions and two-column templates whose text comes out scrambled.
Mental model
- Content and design are separate. The candidate's facts live in
cv.sectionsof a YAML file; the look lives in thedesign:block. Tailoring changes the content; the design stays fixed. - The parser reads the text layer, not the picture. A resume is checked by extracting its text and reading it top to bottom.
- One source, three files:
<Name>_Resume.pdf, the same content as.docx, and the cover letter as PDF.
Rules
Build the YAML
Start once with rendercv new "Full Name" --theme engineeringresumes, then replace the sample content. Structure:
cv:
name: Jane Doe
location: Berlin, Germany
email: [email protected]
phone: "+49 30 1234567"
website: https://janedoe.dev/
social_networks:
- network: LinkedIn
username: janedoe
sections:
summary:
- Backend engineer, 7 years in payments; led the PSD3 migration at a 40-person fintech.
experience:
- company: Finly
position: Senior Backend Engineer
location: Berlin
start_date: 2022-03
end_date: present
highlights:
- Cut payment failure rate from 2.1% to 0.6% by redesigning retry logic (Go, Kafka)
education:
- institution: TU Munich
area: Computer Science
degree: MSc
start_date: 2014-10
end_date: 2017-03
skills:
- label: Languages
details: Go, Python, SQL
design:
theme: engineeringresumes
page:
size: a4
show_top_note: false
show_footer: false
header:
connections:
show_icons: false
phone_number_format: international
templates:
experience_entry:
main_column: "**POSITION**, COMPANY -- LOCATION\nDATE\nSUMMARY\nHIGHLIGHTS"
date_and_location_column: ""
education_entry:
main_column: "**INSTITUTION**, DEGREE_WITH_AREA -- LOCATION\nDATE\nSUMMARY\nHIGHLIGHTS"
date_and_location_column: ""
normal_entry:
main_column: "**NAME** -- **LOCATION**\nDATE\nSUMMARY\nHIGHLIGHTS"
date_and_location_column: ""Section titles are free text (experience, Projects, Berufserfahrung); Markdown **bold** works inside entries. Dates as YYYY-MM or present.
ATS-safe design
| Setting | Value | Why |
|---|---|---|
theme | engineeringresumes (alternatives sb2nov, ember) | Single column, dates next to each entry, links printed as full URLs |
header.connections.show_icons | false | Icon fonts put private-use characters into the text layer |
page.show_top_note, page.show_footer | false | Otherwise "Last updated in ..." becomes the first line parsers read and "Name – 1/2" lands between sections |
header.connections.phone_number_format | international for cross-border applications | Prints +49 30 ... instead of a national 030 ... |
templates.<entry>.main_column | DATE on the line under the title, date_and_location_column: "" | A right-hand date column is a separate text box; parsers can read it after later sections, so a date ends up far from its job or degree |
page.size | us-letter for US/Canada, a4 elsewhere | Market convention; prints without scaling |
| Photo | Only where the market expects one | See the market's conventions |
Avoid classic, engineeringclassic, opal, moderncv, and ink for portal submissions: they render social links as bare usernames or icon glyphs, or move dates away from their entries.
Render and check
rendercv render Jane_Doe_CV.yaml --pdf-path Jane_Doe_Resume.pdf --markdown-path Jane_Doe_Resume.md -nohtml -nopng
doc-export check Jane_Doe_Resume.pdf --max-pages 2 --text 40Read the text output: name and contact first, then sections in order, each job's title, company, and dates together, no junk characters, no lost bullets. With the templates above every date follows its entry's title line; if a date still lands elsewhere (a custom entry type without the template), add that entry type to templates the same way and re-render. Cut content rather than shrink fonts when the page count is over the market's norm.
Word twin and cover letter
- DOCX: replace the first line of the generated Markdown (
# Jane Doe's CV) with# Jane Doe, thendoc-export docx Jane_Doe_Resume.md -o Jane_Doe_Resume.docx --font Calibri --size 10.5 --margins 0.75in --paper a4. - Cover letter: write
cover-letter.md, thendoc-export pdf cover-letter.md -o Jane_Doe_Cover_Letter.pdf --font Calibri --size 11 --margins 1in --paper a4 --max-pages 1. - File names carry the candidate's name, never "resume_final_v3".
Examples
Example 1: icon theme
❌ theme: classic with icons on. pdftotext shows `` before the email and "janedoe" instead of the LinkedIn URL.
✅ theme: engineeringresumes, show_icons: false: the text layer starts Jane Doe | Berlin, Germany | [email protected] | linkedin.com/in/janedoe.
Example 2: two-column template
❌ A two-column HTML template printed to PDF: the parser reads the skills sidebar in the middle of the first job.
✅ RenderCV's single-column theme; the check shows each job's title, company, dates, and bullets together.
Checklist
- Content in YAML matches the tailored resume exactly; nothing invented.
engineeringresumes(orsb2nov/ember), icons, top note, and footer off, paper size for the market.doc-export checkclean: within the page count, no private-use glyphs, text in reading order.- DOCX twin when a portal or recruiter wants Word; cover letter PDF in the same style.
- Files named
<First>_<Last>_Resume.pdf/.docx/_Cover_Letter.pdfand saved next to the YAML source.
Composition / References
ats-optimization— what goes into the content and how it is tailored.resume-conventions— market rules: length, photo, personal data, date formats.document-export— the DOCX and cover-letter exports and the PDF check.- RenderCV documentation