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

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:
- mszep/pandoc_resume - Original Pandoc resume template
- Markdown Resume with Pandoc - Comprehensive guide
- Small Sharp Software Tools - Pandoc tutorial
- Simple Markdown Resume - HTML/PDF workflow
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!