Why I created cv-converter Link to heading

This project started from the idea of turning my CV into an HTML template and automating the generation of PDF and DOCX versions using a DevOps approach.

I wanted a local, reproducible and version-controlled solution — something fully under my control — while taking the opportunity to build a clean workflow using tools I rely on daily: direnv, pre-commit, Terraform, GitHub…

The idea was simple:

  • write my CV in HTML using a clean structure
  • automatically generate PDF and DOCX versions
  • ensure the output stays fully ATS-friendly
  • automate everything with a DevOps-style workflow:
    Direnv, Pre-commit, Terraform, GitHub Actions…

cv-converter is the result of this mix between a personal need and the opportunity to build a fully local, reliable and reproducible tool.


A ready-to-use HTML template Link to heading

The project includes a complete HTML template (FR + EN):

  • classic sections: Skills, Experience, Education
  • clean semantic structure (<h1>, <h2>, <ul>, <p>)
  • simple, sober, ATS-friendly styling
  • easy to customize

This template serves as the single source of truth for generating all CV formats.


Why write your CV in HTML? Link to heading

✨ Full flexibility Link to heading

You control the layout and the styling.

🚀 Natural ATS compatibility Link to heading

ATS systems parse structured HTML extremely well.

🔁 One source = multiple outputs Link to heading

One HTML file → a synchronized PDF + DOCX.

The generated documents (PDF and DOCX) preserve the semantic text structure from the HTML template, ensuring full ATS compatibility.
Nothing is converted to images: headings, lists, dates, sections and skills remain machine-readable.

🧩 Perfect for a DevOps workflow Link to heading

  • Git versioning
  • automated pipelines
  • reproducible environments
  • easy local-first development

Automatic PDF + DOCX generation Link to heading

The converter uses:

  • WeasyPrint to create a clean PDF
  • python-docx to generate a structured DOCX
  • BeautifulSoup4 to parse the HTML

Example:

python cv_converter.py CV-template-en.html

Output: output/my_cv.pdf and output/my_cv.docx.


A project built as a DevOps playground Link to heading

This project also became a small DevOps lab where I integrated:

  • Direnv for Python environment isolation
  • Pre-commit for quality (Black, Ruff, MyPy, TFLint, Tfsec…)
  • Terraform to automatically manage the GitHub repository
  • A reproducible, portable, fully local workflow

This CV generator is both a personal tool… and a DevOps discipline exercise.


The project Link to heading

👉 Available here: https://github.com/xgueret/cv-converter