resume-tailorer
Skill8 starsChanged 9 months agoMITView on GitHub
Customize resumes and cover letters for specific job postings with ATS optimization, keyword matching, and experience highlighting
1 other project uses a version of this.
Adopted by
Most recently taken up by
- fred-brown-3/job-hunter-aitheir own version, first seen Oct 13, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- fred-brown-3/job-hunter-ai★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 9 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 19
Use this skill when applying to jobs, customizing resumes for specific roles, or optimizing applications for Applicant Tracking Systems …
- Distinctive: line 114
Not all experience is relevant.
- Distinctive: line 321
Check keyword integration sounds natural
- Distinctive: line 322
Verify quantified achievements are accurate
- Distinctive: line 349
If job posting says "Drive adoption", use "Drove" (not "Led" or "Managed").
- Distinctive: line 382
Rule of thumb: If you're uploading to an ATS, tailor it.
- Distinctive: line 387
After tailoring, update your LinkedIn profile to mirror the keywords/achievements for that industry.
- Distinctive: line 393
If applying to similar roles, try different keyword emphasis and track response rates.
- Distinctive: line 413
Follow up 1 week after applying
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
resume-tailorer
Trigger
Use this skill when applying to jobs, customizing resumes for specific roles, or optimizing applications for Applicant Tracking Systems (ATS).
Trigger phrases:
- "Tailor my resume for this job"
- "Customize cover letter"
- "Match my experience to job requirements"
- "Optimize for ATS"
- "Rewrite resume for [role]"
Overview
Generic resumes get filtered out. Every job application needs a tailored resume that:
- Mirrors the job description language (ATS keyword matching)
- Highlights relevant experience (not all experience is equal)
- Quantifies achievements (numbers > vague claims)
- Passes ATS screening (formatting, keywords, structure)
This skill analyzes job postings, matches your experience to requirements, rewrites sections to highlight relevance, and generates ATS-optimized PDFs.
Not a resume builder from scratch - this assumes you have a master resume and tailors it per application.
How to Use
Quick Start
- Analyze job posting:
python scripts/job_analyzer.py job-posting.txt --output analysis.json - Match your experience:
python scripts/resume_matcher.py master-resume.json analysis.json --output matches.json - Generate tailored resume:
python scripts/ats_optimizer.py master-resume.json matches.json --output tailored-resume.md
Python Tools
scripts/job_analyzer.py— Extract requirements, skills, keywords from job postingscripts/resume_matcher.py— Match candidate experience to job requirementsscripts/ats_optimizer.py— Generate ATS-optimized resume and cover letter
Reference Docs
references/tailoring-strategies.md— Resume tailoring best practicesreferences/ats-best-practices.md— ATS optimization techniques
Templates & Assets
assets/resume-template.json— Structured resume format (master resume)assets/cover-letter-template.txt— Customizable cover letterassets/sample-job-posting.txt— Example job description
Architecture Decisions
Why JSON for Master Resume
A structured format enables:
- Programmatic analysis and matching
- Flexible reordering of experience
- Easy keyword extraction
- Version control friendly
Format:
{
"contact": { "name": "...", "email": "...", "phone": "..." },
"summary": "...",
"experience": [
{
"title": "Senior Developer Advocate",
"company": "MongoDB",
"dates": "2015-Present",
"achievements": [
"Led 50+ customer workshops reaching 2,000+ developers",
"Built RAG demo platform reducing integration time by 60%"
]
}
],
"skills": ["Python", "MongoDB", "Vector Search", "Public Speaking"]
}Keyword Matching Strategy
ATS systems scan for exact keyword matches. Strategy:
- Extract keywords from job posting (nouns, skills, technologies)
- Find synonyms in candidate experience (e.g., "led" → "leadership")
- Rewrite bullet points to include exact job posting keywords
- Maintain natural language (not keyword stuffing)
Example:
- Job posting: "Experience with vector databases and semantic search"
- Original resume: "Built search functionality with embeddings"
- Tailored: "Built semantic search using vector databases with MongoDB Atlas"
Experience Relevance Scoring
Not all experience is relevant. Score each role/achievement by:
- Keyword overlap (30%): How many job keywords appear?
- Recency (20%): Recent experience > old experience
- Impact (30%): Quantified achievements > vague descriptions
- Role alignment (20%): Title similarity to target role
Top 70% of scored experience goes in the tailored resume.
ATS-Friendly Formatting
ATS parsers struggle with:
- ❌ Tables and columns
- ❌ Headers/footers
- ❌ Graphics and images
- ❌ Non-standard fonts
- ❌ Text boxes
Safe formatting:
- ✅ Plain text or simple Markdown
- ✅ Standard section headers (Experience, Education, Skills)
- ✅ Bullet points with • or -
- ✅ Dates in consistent format (MM/YYYY)
- ✅ PDF generated from clean HTML/Markdown
Cover Letter Personalization
Generic cover letters are obvious. Personalize by:
- Address hiring manager by name (research on LinkedIn)
- Reference specific company initiatives (recent news, product launches)
- Connect your experience to their needs (not just "I'm great")
- Show genuine interest (why this company, not just any company)
Generated Output Structure
Tailored Resume (Markdown)
# [Your Name]
[Email] | [Phone] | [LinkedIn] | [Portfolio]
## Summary
[Customized 2-3 sentence summary highlighting relevant experience]
## Experience
### [Most Relevant Role]
**[Title]** | [Company] | [Dates]
- [Achievement with job posting keywords]
- [Quantified result relevant to target role]
- [Technical skills matching job requirements]
### [Second Most Relevant Role]
...
## Skills
[Prioritized skills matching job requirements]
## Education
[Degree] | [School] | [Year]Cover Letter
[Your Name]
[Contact Info]
[Date]
[Hiring Manager Name]
[Company]
Dear [Name],
[Opening: Why this role excites you + company-specific detail]
[Body: 2-3 paragraphs connecting your experience to their needs]
[Closing: Call to action + appreciation]
Best regards,
[Your Name]Python Tool Details
1. Job Analyzer
Purpose: Extract structured requirements from job posting text.
Usage:
python scripts/job_analyzer.py job-posting.txt --output analysis.jsonOutput:
{
"title": "Senior Developer Advocate",
"company": "MongoDB",
"required_skills": ["Python", "Public Speaking", "MongoDB", "Vector Search"],
"preferred_skills": ["RAG", "LangChain", "Customer Workshops"],
"keywords": ["developer", "advocate", "workshops", "demos", "vector", "search"],
"experience_years": "5+",
"education": "Bachelor's degree or equivalent",
"responsibilities": [
"Lead customer workshops",
"Build demo applications",
"Present at conferences"
]
}How it works:
- Parse job posting text
- Extract skills (regex patterns for common tech/tools)
- Identify required vs preferred (section headers, "must have" vs "nice to have")
- Extract experience requirements (regex for "X+ years")
- List responsibilities (bulleted sections)
2. Resume Matcher
Purpose: Match candidate experience to job requirements and score relevance.
Usage:
python scripts/resume_matcher.py master-resume.json analysis.json --output matches.jsonOutput:
{
"overall_match": 0.82,
"matched_skills": ["Python", "MongoDB", "Vector Search", "Public Speaking"],
"missing_skills": ["LangChain"],
"experience_matches": [
{
"title": "Principal Developer Advocate",
"company": "MongoDB",
"relevance_score": 0.95,
"keyword_overlap": 0.87,
"matched_achievements": [
"Led 50+ customer workshops reaching 2,000+ developers",
"Built RAG demo platform reducing integration time by 60%"
],
"rewrite_suggestions": [
"Add 'vector search' to RAG demo achievement",
"Quantify workshop impact with developer metrics"
]
}
],
"tailoring_priority": [
"Emphasize workshop leadership (matches 'Lead customer workshops')",
"Highlight RAG/vector search projects",
"Add specific MongoDB features you've demoed"
]
}3. ATS Optimizer
Purpose: Generate ATS-friendly resume with keyword optimization.
Usage:
python scripts/ats_optimizer.py master-resume.json matches.json --output tailored-resume.mdOptions:
--cover-letter- Generate cover letter too--format pdf- Output PDF (requires pandoc)--highlight-keywords- Bold keywords matching job posting
Output: Markdown resume with:
- Keywords from job posting naturally integrated
- Experience reordered by relevance score
- Achievements rewritten to highlight job-specific value
- Skills section prioritized by job requirements
- ATS-safe formatting
Workflow Example
Scenario: Applying for "Senior Developer Advocate at MongoDB"
Step 1: Analyze job posting
python scripts/job_analyzer.py mongodb-job.txt --output analysis.jsonOutput: Extracts required skills (Python, MongoDB, workshops), keywords (developer advocate, RAG, vector search)
Step 2: Match your experience
python scripts/resume_matcher.py my-resume.json analysis.json --output matches.jsonOutput: Scores your MongoDB work at 0.95 relevance, identifies missing "LangChain" skill
Step 3: Generate tailored resume
python scripts/ats_optimizer.py my-resume.json matches.json \
--output mongodb-resume.md \
--cover-letter \
--format pdfOutput:
mongodb-resume.md- Tailored resume highlighting MongoDB/workshop experiencemongodb-cover-letter.md- Personalized cover lettermongodb-resume.pdf- ATS-optimized PDF
Step 4: Review and refine
- Check keyword integration sounds natural
- Verify quantified achievements are accurate
- Customize cover letter opening (research hiring manager)
- Proofread for typos
Step 5: Apply
Upload mongodb-resume.pdf and submit cover letter text.
Common Patterns
Pattern 1: Keyword Integration Without Stuffing
Bad (keyword stuffing):
"Expert in Python, MongoDB, vector search, RAG, semantic search, embeddings, LangChain, OpenAI"
Good (natural integration):
"Built semantic search platform using MongoDB Atlas Vector Search with Python, integrating RAG patterns via LangChain and OpenAI embeddings"
Pattern 2: Quantify Everything
Before:
"Led customer workshops and improved developer satisfaction"
After:
"Led 50+ customer workshops reaching 2,000+ developers, achieving 4.8/5 satisfaction score and 40% increase in trial conversions"
Pattern 3: Action Verbs Matching Job Description
If job posting says "Drive adoption", use "Drove" (not "Led" or "Managed"). Mirror their language.
Pattern 4: Reorder Experience by Relevance
Master resume order: Chronological (newest first)
Tailored resume order: Relevance score (most relevant first), even if older
Example: Applying to DevRel role? Put your 2020 developer advocacy job before your 2023 engineering management role.
Quality Checklist
Before submitting:
- Keywords from job posting appear naturally in resume
- All achievements are quantified (numbers, percentages, scale)
- Experience is reordered by relevance (not just chronological)
- Cover letter addresses hiring manager by name
- Cover letter references company-specific detail
- Resume passes ATS check (no tables, graphics, weird fonts)
- Dates are consistent format (MM/YYYY)
- No typos or grammar errors
- PDF is clean and parseable
- File name is professional (FirstLast-Resume.pdf, not resume-final-v3.pdf)
When to Use vs. Generic Resume
| Use tailored resume | Use generic resume |
| Applying to specific role | Networking/informational interviews |
| Job posting with clear requirements | Career fairs (exploratory) |
| Competitive position | Internal referrals (already have context) |
| ATS-screened application | Direct email to hiring manager |
Rule of thumb: If you're uploading to an ATS, tailor it.
Tools Integration
Export to LinkedIn: After tailoring, update your LinkedIn profile to mirror the keywords/achievements for that industry.
Track applications:
Save each tailored resume as Company-Role-YYYY-MM-DD.pdf to track what you sent where.
A/B testing: If applying to similar roles, try different keyword emphasis and track response rates.
References
- ATS Optimization:
references/ats-best-practices.md - Tailoring Strategies:
references/tailoring-strategies.md - Resume Action Verbs: https://www.themuse.com/advice/185-powerful-verbs-that-will-make-your-resume-awesome
- Cover Letter Guide: https://www.askamanager.org/category/cover-letters
Credits
Michael Lynn — mlynn.org · @mlynn · LinkedIn · GitHub
Next steps after generating tailored resume:
- Proofread for natural language flow
- Customize cover letter opening with company research
- Save as PDF with professional filename
- Track application in spreadsheet
- Follow up 1 week after applying
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

