--- name: resume-tailor description: > Tailor a resume to a specific job description by extracting target keywords, scoring keyword match, and rewriting bullets for impact and relevance. Use when applying to a specific role, optimizing for ATS keyword match, or when the user mentions resume tailoring, job application, ATS optimization, or cover letter customization. license: MIT + Commons Clause metadata: version: 1.0.0 author: borghei category: personal-productivity domain: career updated: 2026-05-04 python-tools: resume_matcher.py tech-stack: ATS, job-search --- # 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](#keywords) - [Quick Start](#quick-start) - [Core Workflows](#core-workflows) - [Tools](#tools) - [Reference Guides](#reference-guides) - [Templates](#templates) - [Best Practices](#best-practices) --- ## 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 --- ## Quick Start ### Tailor a Resume in 5 Minutes 1. Save the job description as `jd.txt` 2. Save your base resume text as `resume.txt` 3. Run the matcher: ```bash python scripts/resume_matcher.py resume.txt jd.txt ``` 4. Review the keyword-gap report 5. Rewrite low-scoring bullets using `references/bullet_rewrite_patterns.md` 6. 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:** 1. Capture the job description verbatim into `jd.txt` 2. Run: `python scripts/resume_matcher.py resume.txt jd.txt` 3. Review the score — anything below 70% means significant gaps 4. 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 5. 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:** 1. Identify weak bullets — anything starting with "Responsible for" or "Helped with" 2. Apply the **CAR pattern** (Challenge, Action, Result) from `references/bullet_rewrite_patterns.md` 3. Quantify wherever possible (percentages, dollar amounts, time saved, scale) 4. 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:** 1. Run matcher in JSON mode: `python scripts/resume_matcher.py resume.txt jd.txt --json` 2. Take the top 5 matched keywords by relevance 3. For each, find the matching resume bullet 4. 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) ```bash # 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 blacklist - **`references/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