Skip to content

About

No description, website, or topics provided.

Resources

Stars

17 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Resume as Code

A template for managing your resume like a codebase, designed to be maintained by an AI coding agent (Claude Code, or any agent that can edit files and run a shell script).

The idea: content lives in small Markdown partials, each resume variant is a plain-text recipe that orders those partials, and one script renders every variant to Markdown, HTML, PDF, and DOCX. Edit a partial once and every variant updates. Retarget your resume for a job posting by writing three small files, not by forking a document.

Full write-up: Resume as Code: How I Manage My Resume with Claude Code.

Quick start

  1. Use this repo as a template (or clone it).
  2. Replace the John Doe content in src/partials/ with your own. Keep the file-per-section, file-per-role structure.
  3. Rewrite src/headline/ and src/summary/ for each variant you want.
  4. Set NAME and TITLE at the top of build.sh.
  5. Build:
./build.sh                      # build all variants
./build.sh general              # build one variant
CHROME=/path/to/chrome ./build.sh   # non-default Chrome location

Each variant generates (into dist/<variant>/, gitignored):

  • <NAME>.md — the assembled single-document Markdown (handy for pasting into web forms)
  • <NAME>.pdf — via pandoc → HTML → headless Google Chrome
  • <NAME>.docx — via pandoc (native)

Requires pandoc and Google Chrome. No LaTeX, no templating engine, no dependencies to install beyond tools you likely already have.

After building, the script prints each PDF's page count, warns if a PDF exceeds MAX_PAGES (default 2, override with MAX_PAGES=3 ./build.sh), and warns about orphaned source files that no recipe references.

See examples/ for committed sample output from the three included variants.

How it works

A variant recipe is just an ordered list of partials:

# Portfolio variant: Writing & Open Source elevated near the top.
partials/header.md
headline/portfolio.md
summary/portfolio.md
partials/writing.md      # elevated for portfolio
partials/skills.md
partials/role-acme-head.md
partials/role-acme-body.md
...

Reordering lines reorders sections. Deleting a line drops a section. The same role can carry two "head" files with different framing (role-acme-head.md vs role-acme-head-manager.md) that share one body, so accomplishments never drift apart. Layout is data, not code.

Layout

Path What
src/partials/ Shared content blocks (header, skills, each role, writing, education)
src/headline/<variant>.md Per-variant title + tagline
src/summary/<variant>.md Per-variant professional summary
src/variants/<variant>.txt Recipe: ordered list of partials (relative to src/); # comments allowed
style.css Print styling for the PDF
build.sh Build script
applications.md Log of where each resume was sent (variant + commit SHA)
postings/ Job postings / audience notes that drove each variant
examples/ Committed sample output (PDFs) from the included variants
dist/ Generated output (gitignored)
CLAUDE.md Instructions your AI agent reads every session

Included variants

Variant Use it for
general Balanced, ATS-safe, reverse-chronological. The workhorse for online applications.
engineering-manager Leadership framing of the most recent role; demonstrates the head/body split.
portfolio Writing & Open Source near the top. For direct outreach and your network.

Adding a variant

  1. Add src/headline/<name>.md and src/summary/<name>.md.
  2. Add src/variants/<name>.txt listing the partials in the order you want.
  3. Save the job posting or audience notes that motivated it to postings/<name>.md.
  4. ./build.sh <name>.

Or, with an AI agent: paste the job posting and ask for a variant targeting it. The agent writes the three files, saves the posting, builds, and you review a small diff.

Applying somewhere

  1. Build the variant and send/upload the PDF or DOCX from dist/<variant>/.
  2. Add a row to applications.md with the variant and current commit SHA.
  3. For significant applications, tag the commit: git tag applied/<employer>-<yyyy-mm>.

To reproduce exactly what you sent: git checkout <commit> && ./build.sh <variant>.

Working with an AI agent

CLAUDE.md is read by Claude Code at the start of every session. It documents the build, the workflow conventions above, and content style rules. The habit that makes this system compound: every time you correct the agent, codify the correction in CLAUDE.md so every future session starts already knowing it.

License

MIT. See LICENSE.

About

No description, website, or topics provided.

Resources

Stars

17 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages