Skip to main content

Automate Your Resume Pipeline

Build a markdown-based resume management system with automated multi-format exports using Pandoc, shell scripting, and version control

Automate Your Resume Pipeline

Introduction

Managing multiple versions of your resume across different formats (PDF, HTML, DOCX) is tedious. Every time you update your experience or skills, you need to manually regenerate each format, risking inconsistencies and wasting valuable time. What if you could write your resume once in plain text and automatically export it to any format you need?

This guide shows you how to build an automated resume pipeline using Markdown, Pandoc, and shell scripting. We'll use Homer Simpson's illustrious career at Springfield Nuclear Power Plant as our demonstration.

Why Markdown for Resumes?

Version Control Ready

  • Track every change with Git
  • See exactly what changed between versions
  • Collaborate with mentors or colleagues
  • Roll back to previous versions instantly

Write Once, Export Anywhere

  • Single source of truth in Markdown
  • Export to PDF, HTML, PNG, DOCX
  • Consistent formatting across all outputs
  • No proprietary file formats

Developer-Friendly

  • Write in your favorite text editor
  • Automate with scripts and CI/CD
  • Template-driven customization
  • Integration with existing workflows

Architecture Overview

The resume pipeline consists of three main components:

		resume.md (Source)
    ↓
export_resume.sh (Build Script)
    ↓
Pandoc (Converter)
    ↓
Output Formats (PDF/HTML/PNG)

	

Core Files

		resume/
├── resume.md              # Source resume in Markdown
├── extra.md              # Additional content (references, etc.)
├── styles/
│   └── custom.css        # Styling for HTML/PNG output
├── scripts/
│   └── export_resume.sh  # Export automation script
└── export/               # Generated output files
    ├── Homer_Simpson_Resume.pdf
    ├── Homer_Simpson_Resume.html
    └── Homer_Simpson_Resume.png

	

Building the Resume

Step 1: Write Your Resume in Markdown

Create a resume.md file using a clean, semantic format:

		Homer J. Simpson
============
> <homer.simpson@springfield.com> • 555-DONUT • 42 years old • Springfield, USA
 
## Summary
 
Safety Inspector and Nuclear Technician with 25+ years managing mission-critical operations at Springfield Nuclear Power Plant. Proven track record preventing reactor meltdowns (mostly), maintaining compliance with federal safety regulations (when convenient), and optimizing donut consumption efficiency. Expertise spans nuclear safety protocols, union negotiations, and strategic nap scheduling.
 
## Education
 
9.1974 - 6.1978
:   **High School Diploma**; Springfield High School, Springfield
 
    **Extracurriculars**: Student Bodyguard, Junior Achievers
 
## Experience
 
6.1989 - Present
: **Springfield Nuclear Power Plant** - Springfield, USA
 
    *Safety Inspector, Sector 7-G*
 
* Monitor nuclear reactor operations ensuring compliance with minimal safety standards and preventing catastrophic meltdowns during regular working hours (excluding lunch breaks and nap times)
* Implement comprehensive safety protocols including the strategic placement of "Danger" signs and occasional button pressing when alarms sound
* Lead cross-functional collaboration with fellow technicians (Lenny and Carl) to maintain operational continuity while maximizing break room efficiency
* Achieved perfect record of no *documented* safety violations resulting in federal investigation or plant closure
* Developed innovative quality assurance methodologies utilizing visual inspection techniques (primarily through squinting at control panels)
 
5.1984 - 5.1989
: **Various Establishments** - Springfield, USA
 
    *Multiple Positions*
 
* Served in diverse roles including Plow King snow removal specialist, astronaut (NASA mission STS-201), country music manager, and grocery bagger, demonstrating adaptability and career versatility
* Successfully operated heavy machinery (snowplow) in competitive market conditions against rival snow removal service (Plow King vs. Mr. Plow)
* Completed NASA astronaut training program and participated in space shuttle mission, contributing to scientific research and ant colony studies in zero gravity
 
## Technical Skills
 
**Nuclear Operations**
Reactor monitoring, Control panel operation, Radiation detection, Emergency shutdown procedures (when awake)
 
**Safety Compliance**
OSHA regulations (basic awareness), Hazmat handling, Incident reporting, Safety drills
 
**Leadership**
Union representation, Team collaboration, Conflict resolution (mostly food-related), Employee relations
 
**Technical Tools**
Control room equipment, Radiation badges, Safety harnesses, Emergency buttons
 
## Certifications
 
Nuclear Safety Inspector License (renewed periodically)
Fork Lift Operation (expired 1997)
First Aid (CPR certification: 1992-1993)
	

Step 2: Create the Export Script

The export_resume.sh script handles all format conversions automatically:

		#!/bin/bash
# Usage: ./export_resume.sh [pdf|html|png] [--no-timestamp]
 
set -e
 
# Initialize variables
USE_TIMESTAMP=true
FORMAT=$1
 
# Check for --no-timestamp flag
if [ "$2" = "--no-timestamp" ]; then
    USE_TIMESTAMP=false
fi
 
# Extract name from resume.md (first line)
NAME=$(head -n1 resume.md | tr ' ' '_')
 
# Generate timestamp conditionally
if [ "$USE_TIMESTAMP" = true ]; then
    TIMESTAMP=$(date +"%Y%m%d%H%M%S")
    OUTPUT_FILE="export/${NAME}_${TIMESTAMP}_Resume.${FORMAT}"
else
    OUTPUT_FILE="export/${NAME}_Resume.${FORMAT}"
fi
 
# Create export directory
mkdir -p export
 
