1. Posts/

Building and deploying a "resume-as-code"

·3 mins

I recently decided to test out the job market and look for a new challenge. My plan was to:

  1. Update my resume to capture the last nine years of experience
  2. Build a simple and performant personal landing page to host my resume
  3. Keep a better inventory of my work history and projects for future updates

Concept #

My previous resume had been created using LaTeX. I enjoyed this approach as it meant that the content could be decoupled from the styling and layout of the document. I was looking for something similar but more approachable. A quick search brought me to the JSON Resume and yaml-resume projects. I was intrigued by the idea of keeping work history and personal details in a structured data file, YAML in particular. I’ve used Static Site Generators in the past, such as Hugo or Gatsby, which accomplish something similar. Page content can be written in simple Markdown and the resulting pages are styled at build time. It seemed natural to combine these two ideas and create a static resume website based off my structured data files.

Breakthrough #

Fortunately for me, the Resume A4 theme already exists for Hugo. This particular implementation constrains the web layout to an ISO A4 sized page for easy conversion to PDF or for print. I made a few styling tweaks and converted the page sizing to US Letter (8.5x11") to match my locale.

@media print {
  @page {
    size: 8.5in 11in;
    margin: 0;

.paper {
  width: 215.9mm;
  height: 279.4mm; 

Now I simply had to record my work history and personal info in YAML files:

- company: Spreckels Union School District
    - role: Information Services Director
      date: "July 2015 - Present"
    - role: District Technology Coordinator
      date: "July 2014 - June 2015"

Deployment #

With the content created, I needed a place to host the finished product. Netlify has been my go-to in the past but since I’m currently leaning into the Azure space pretty heavily I decided to deploy using Azure Static Web Apps. The CI/CD workflow is simple yet powerful. It triggers on main branch pushes or pull requests. This means that a pull request from a feature branch will automatically generate a live staging environment in Azure to preview and validate the changes. It will be discarded once the pull request is merged. Very cool!

name: Azure Static Web Apps CI/CD

      - main
    types: [opened, synchronize, reopened, closed]
      - main

Benefits #

I see a few major benefits when building a resume this way:

  • Structured data allows me to cleanly and concisely document my history and experiences.
  • Committing my data into source control makes it easy to version and implement content changes.
  • CI/CD pipelines make deploying changes effortless.
  • A live resume website provides a positive web presence and acts as a portfolio piece.

I’m thrilled with the end result and love that I can continuously deploy tweaks and updates in the future.