Add invisible ATS-friendly keywords to PDF resumes
Project description
Resume Keyword Injector
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.
Quick Start
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.pdf
Why Choose Resume Keyword Injector?
Zero Visual Impact
Your PDF looks exactly the same—fonts, layout, images, and formatting are 100% preserved using advanced PDF overlay technology.
ATS-Friendly Keywords
Keywords are invisible to human eyes but detectable by Applicant Tracking Systems, boosting your resume's keyword score.
Production-Ready
- 56 comprehensive tests
- Robust error handling with helpful messages
- Professional CLI with progress bars and rich formatting
- Works with any PDF size or layout
Multiple Usage Modes
- Interactive: Guided prompts for beginners
- Hybrid: Provide some arguments, get prompted for the rest
- Command-line: Full automation for power users
Features
5 Invisible Injection Methods
| 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 |
Professional CLI Experience
PDF Keyword Injector
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
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, kubernetes
Usage Examples
Interactive Mode (Recommended for First-Time Users)
resume-keyword-injector
The 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)
Command Line Mode
Basic Usage
# Minimum required arguments
resume-keyword-injector resume.pdf --keywords "python,developer,software"
Advanced Usage
# 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
Batch Processing Ready
# Process multiple resumes
for resume in *.pdf; do
resume-keyword-injector "$resume" \
--keywords "react,typescript,node.js,aws" \
--output "enhanced_$(basename "$resume")"
done
Available Options
| 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 |
How It Works
The Science Behind Invisible Keywords
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
Technical Implementation
- 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
ATS Compatibility
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
Installation & Requirements
Quick Install
pip install resume-keyword-injector
System Requirements
- Python: 3.11 or higher
- Operating System: Windows, macOS, or Linux
- Memory: 100MB+ available RAM
- Storage: 50MB for package + space for PDF processing
Dependencies
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
Real-World Use Cases
Job Seekers
- 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
Career Changers
- Skill Translation: Bridge keywords between industries
- Keyword Research: Use job posting analysis to identify key terms
- A/B Testing: Test different keyword combinations
Recruiters & Career Coaches
- Client Optimization: Help candidates improve ATS scores
- Keyword Strategy: Implement data-driven keyword selection
- Bulk Processing: Optimize multiple resumes efficiently
Error Handling & Validation
Comprehensive Error Messages
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
Smart Validation
- 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
Testing & Quality Assurance
Comprehensive Test Suite
- 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
Quality Metrics
- 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
Contributing
We welcome contributions! Here's how to get started:
Development Setup
git clone https://github.com/SimonOneNineEight/resume-keyword-injector.git
cd resume-keyword-injector
pip install -e ".[dev]"
Running Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=src
# Run specific test category
pytest tests/test_cli.py -v
Code Quality
# Format code
black src tests
# Sort imports
isort src tests
# Lint code
flake8 src tests
License & Legal
MIT License
This project is licensed under the MIT License - see the LICENSE file for details.
Ethical Use
This tool is designed for legitimate resume optimization. Users are responsible for:
- Adding relevant, truthful keywords
- Following job application guidelines
- Maintaining professional integrity
Disclaimer
- Keywords should reflect actual skills and experience
- Always review job application requirements
- ATS optimization is one factor among many in job applications
Support & Community
Getting Help
- Issues: GitHub Issues
- Documentation: Full Documentation
- Email: c121549443@gmail.com
Show Your Support
- 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 with care for job seekers everywhere
Stop letting great resumes get filtered out by keyword algorithms. Start optimizing today!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file resume_keyword_injector-1.0.1.tar.gz.
File metadata
- Download URL: resume_keyword_injector-1.0.1.tar.gz
- Upload date:
- Size: 20.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9437e27e753856f597606d3340ff6a05179ab17be142dde297045bb9b04bbf24
|
|
| MD5 |
9e79bf4d42afb89ac13ef18be13f4a21
|
|
| BLAKE2b-256 |
da2701f84f16c7abd4757cbfcc59ea4913daba0d63a37a679aa753d6fec19998
|
File details
Details for the file resume_keyword_injector-1.0.1-py3-none-any.whl.
File metadata
- Download URL: resume_keyword_injector-1.0.1-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b97c6cb01c496bc7dd4625df02382c5c676b638fd2787de0f2f0111c9f800725
|
|
| MD5 |
07bfd85302e19a0013952d334693f89b
|
|
| BLAKE2b-256 |
e00b8e05748a9f2bc171e56af06901c38ddf7c6014a4e3666e15ed686315abe8
|