The Problem with Resume Writing (and Why AI Usually Fails At It)
Most AI resume tools are glorified text reformatters. You paste in a job description, they shuffle your bullet points around, and you get something that looks tailored but is really just rearranged vagueness.
The root problem isn't formatting — it's evidence. You can't write a compelling, specific resume bullet six months after a project ends. The metrics fade. The decisions blur. The "proudest achievement" becomes "led cross-functional team to deliver platform migration."
"The best resume writers don't have better resumes. They have better notes."
This guide shows you how to build a system that solves the root problem: capture experience immediately after each project in rich, structured detail — then query that growing library whenever you need a resume, with AI doing the evidence-mapping and tailoring automatically.
System Architecture at a Glance
Two skills, one growing library, unlimited resumes.
End-to-End Workflow
Experience Capture
10-step interview
Provenance anchors
Human-readable
Updated index
Resume Enhancer
JD analysis + mapping
Subagent
Recruiter · HM · Interviewer
Every bullet sourced
Project Structure
Clone the repo, and you get a ready-made folder convention that keeps skills, experience, and resumes cleanly separated:
Cowork-ResumeBuilder/ │ ├── Skills/ │ ├── experience-letter-v2/ ← Skill 1: capture experience │ │ ├── SKILL.md ← full interview + generation instructions │ │ └── references/ ← YAML schema template + filled example │ │ │ └── resume-enhancer-v2/ ← Skill 2: generate tailored resumes │ ├── SKILL.md ← 8-step resume pipeline │ └── scripts/ │ └── generate_resume.js ← .docx template engine (Node.js) │ ├── Resumes/ ← Base resumes by role level │ ├── CISO & Executive/ │ ├── Director/ │ ├── Engineering Manager/ │ ├── Principal & Staff/ │ └── Technical IC/ │ ├── Experience/ ← Your growing library (one folder per tenure) │ └── Security Engineer (2021–Current)/ │ ├── project-alpha.yaml │ └── Experience_Letter_Alpha.docx │ └── career_timeline.json ← canonical index: roles, skills, certs
Skills/ folder is installed once and reused forever. The Experience/ folder
is what grows — one .yaml + one .docx per project, forever.
The more you capture, the better every future resume gets.
Skill 1 — Experience Letter Capture
experience-letter-v2
"Capture my experience on [project name]"Claude runs a structured 10-step interview. At each step it probes for specifics — rough numbers, real stakeholder names, concrete decisions — rather than accepting vague answers.
Project context — employer, team, engagement type, duration
Problem framing — business problem, why it mattered, scope, audience
Approach — methodology, frameworks, key decisions, innovations
Deliverables — primary and secondary outputs, artefacts
Technology — direct tools, ecosystem, evaluated alternatives
Stakeholders — presented to, collaborated with, influenced
Leadership — presentations, published docs, training, mentoring
Impact — quantitative metrics (with confidence levels) + qualitative outcomes
Proudest achievement — headline, story, why it matters
Generate outputs — YAML with provenance anchors + formatted Word doc
What Makes the YAML Special: Provenance Anchors
Every claimable item in the YAML gets an immutable ID — an anchor. This means every resume bullet can be traced back to the exact evidence that supports it. No hallucination. No inflated claims. Full auditability.
meta: project_name: "CSPM Transformation" role: "Engineering Manager" duration: "Jan 2023 – Dec 2023" impact: quantitative: - id: &cspm-attack-surface # ← provenance anchor metric: "Attack surface reduced" value: 68 unit: "%" confidence: "measured" - id: &cspm-alert-reduction metric: "Alert noise reduction" value: 40 unit: "%" confidence: "estimate"
Skill 2 — Resume Enhancer
resume-enhancer-v2
"Build my resume for [role]. Here's the JD. Use my Experience folder."An 8-step pipeline that decomposes the JD, maps it to your evidence library, and generates a tailored .docx with a multi-pass review — without fabricating a single claim.
JD gathering + base resume selection — matches your 5-tier template library (CISO → IC)
Deep analysis — JD decomposed into required / preferred / leadership / domain skills. Maps each to engagement evidence, then confirms with you before writing a single bullet
Resume JSON construction — pulls from career_timeline.json as single source of truth
.docx generation — runs generate_resume.js for pixel-consistent formatting
QA validation — active voice, role-tier metric fit, anchor traceability, link verification
Independent technical review — separate subagent checks anchor traceability, date plausibility, claim credibility against a 5-item rubric
3-persona review — Recruiter · Hiring Manager · Interviewer each review in parallel; all proposed edits require your approval
Final delivery — .docx resume + skill_evidence_map.json showing every tailoring decision
Why This Is Different from "ChatGPT, Write My Resume"
| Capability | Generic AI Prompt | This System |
|---|---|---|
| Tailored bullets | Rearranges your existing text | ✔ Maps JD skills to evidence anchors |
| Metric accuracy | ✘ May hallucinate numbers | ✔ Every metric traced to YAML source |
| Role-tier awareness | ✘ IC bullets mixed with C-suite claims | ✔ 5-tier template library + metric gates |
| Gap detection | ✘ Silently skips missing evidence | ✔ Explicitly flags skill gaps before writing |
| Review pipeline | ✘ Single-pass output | ✔ Tech review + 3 recruiter personas |
| Compounding value | ✘ Forgets everything after session | ✔ Library grows; every capture improves future resumes |
| Auditability | ✘ No traceability | ✔ skill_evidence_map.json shows every decision |
4 Design Insights Worth Stealing
How to Build It in 4 Steps
-
Populate
career_timeline.json— Fill in your roles, dates, skills taxonomy, education, and certifications. This is the index all downstream skills query. Start minimal: name, employer, tenure dates, and a skills list per role. -
Run Skill 1 on 2–3 projects — Build your experience library before touching the Resume Enhancer. Say "Capture my experience on [project name]" and answer Claude's questions honestly. Rough numbers beat no numbers.
-
Add base resumes to
Resumes/— One per role level you're targeting. Even a rough draft Word doc is fine — the enhancer uses it as a formatting baseline. -
Run Skill 2 when applying — Paste the job description and say "Build my resume for [role]. Here's the JD. Use my Experience folder." Review the evidence map Claude confirms before it writes bullets. Approve edits from the persona review.
The career_timeline.json — Your Career's Source of Truth
This single JSON file is the canonical index that both skills query. It holds your full professional history: roles, tenures, engagement IDs, skill taxonomies, education, and certifications.
{
"candidate": {
"name": "Your Name",
"email": "you@example.com",
"linkedin": "linkedin.com/in/you"
},
"tenures": [
{
"employer": "Acme Corp",
"role_title": "Engineering Manager",
"start": "2021-01",
"end": "present",
"engagements": [
{
"id": "cspm-transformation",
"name": "CSPM Transformation",
"yaml_path": "Experience/Security Engineer/cspm-transformation.yaml",
"skills": {
"tools": ["Wiz", "Terraform", "AWS Security Hub"],
"concepts": ["Cloud Security", "CSPM", "Risk Reduction"],
"categories": ["Cloud Security", "Platform Engineering"]
}
}
]
}
],
"certifications": ["CISSP", "AWS Security Specialty"]
}
What to Build Next
The same pattern — focused skill + structured data = compounding value — works for three obvious extensions:
The Real Value: Compounding
The first time you run this system, you'll get a better resume. The tenth time, you'll have a library of richly documented projects that makes every future application trivially easy.
Most people treat resume writing as a one-off task. The professionals who advance fastest treat it as a system — and update it continuously. This is that system.
"Capture experience once, richly, right after a project ends → query that library whenever you apply. The more you capture, the better every future resume gets."