# Export based on format
case $FORMAT in
    html)
        pandoc resume.md -o "$OUTPUT_FILE" 
            --css styles/custom.css 
            --embed-resources 
            --standalone
        ;;
    pdf)
        pandoc resume.md -o "$OUTPUT_FILE" 
            --pdf-engine=pdflatex 
            -V geometry:margin=1in 
            -V fontsize=11pt
        ;;
    png)
        # First create HTML, then convert to PNG
        HTML_TEMP="export/${NAME}_temp.html"
        pandoc resume.md -o "$HTML_TEMP" 
            --css styles/custom.css 
            --embed-resources 
            --standalone
 
        wkhtmltoimage --width 1200 
            --format png 
            --quality 100 
            "$HTML_TEMP" "$OUTPUT_FILE"
 
        rm -f "$HTML_TEMP"
        ;;
esac
 
echo "✓ Export successful: $OUTPUT_FILE"
	

Step 3: Install Dependencies

Arch Linux:

		sudo pacman -S pandoc texlive-xetex wkhtmltopdf
	

Ubuntu/Debian:

		sudo apt install pandoc texlive-xetex wkhtmltopdf
	

macOS:

		brew install pandoc mactex wkhtmltopdf
	

Usage

Export to PDF

		chmod +x scripts/export_resume.sh
./scripts/export_resume.sh pdf
	

This generates: export/Homer_J._Simpson_20251115143022_Resume.pdf

Export to HTML (Development Mode)

		./scripts/export_resume.sh html --no-timestamp
	

The --no-timestamp flag is perfect for development - your HTML file path stays constant, enabling live browser refresh as you edit.

Export to PNG (For LinkedIn/Portfolios)

		./scripts/export_resume.sh png
	

Creates a high-quality PNG screenshot of your resume, perfect for quick previews or social media.

Advanced Features

Custom Styling

Create a styles/custom.css file for branded resumes:

		body {
    font-family: 'Georgia', serif;
    max-width: 800px;
    margin: 40px auto;
    line-height: 1.6;
    color: #333;
}
 
h1 {
    border-bottom: 3px solid #2c3e50;
    padding-bottom: 10px;
}
 
h2 {
    color: #2c3e50;
    margin-top: 30px;
}
 
blockquote {
    border-left: 4px solid #3498db;
    padding-left: 20px;
    color: #555;
}
	

Version Control Integration

Track all resume changes with Git:

		# Initialize repo
git init
git add resume.md extra.md scripts/
git commit -m "Initial resume version"
 
# Create version tags
git tag v1.0-general
git tag v1.1-senior-positions
 
# Create tailored versions
git checkout -b resume-tech-focus
# Edit resume.md to emphasize technical skills
git commit -m "Tech-focused resume variant"
	

Automated Exports with Git Hooks

Create a post-commit hook to auto-generate PDFs:

		#!/bin/bash
# .git/hooks/post-commit
 
if git diff --name-only HEAD HEAD~1 | grep -q "resume.md"; then
    echo "Resume changed - auto-generating PDF..."
    ./scripts/export_resume.sh pdf --no-timestamp
    echo "✓ PDF updated"
fi
	

Multiple Resume Variants

Maintain tailored resumes for different roles:

		resume/
├── resume.md                    # Master resume
├── resume_tailored_1.md        # Tech-focused
├── resume_tailored_2.md        # Management-focused
└── scripts/
    └── export_all.sh           # Batch export script

	

Create export_all.sh:

		#!/bin/bash
for resume in resume*.md; do
    echo "Exporting $resume..."
    NAME=$(basename "$resume" .md)
    pandoc "$resume" -o "export/${NAME}.pdf" 
        --pdf-engine=pdflatex 
        -V geometry:margin=1in
done
echo "✓ All resumes exported"
	

Real-World Workflow

Here's how Homer (or you) would use this system:

1. Update Experience

		vim resume.md  # Add new accomplishment at power plant
	

2. Generate All Formats

		./scripts/export_resume.sh pdf
./scripts/export_resume.sh html --no-timestamp
./scripts/export_resume.sh png
	

3. Version Control

		git add resume.md
git commit -m "Add Sector 7-G safety achievement"
git tag v2.3-nuclear-focus
	

4. Deploy

		# Upload to personal website
scp export/Homer_J._Simpson_Resume.html user@site.com:/var/www/resume/
 
# Email PDF to recruiter
# Attach: export/Homer_J._Simpson_20251115_Resume.pdf
	

Benefits

Time Savings

  • Update once, export to all formats in seconds
  • No manual copy-paste between Word/PDF/LinkedIn
  • Automated deployment with scripts

Consistency

  • Single source of truth prevents version drift
  • All formats guaranteed to match
  • No risk of sending outdated resume version

Professionalism

  • Clean, consistent formatting across outputs
  • Version control shows attention to detail
  • Easy to maintain multiple tailored versions

Flexibility

  • Quick edits in any text editor
  • Easy A/B testing of different phrasings
  • Rollback to previous versions instantly

Inspiration & Resources

This resume pipeline approach is inspired by:

Conclusion

Building an automated resume pipeline transforms resume maintenance from a dreaded chore into a streamlined workflow. By treating your resume as code - version controlled, automated, and template-driven - you can focus on what matters: showcasing your accomplishments.

Whether you're Homer Simpson documenting decades of nuclear safety inspection or a developer managing multiple resume variants for different roles, this system scales to your needs. Start with a simple resume.md, add the export script, and you'll never manually format a resume again.

The complete example (including Homer's full resume) is available on GitHub.

Now stop manually updating Word documents and start managing your resume like a developer. D'oh!