Skip to content
All Skills

ATS-Optimized Resume Builder

Parses a job description, extracts ATS keywords, and rebuilds your resume with optimized phrasing, quantified achievements, and keyword density scoring. Prerequisites: brave-search MCP, python3, pandoc.

Career & Professional|v1|Updated 5/18/2026
MCP get_skill({ skillId: "ats-optimized-resume-builder-2bb87edd" })

Use this skill with your agent

Create a free account and connect via MCP

Get Started Free
# ATS-Optimized Resume Builder

Analyze a job description for ATS keywords, then restructure your resume to maximize match rate with quantified achievements.

## When to Use

- "Optimize my resume for this job posting"
- "What keywords am I missing for this role?"
- "Rewrite my resume bullet points with metrics"

## Requirements

- **Brave Search MCP** for industry keyword research
- **python3** for keyword extraction and match scoring
- **pandoc** for format conversion (Markdown → PDF/DOCX)

## Workflow

### Step 1 — Parse Job Description

User provides job description text or URL.

```bash
python3 << 'PYEOF'
import re
from collections import Counter

jd = """{JOB_DESCRIPTION}"""

# Extract key technical skills and requirements
words = re.findall(r'\b[A-Za-z][a-z]+(?:\s[A-Za-z][a-z]+)?\b', jd)
word_freq = Counter(w.lower() for w in words if len(w) > 3)

# Common filler words to exclude
stopwords = {'with', 'that', 'this', 'will', 'from', 'have', 'been', 'they', 'their', 'about', 'would', 'which', 'when', 'make', 'like', 'just', 'over', 'such', 'take', 'than', 'them', 'well', 'only', 'also', 'more', 'other', 'your'}
filtered = {k: v for k, v in word_freq.items() if k not in stopwords}

print("Top Keywords in Job Description:")
for word, count in sorted(filtered.items(), key=lambda x: -x[1])[:25]:
    print(f"  {word}: {count}x")
PYEOF
```

### Step 2 — Research Role Standards

```
brave_web_search: "{JOB_TITLE} resume keywords ATS {YEAR}"
brave_web_search: "{JOB_TITLE} {INDUSTRY} resume examples strong bullet points"
brave_web_search: "{COMPANY_NAME} culture values mission statement"
```

### Step 3 — Score Current Resume

```bash
python3 << 'PYEOF'
jd_keywords = {JD_KEYWORDS_SET}  # from Step 1
resume_text = """{CURRENT_RESUME}""".lower()

matched = [kw for kw in jd_keywords if kw in resume_text]
missing = [kw for kw in jd_keywords if kw not in resume_text]

score = len(matched) / len(jd_keywords) * 100 if jd_keywords else 0

print(f"ATS Match Score: {score:.0f}%")
print(f"\n✅ Matched ({len(matched)}): {', '.join(matched)}")
print(f"\n❌ Missing ({len(missing)}): {', '.join(missing)}")
print(f"\nTarget: 75%+ for ATS pass")
PYEOF
```

### Step 4 — Rewrite Resume

Generate optimized resume in markdown:

```markdown
# {FULL_NAME}
{EMAIL} | {PHONE} | {CITY, STATE} | {LINKEDIN_URL}

## Summary
{ROLE}-focused professional with {X} years of experience in {KEY_SKILL_1}, {KEY_SKILL_2}, and {KEY_SKILL_3}. {Achievement with number}.

## Experience

### {JOB_TITLE} — {COMPANY}
*{START_DATE} – {END_DATE}*

- {ACTION_VERB} {what you did} resulting in {QUANTIFIED_RESULT}
- {ACTION_VERB} {what you did} across {SCOPE} leading to {METRIC}% improvement
- {ACTION_VERB} {KEY_JD_KEYWORD} initiatives that {MEASURABLE_OUTCOME}

## Skills
{Comma-separated list matching JD keywords}

## Education
### {DEGREE} — {UNIVERSITY}
*{YEAR}*
```

Rules for bullet points:
- Start with strong action verb (Led, Developed, Architected, Reduced, Increased)
- Include at least one number (%, $, count, time saved)
- Weave in JD keywords naturally

### Step 5 — Convert Format

```bash
# Markdown to DOCX
pandoc "outputs/career/resume.md" -o "outputs/career/resume.docx" --reference-doc=resume-template.docx

# Markdown to PDF (if LaTeX installed)
pandoc "outputs/career/resume.md" -o "outputs/career/resume.pdf" --pdf-engine=xelatex
```

### Step 6 — Final Score Check

Re-run Step 3 scoring against the new resume to verify improvement.

## Important Rules

- Never fabricate experience, skills, or metrics — only rephrase what the user provides
- All numbers and achievements must come from the user
- Keep resume to 1-2 pages
- Use standard section headings (Experience, Skills, Education) for ATS parsing

## Example Prompts

- "Optimize my resume for this Senior Developer job posting: [URL]"
- "Score my resume against this job description"
- "Rewrite my bullet points to include metrics"
#career#resume#ATS#job-searchbrave-searchpython3pandoc