I switched jobs in March 2024 and spent an entire weekend updating my resume everywhere - LinkedIn, my company bio, personal site, plus like 6 other places I'd forgotten about. Same fucking data, different formats every time. JSON Resume fixes this by letting you write your resume once as structured data, then generate whatever format you need.
The Real Problem It Solves
You know the drill: you land a new gig, update your LinkedIn, then remember your company website needs updating, then your PDF resume is out of date, then your personal site... JSON Resume makes this suck less. Write your career history once in a standardized JSON format, then generate HTML, PDF, Word docs, or whatever else you need.
There's this schema thing that covers the usual resume stuff - work history, education, skills, whatever. Here's what a basic JSON resume looks like:
{
"basics": {
"name": "Jane Developer",
"label": "Full Stack Engineer",
"email": "jane@example.com",
"phone": "(555) 123-4567",
"url": "https://janedev.com",
"summary": "I debug production issues at 3am and somehow still love this job"
},
"work": [{
"name": "TechCorp",
"position": "Senior Engineer",
"startDate": "2023-01-15",
"endDate": "2024-12-01",
"summary": "Built some microservices, they broke constantly"
}],
"skills": [{
"name": "Backend",
"keywords": ["Node.js", "Python", "Docker", "PostgreSQL"]
}]
}
What Actually Works Well
Version Control: Your resume becomes part of your development workflow. I keep mine in Git alongside my dotfiles - when I change jobs, it's a simple commit and push. Branch for different roles, merge when you land something.
Theme Swapping: There are tons of themes but most are garbage. Maybe 20 actually work without breaking on real data. The elegant theme and stackoverflow theme are solid choices.
Automated Generation: Set up a GitHub Action to regenerate your resume whenever you push changes. Deploy to GitHub Pages, update your PDF automatically, sync to your portfolio site.
ATS Compatibility: JSON resumes export to clean HTML/PDF that actually parses correctly in applicant tracking systems. No more wondering if your fancy formatting broke the parser.
The Parts That Kinda Suck
Setup Complexity: You need Node.js, understand JSON syntax, and be comfortable with command-line tools. The resume-cli works but assumes you know what you're doing.
Theme Quality: Most themes haven't been updated since 2019. The ones that work often break when you use real data instead of the sample data. Pro tip: test themes with your actual content before committing.
JSON Syntax Hell: One missing comma and everything dies. Spent like 3 hours debugging why my education section vanished - turns out the elegant theme wanted an array but I had a single object. The error? "ValidationError: child 'education' fails" - super fucking helpful, right?
Export Limitations: PDF generation is hit-or-miss depending on your theme and data. Some themes generate gorgeous HTML but terrible PDFs. You'll end up manually tweaking CSS for print styles.
This tool makes sense if you're a developer who already lives in JSON/Git/CLI world. If you just need to update a resume twice a year, stick with Google Docs or Canva. JSON Resume is infrastructure for people who treat their career data like code.