When you're applying to different types of roles, you often need different versions of your resume. Each one emphasizes different experience, different skills, different framing.
This leads to a familiar mess: resume_v2.docx, resume_final_FINAL.docx, resume_variant_jan2024.pdf. You update one, forget to update the others, occasionally paste the wrong version into an application. Formatting breaks when exporting to PDF. It's frustrating.
There's also the AI problem. Tools like ChatGPT can help tailor a resume to a job posting, but the results often feel generic. They only know what you paste into the chat window—they can't reference that relevant project from three years ago because they've never seen your full work history.
I got tired of this workflow, so I tried something different: building a resume system into my personal website.
The Problems
Version management. Multiple resume variants are hard to keep in sync. You polish a bullet point in one version and forget to update it in the others.
Manual exports. Every small tweak means re-exporting: open Word, make the change, export to PDF, check it fits on one page, adjust spacing, export again.
Limited AI assistance. When you ask an AI to help tailor your resume, it can only work with what you've pasted in. It can't draw on your full work history to surface relevant experience you might have overlooked.
The Approach: Resume as Structured Data
The core idea is simple: instead of maintaining separate Word documents, create one master data file containing all your experience—every job, bullet point, project, and skill. Then use config files to select which pieces to include for each role type.
One config pulls engineering-focused bullets. Another config pulls different bullets. Same underlying data, different presentations. When you need a PDF, the site generates it on-demand from the HTML. No manual exports.
The shift is thinking of a resume as structured data to query rather than a document to edit.
How AI Assistance Improves
This is where the approach becomes more useful than expected. I work on my website in VS Code with Claude Code, which means Claude can see my entire codebase—including that master data file with my full career history.
When I find an interesting job posting, I can ask Claude something like: "Here's a job description. Looking at my master resume data, which experiences seem most relevant? Can you draft a config for this?"
With access to the complete history, Claude can surface things you might not have thought of—like a project from years ago that happens to align with what the company is building. The AI becomes genuinely helpful because it finally has context.
The Structure
Here's roughly how it's organized:
Master data file. A TypeScript file containing all jobs, bullet points (each with an ID), projects, skills, and several summary variants. Everything that could possibly go on a resume lives here.
Config files. Each resume variant is a small config specifying which summary to use, which bullet IDs to include from which jobs, and which projects to feature. It's essentially a query against the master data.
HTML pages. Each config renders as a clean HTML resume at its own URL.
PDF generation. A separate route generates a PDF on-the-fly using headless Chrome. Since it's rendering real HTML text, it tends to be ATS-friendly.
I built this with Next.js and Puppeteer, but the concept could work with other frameworks that can render HTML and generate PDFs.
Benefits
- Single source of truth. Updating a bullet once updates it everywhere that bullet is used.
- AI with full context. Claude can see the entire work history and help identify relevant experience.
- No manual PDF workflow. Just visit a URL.
- Quick iteration. Creating a new variant for a specific job posting takes minutes.
- Version control. Everything is in git, so you can track changes and revert mistakes.
- Shareable URLs. Send a link instead of attaching a file.
Getting Started
This doesn't require building everything at once. If you have a Next.js site or something similar, you could start small:
- Create a data file with your experience as structured objects
- Build a single resume page that reads from it
- Add PDF generation later if it's useful
- Add variant configs as the need arises
The technical implementation details could fill another post. For now, I mainly wanted to share the general idea—it's been a nice quality-of-life improvement, and maybe it's useful for others thinking about similar problems.
