CV_Creator is a solid, automated, and intelligent resume generator written in Python. It parses structured data and aesthetic layouts from human-readable YAML configuration files, and compiles them into a highly professional, pixel-perfect PDF.
Gone are the days of wrestling with Microsoft Word margins, misaligned bullet points, or having your resume awkwardly bleed onto a second page because of a single extra line. With its integrated dynamic auto-scaling engine, CV_Creator performs an iterative loop (binary search optimization) on font sizes and line heights to guarantee that your entire resume fits perfectly onto exactly one page, every single time.
The following diagram illustrates how CV_Creator separates data from style, maps YAML configurations to native Python classes, and runs the iterative fitting loop to output a beautiful single-page PDF.
flowchart TD
subgraph Input Configurations
D[data_en.yaml / data_fr.yaml] -->|Data Fields| L[lib_config.py]
S[style.yaml] -->|Styling Rules| L
end
subgraph Data Mapping
L -->|Recursively Maps| CD[ConfigData Object]
L -->|Recursively Maps| CS[ConfigStyle Object]
end
subgraph Compiler & Auto-Scaling Loop
CD & CS -->|Inject| CC[CVCreator FPDF2]
CC -->|1. Init scale=1.0| FL{Fitting Loop}
FL -->|2. Render Probe| PB[Probe In-Memory PDF]
PB -->|3. Check Page Count| PC{Pages > 1?}
PC -->|Yes| SC[Scale down: scale * 0.95]
SC --> FL
PC -->|No or scale < 0.60| RO[Final Render]
end
subgraph Output
RO -->|Save| PDF[generated_cv.pdf]
PDF -->|Validate Text| VF[verify.py PDFMiner]
end
style CC fill:#c0504d,stroke:#333,stroke-width:2px,color:#fff
style FL fill:#e1daee,stroke:#333,stroke-width:1px
style PDF fill:#2ecc71,stroke:#333,stroke-width:2px,color:#fff
- Separated Concerns: Keep your content (
data.yaml) completely separate from your styling rules (style.yaml). Update your job descriptions without breaking the layout! - Intelligent Auto-Scaling: Built-in
fit_to_one_page()method. If your resume exceeds one page, the generator automatically scales down font sizes and spacing recursively (down to a safety floor of0.60) until everything fits beautifully on a single sheet. - Premium Multi-Column Layout: Renders a gorgeous, asymmetrical layout featuring:
- An elegant contact, links, and personal interests sidebar with a soft-filled background (
#E1DAEE). - A clean main column for education and technical skills.
- A dual-column bottom showcase for professional experiences, academic projects, and personal repositories.
- An elegant contact, links, and personal interests sidebar with a soft-filled background (
- Language & Translation Ready: Built-in label mapping support (
labelsblock) to seamlessly generate resumes in both English and French from separate data configs using the same core style engine. - Built-In PDF Verification: An independent verification tool (
verify.py) utilizingpdfminerto extract and print raw text from the compiled PDF, ensuring searchability and screen-reader compatibility (ATS optimization).
cv_creator/
├── cv_creator.py # Core PDF Compiler & Layout Generator (FPDF2)
├── verify.py # PDF Parser to verify if the Generated PDF is valid and usable in automated systems
├── lib_config.py # YAML parser, recursive mapper, and CLI handler
├── style.yaml # Universal style settings (fonts, margins, layout ratios)
├── data_template.yaml # English content (Profile, education, projects, skills)-
Clone the Repository:
git clone https://github.com/nath54/cv_creator.git cd cv_creator -
Create and Activate a Virtual Environment:
# Windows python -m venv .venv .venv\Scripts\activate # macOS/Linux python3 -m venv .venv source .venv/bin/activate
-
Install Required Dependencies:
pip install -r requirements.txt
You can run CV_Creator via the command line. The program accepts command-line arguments to specify custom data and style configurations.
python cv_creator.py --data_config data_template.yaml --style_config style.yaml -o cv_template.pdfExtract the raw text from your compiled PDF to verify that all text is correctly indexed and fully searchable:
python verify.py cv_template.pdfAdd or edit your experiences, projects, and skills. Links are clickable in the generated PDF!
first_name: Jean
last_name: Dupont
tagline: IT Technician Student
email: [EMAIL_ADDRESS]
links:
- name: GitHub
url: https://github.com/jean_dupont
experience:
- title: Internship
organization: Big Bang
dates: May - August 2026
description: Software development for the Big Bang company.Fine-tune margins, change page formats, or adjust column width ratios with absolute ease:
page:
size: A4
margin:
top: 10.0
bottom: 10.0
left: 10.0
right: 10.0
layout:
columns: 2
ratio: 0.35 # Left sidebar takes 35% of the total page widthThis project is licensed under the MIT License. Feel free to fork, customize, and compile your way to your dream job!