Add invisible ATS-friendly keywords to PDF resumes without affecting visual appearance
Transform your existing PDF resume into an ATS-optimized powerhouse while preserving its original formatting and design. No more recreating resumes from scratch�just enhance what you already have.
pip install resume-keyword-injector# Interactive mode - guided setup
resume-keyword-injector
# Quick command line
resume-keyword-injector my_resume.pdf --keywords "python,react,aws,docker"
# Full control
resume-keyword-injector resume.pdf \
--keywords "machine learning,tensorflow,kubernetes" \
--methods "white_text,margin" \
--output ats_optimized.pdfYour PDF looks exactly the same�fonts, layout, images, and formatting are 100% preserved using advanced PDF overlay technology.
Keywords are invisible to human eyes but detectable by Applicant Tracking Systems, boosting your resume's keyword score.
- 56 comprehensive tests
- Robust error handling with helpful messages
- Professional CLI with progress bars and rich formatting
- Works with any PDF size or layout
- Interactive: Guided prompts for beginners
- Hybrid: Provide some arguments, get prompted for the rest
- Command-line: Full automation for power users
| Method | Description | Best For |
|---|---|---|
| White Text | Keywords in white color on white background | General ATS optimization |
| Tiny Font | Text at 0.1pt size (invisible to naked eye) | Maximum keyword density |
| Margin Placement | Keywords positioned in document margins | Clean, separated approach |
| Background Layer | Separate invisible PDF layer | Complex layouts |
| Transparent Text | Nearly transparent text overlay | Subtle integration |
PDF Keyword Injector
o Processing Configuration:
> Input PDF: resume.pdf (2 pages, 156KB)
> Keywords: python, react, aws, docker, kubernetes (5 total)
> Methods: white_text, tiny_font, transparent
> Output: resume_optimized.pdf
> Debug Mode: OFF
o Injecting keywords... �������������������������������� 100%
� Success! Keywords injected successfully
> Original text: 1,247 characters
> Enhanced text: 1,299 characters (+52)
> Processing time: 1.2 seconds
> Keywords added: python, react, aws, docker, kubernetesresume-keyword-injectorThe tool will guide you through:
- PDF Selection: Choose your resume file
- Keyword Input: Enter relevant keywords for your target job
- Output Location: Specify where to save the enhanced resume
- Method Selection: Choose injection methods (or use defaults)
# Minimum required arguments
resume-keyword-injector resume.pdf --keywords "python,developer,software"# Full control with all options
resume-keyword-injector resume.pdf \
--keywords "machine learning,tensorflow,pytorch,python,data science" \
--methods "white_text,tiny_font,margin" \
--output "ml_engineer_resume.pdf" \
--debug# Process multiple resumes
for resume in *.pdf; do
resume-keyword-injector "$resume" \
--keywords "react,typescript,node.js,aws" \
--output "enhanced_$(basename "$resume")"
done| Option | Description | Example |
|---|---|---|
--keywords, -k |
Comma-separated keywords to inject | --keywords "python,aws,docker" |
--output, -o |
Output PDF path | --output enhanced_resume.pdf |
--methods, -m |
Injection methods to use | --methods "white_text,margin" |
--debug |
Make invisible text slightly visible for testing | --debug |
--help |
Show help message | --help |
ATS systems extract all text from PDFs, including text that's invisible to human readers. Our tool leverages this by strategically placing keywords using methods that are:
- � Detectable by ATS: Text extraction algorithms find them
- � Invisible to humans: Won't interfere with your resume's appearance
- � Format-preserving: Original layout remains untouched
- PDF Analysis: Extract existing text and analyze document structure
- Strategic Placement: Position keywords using advanced PDF overlay techniques
- Invisibility Application: Apply chosen methods (tiny fonts, white text, etc.)
- Quality Verification: Ensure keywords are detectable but invisible
- Format Preservation: Merge with original while maintaining all formatting
Tested with common ATS text extraction methods:
- � pdfplumber - High accuracy text extraction
- � PyPDF - Standard PDF text parsing
- � Adobe PDF API - Professional PDF processing
- � Google Document AI - Machine learning text extraction
pip install resume-keyword-injector- Python: 3.11 or higher
- Operating System: Windows, macOS, or Linux
- Memory: 100MB+ available RAM
- Storage: 50MB for package + space for PDF processing
The tool automatically installs these high-quality dependencies:
- click - Professional command-line interface
- rich - Beautiful terminal formatting and progress bars
- pypdf - Reliable PDF reading and writing
- pdfplumber - Advanced PDF text extraction
- reportlab - PDF generation and manipulation
- Software Engineers: Add framework and language keywords
- Data Scientists: Include ML/AI technology terms
- Product Managers: Incorporate methodology and tool keywords
- Designers: Add software and design process terms
- Skill Translation: Bridge keywords between industries
- Keyword Research: Use job posting analysis to identify key terms
- A/B Testing: Test different keyword combinations
- Client Optimization: Help candidates improve ATS scores
- Keyword Strategy: Implement data-driven keyword selection
- Bulk Processing: Optimize multiple resumes efficiently
L PDF Validation Error
The PDF file appears to be corrupted or invalid.
=� Suggested Solutions:
" Check that the PDF file is not corrupted
" Try opening the PDF in a PDF viewer first
" Use a different PDF file
=' Error Code: PDF_CORRUPTED- File Format: Ensures valid PDF input
- Permissions: Checks read/write access
- Disk Space: Validates sufficient storage
- PDF Health: Detects corrupted or encrypted files
- Keyword Quality: Validates and cleans keyword input
- 56 Total Tests covering all functionality
- Error Scenarios: All edge cases and failure modes tested
- Real-World PDFs: Tested with various resume formats
- Performance: Processing time and memory usage validated
- Format Preservation: 100% visual fidelity maintained
- Keyword Detection: 95%+ ATS compatibility rate
- Processing Speed: <2 seconds for typical resumes
- Memory Efficiency: <50MB RAM usage during processing
We welcome contributions! Here's how to get started:
git clone https://github.com/SimonOneNineEight/resume-keyword-injector.git
cd resume-keyword-injector
pip install -e ".[dev]"# Run all tests
pytest
# Run with coverage
pytest --cov=src
# Run specific test category
pytest tests/test_cli.py -v# Format code
black src tests
# Sort imports
isort src tests
# Lint code
flake8 src testsThis project is licensed under the MIT License - see the LICENSE file for details.
This tool is designed for legitimate resume optimization. Users are responsible for:
- Adding relevant, truthful keywords
- Following job application guidelines
- Maintaining professional integrity
- Keywords should reflect actual skills and experience
- Always review job application requirements
- ATS optimization is one factor among many in job applications
- Issues: GitHub Issues
- Documentation: Full Documentation
- Email: [email protected]
- Star this repo if it helped you land interviews
- Report bugs to help improve the tool
- Request features for future versions
- Contribute code to make it even better
Made for job seekers everywhere
Stop letting great resumes get filtered out by keyword algorithms. Start optimizing today!