This repository contains the source data and scripts for generating perfectly synchronized bi-lingual (English and Spanish) versions of Gustavo Juantorena's CV.
The pipeline separates content data from layout and design, ensuring that as new experiences are added, both language versions and PDF files are updated seamlessly and accurately without duplication of effort.
src/cv_data.yaml: The source of truth. All CV content resides here.src/cv_template.md.j2: The Jinja2 template dictating the layout of the Markdown file.src/build_cv.py: Python script that reads the YAML data and renders the template to produce the English and Spanish Markdown files.generate_pdf.sh: Main executable script. Runs the Python build and then uses Pandoc to generate the final PDFs.src/CV_Gustavo_Juantorena.md: Auto-generated Spanish Markdown output.src/english/CV_Gustavo_Juantorena_EN.md: Auto-generated English Markdown output.output/: Directory where the final PDF files are generated.
The generation pipeline requires Python 3 and Pandoc. To install the required Python libraries, run:
pip install pyyaml jinja2To update or add new items to the CV, you do not need to edit the separate Markdown files manually.
- Open
src/cv_data.yaml. - Locate the section you wish to update (e.g.,
experience,education,skills). - Add or modify the data. For text that varies by language, ensure both
enandeskeys are populated. - Save the file.
Example item format:
- id: "new_job"
title:
en: "Senior Data Scientist"
es: "Data Scientist Semi-Senior"
company:
en: "Example Corp"
es: "Example Corp"
...To generate both the Markdown updates and compile the new PDFs, simply execute the main shell script from the repository root:
./generate_pdf.shThis command will:
- Run
build_cv.pyto rewrite the.mdfiles based on the latestcv_data.yaml. - Execute Pandoc to convert the newly built Markdown files into high-quality PDFs placed in the
output/directory.
This repository includes a GitHub Actions workflow (.github/workflows/generate_cv.yml) that completely automates CV generation.
Whenever a push is made to the main branch containing changes to src/cv_data.yaml (or the generation scripts), GitHub Actions will automatically:
- Setup a Python environment and install the required dependencies (
pyyaml,jinja2). - Install Pandoc and LaTeX essentials.
- Execute
./generate_pdf.shto build fresh Markdown files and PDFs. - Auto-commit and push the newly generated files back to the repository.
You simply edit the data, push your commit, and let GitHub handle the rest!