Resume Tailor
Tailor a base resume to a specific job description with keyword-match scoring, gap analysis, and rewritten-bullet suggestions.
Table of Contents
Keywords
resume, CV, job application, ATS, applicant tracking system, keyword match, resume tailoring, cover letter, job description, hiring, recruiter, career, job search, bullet rewrite, accomplishment, impact statement
Clarify First
Before tailoring the resume, confirm these inputs. If any is unknown or vague, ASK — do not assume:
- [ ] Target job description — the verbatim JD; it drives keyword extraction and the entire match score
- [ ] Base resume content — your actual experience and bullets; without it there is nothing to score or rewrite
- [ ] Target seniority / title — IC vs lead vs exec sets which keywords matter and the altitude of rewritten bullets
- [ ] Truth boundary — which listed skills you genuinely have vs. aspirational, so additions are honest rather than keyword-stuffed
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
Quick Start
Tailor a Resume in 5 Minutes
- Save the job description as
jd.txt - Save your base resume text as
resume.txt - Run the matcher:
python scripts/resume_matcher.py resume.txt jd.txt - Review the keyword-gap report
- Rewrite low-scoring bullets using
references/bullet_rewrite_patterns.md - Cross-check the final resume against the rewritten template in
assets/tailored_resume_template.md
Core Workflows
Workflow 1: Match Score and Keyword Gap
Goal: Get a quantitative score for how well the current resume matches a target job description before submitting.
Steps:
- Capture the job description verbatim into
jd.txt - Run:
python scripts/resume_matcher.py resume.txt jd.txt - Review the score — anything below 70% means significant gaps
- Read the missing-keywords list; classify each as (a) skills you have but did not list, (b) skills you do not have, (c) buzzwords that do not apply
- Add (a) to the resume; ignore (c); be honest about (b)
Expected Output: A score, a kept-keyword list, and a missing-keyword list.
Time Estimate: 5-10 minutes per job description.
Workflow 2: Bullet Rewrite for Impact
Goal: Convert task-oriented bullets ("responsible for…") into impact bullets that match recruiter and ATS expectations.
Steps:
- Identify weak bullets — anything starting with "Responsible for" or "Helped with"
- Apply the CAR pattern (Challenge, Action, Result) from
references/bullet_rewrite_patterns.md - Quantify wherever possible (percentages, dollar amounts, time saved, scale)
- Re-run the matcher to confirm score improvement
Expected Output: Bullet list rewritten in CAR format with metrics.
Time Estimate: 5 minutes per bullet.
Workflow 3: Cover Letter Hooks
Goal: Pull the strongest 3-5 hooks from the resume that map directly to the top requirements in the job description.
Steps:
- Run matcher in JSON mode:
python scripts/resume_matcher.py resume.txt jd.txt --json - Take the top 5 matched keywords by relevance
- For each, find the matching resume bullet
- Use them as evidence sentences in the cover letter
Expected Output: 3-5 evidence sentences for the cover letter.
Time Estimate: 10 minutes.
Tools
resume_matcher.py
Reads a resume text file and a job description text file, returns:
- A match score (0-100) based on keyword overlap weighted by JD frequency
- A kept keywords list (in both resume and JD)
- A missing keywords list (in JD only)
- A resume-only keywords list (in resume but not JD — candidate to drop)
# Human-readable
python scripts/resume_matcher.py resume.txt jd.txt
# JSON for programmatic use
python scripts/resume_matcher.py resume.txt jd.txt --json
Reference Guides
references/bullet_rewrite_patterns.md— CAR pattern, action-verb library, quantification examples, weak-phrase blacklistreferences/ats_optimization_guide.md— How ATS parses resumes, formatting do's and don'ts, keyword density bounds
Templates
assets/tailored_resume_template.md— A bare resume skeleton with section ordering, length guidance, and keyword-placement notes. Fill in your content.
Best Practices
- Tailor every time. A generic resume sent to ten roles performs worse than ten tailored versions.
- Honesty over keyword stuffing. Add only skills you actually have. Hiring managers can tell.
- Keep one master resume. Tailor variants from a single source of truth.
- Two pages max. Even for senior roles, two pages is the ceiling outside academia.
- Plain text, single-column. ATS systems still mishandle tables, graphics, and multi-column layouts.
Integration Points
- Pairs with
personal-productivity/lead-researcher/for prepping informational interviews - Pairs with
marketing/copywriting/for cover letter prose quality - Used by
agents/personas/workflows when authoring sample profiles