Manage multiple resumes, with each getting its own dedicated website.
Automatically generate a professional resume with a proper PDF version, hosted for free via GitHub Pages.
Powered by: JSONResume + Engineering Theme + GH Pages + Claude Code (AI authoring)
Every
resume.jsonbecomes its own hosted site — clean, ATS-friendly, PDF-downloadable.
...and it deploys itself on every push:
- AI Authoring - Generate a JD-tailored resume with Claude Code, backed by a
[VERIFY]honesty gate so nothing fabricated ever ships. (jump to it ↓) - Multi-Resume Support - Manage multiple resumes for different job roles in one place.
- One Source of Truth - Just edit the
resume.jsonfor the resume you want to change. - Automated Deployment - Websites are generated and deployed on every resume push.
- Live Websites - Each resume is hosted with GitHub Pages for free in its own repository.
- Download PDF - A print optimized version is available as downloadable PDF.
- Clean Theme - Minimal, readable and optimized to ATS standards.
-
Fork this repo
-
Enable Actions
-
Create a Personal Access Token
-
Add a new actions secret
-
Create codespaces
-
Copy the sample resume
Run below command in the codespace terminal:
cp resumes/sample resumes/google/ -r
-
Edit your resume & Push the changes
💡 Skip the hand-editing. Instead of writing
resume.jsonyourself, let Claude Code tailor it from a job description — see AI Authoring below.
All done! You'll be able to access your live site at https://<github_username>.github.io/google-resume
Check your Actions tab to see if its running correctly.
This is the fastest way to fill in step 6–7 above: instead of hand-editing
resume.json, let Claude Code turn a job
description into a tailored resume for you. It works great right inside
Codespaces — no API key needed — and ships with two skills and an enforced
honesty policy.
| Skill | What it does |
|---|---|
intake-profile |
Build profile/master.json — your full, truthful career history — by interviewing you or importing an old PDF/CV/LinkedIn export. |
tailor-resume |
Turn a job description + your master into a pruned, JD-ranked resumes/<company>/resume.json. |
-
Build your master profile once. Run the
intake-profileskill. It either interviews you or imports an old PDF/CV/LinkedIn export intoprofile/master.json— your full, truthful career history. (Seeprofile/master.example.jsonfor the shape.) -
Tailor to a job. Run the
tailor-resumeskill with the job description. It writesresumes/<company>/resume.jsonas a ranked, JD-focused view of your master, and reports any gaps between the JD and your experience. -
Honesty gate. The skills never invent facts. Anything plausible but unconfirmed is tagged
[VERIFY];npm run validate(run automatically in CI) fails until you confirm or remove it — so nothing unverified is ever published. -
Push as usual. Pushing
resumes/<company>/resume.jsontriggers the normal build and deploy.
See examples/ for a full worked example (master profile → JD → tailored
resume). Validate any resume locally with npm run validate.
Want to preview your resume before pushing?
Get NodeJS first
-
Install dependencies:
npm install npx playwright install chromium
-
To build a specific resume, run the
build-resume.shscript with theFILE_PATHenvironment variable:FILE_PATH=resumes/data-scientist ./scripts/build-resume.sh
You’ll find the generated index.html, resume.html, and resume.pdf inside the resumes/data-scientist/ folder.
- You make a copy of the
resumes/sampledirectory to a new one (e.g.resumes/google/). - You modify the
resume.jsonfile in thisresumes/google/with your actual details. - You push your code to GitHub so GitHub Actions automatically builds the site and PDF.
- The output is deployed to a separate resume repository (e.g.,
google-resume) with GitHub Pages enabled. - If you delete any resume folder, the corresponding repository is also deleted.
This lets you keep your resumes repository separate from the live resume websites.
Happy Job Hunting!









