A Python-based tool that optimizes your resume by analyzing job descriptions and suggesting keyword improvements to enhance ATS (Applicant Tracking System) compatibility.
- Keyword Extraction: Automatically extracts important keywords and phrases from job descriptions
- Gap Analysis: Identifies missing keywords that should be added to your resume
- Smart Replacement: Suggests word replacements to better match job requirements
- Frequency Analysis: Shows which terms appear most often in job descriptions
- ATS Optimization: Helps your resume pass automated screening systems
- Easy CLI Interface: Simple command-line interface for quick analysis
- Load Your Resume: Provide your baseline resume as a text file
- Input Job Description: Copy and paste or provide a job description file
- Analyze: The tool extracts keywords, identifies gaps, and suggests improvements
- Optimize: Generate an optimized version with automatic keyword replacements
- Review: Get a detailed analysis report of the changes
- Python 3.7 or higher
- No external dependencies required (uses Python standard library)
- Clone this repository:
git clone <repository-url>
cd Test- (Optional) Create a virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- The tool is ready to use - no pip install needed!
-
Prepare your resume: Create a text file with your resume content (or use the provided
baseline_resume.txt) -
Get a job description: Copy a job posting to a text file (or use the provided
job_description.txt) -
Run the optimizer:
python3 resume_optimizer.py- Follow the prompts:
- Enter the path to your resume file
- Enter the path to the job description file
- Review the analysis
- Choose to save analysis or generate optimized resume
$ python3 resume_optimizer.py
======================================================================
RESUME KEYWORD OPTIMIZER
======================================================================
This tool optimizes your resume by analyzing job descriptions
and suggesting keyword improvements for better ATS compatibility.
Step 1: Load your baseline resume
----------------------------------------------------------------------
Enter path to your resume file (or press Enter for example): baseline_resume.txt
✓ Loaded resume (1450 characters)
Step 2: Provide job description
----------------------------------------------------------------------
Enter path to job description file (or press Enter for example): job_description.txt
✓ Loaded job description (2100 characters)
Step 3: Analyzing and optimizing...
----------------------------------------------------------------------
======================================================================
RESUME OPTIMIZATION ANALYSIS
======================================================================
📊 TOP KEYWORDS FROM JOB DESCRIPTION:
----------------------------------------------------------------------
1. react (appears 4x)
2. experience (appears 12x)
3. docker (appears 3x)
4. typescript (appears 3x)
...
💡 SUGGESTED REPLACEMENTS:
----------------------------------------------------------------------
'frameworks' → 'React', 'Node.js'
'databases' → 'PostgreSQL', 'MySQL'
...The tool can generate:
resume_analysis.txt: Detailed analysis of keywords and gapsoptimized_resume.txt: Your resume with automatic keyword replacements
- Extracts all words from the job description
- Filters out common stop words (the, and, or, etc.)
- Counts frequency of each keyword
- Prioritizes technical terms and skills
- Identifies 2-word and 3-word phrases
- Finds commonly repeated technical phrases
- Highlights multi-word skills (e.g., "machine learning")
- Compares job description keywords with resume content
- Lists important missing keywords
- Ranks keywords by frequency and importance
- Finds similar words in your resume
- Suggests specific replacements from job description
- Preserves original case and formatting
- Only suggests relevant technical replacements
Edit the STOP_WORDS set in resume_optimizer.py:
STOP_WORDS = {
'a', 'an', 'and', 'are', 'as', 'at', ...
# Add your own stop words here
}Change the top_n parameter when calling methods:
keywords = optimizer.extract_keywords(job_description, top_n=30) # Get top 30 instead of 20Modify TECHNICAL_INDICATORS to prioritize specific terms:
TECHNICAL_INDICATORS = {
'python', 'react', 'aws', 'kubernetes',
# Add terms specific to your industry
}You can import and use the optimizer in your own scripts:
from resume_optimizer import ResumeOptimizer
# Initialize with resume
with open('my_resume.txt', 'r') as f:
resume = f.read()
optimizer = ResumeOptimizer(resume)
# Load job description
with open('job_posting.txt', 'r') as f:
job_desc = f.read()
# Get optimized resume and analysis
optimized, analysis = optimizer.optimize_resume(job_desc, auto_replace=True)
# Access specific analysis data
print(f"Top keywords: {analysis['top_keywords']}")
print(f"Missing keywords: {analysis['missing_keywords']}")- Keep Your Baseline Clean: Start with a well-formatted resume
- Use Complete Job Descriptions: More text = better keyword extraction
- Review Before Applying: Always review auto-replacements manually
- Maintain Honesty: Only add keywords for skills you actually have
- Context Matters: Ensure replacements make sense in context
- Multiple Passes: Run the tool for each job application
- Works best with text-based resumes (not PDFs with complex formatting)
- Keyword matching is basic - doesn't understand deep semantics
- Auto-replacement is conservative to avoid breaking resume flow
- Requires manual review to ensure accuracy and honesty
Potential improvements:
- PDF resume parsing
- Advanced NLP with spaCy or NLTK
- Synonym detection and replacement
- ML-based keyword importance scoring
- Web interface
- Integration with job boards
- Resume scoring system
- Multiple resume version management
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
MIT License - feel free to use and modify for your needs.
This tool is meant to help optimize your resume for ATS systems. Always:
- Review all changes before submitting your resume
- Only include keywords for skills you actually possess
- Maintain honesty and accuracy in your resume
- Customize your resume for each specific job application
For issues or questions:
- Check existing issues in the repository
- Create a new issue with detailed description
- Include sample input/output if relevant
Happy job hunting! 🎯