Metadata-Version: 2.4
Name: resume-keyword-injector
Version: 1.0.1
Summary: Add invisible ATS-friendly keywords to PDF resumes
Project-URL: Homepage, https://github.com/SimonOneNineEight/resume-keyword-injector
Project-URL: Repository, https://github.com/SimonOneNineEight/resume-keyword-injector
License: MIT License
        
        Copyright (c) 2025 simon198
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Keywords: ats,job-search,keyword,optimization,pdf,python,resume
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Office/Business
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Requires-Dist: click>=8.2.1
Requires-Dist: pdfplumber>=0.9.0
Requires-Dist: pypdf>=3.0.0
Requires-Dist: reportlab>=4.0.0
Requires-Dist: rich>=14.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Description-Content-Type: text/markdown

# 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.

[![PyPI version](https://badge.fury.io/py/resume-keyword-injector.svg)](https://badge.fury.io/py/resume-keyword-injector)
[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Quick Start

```bash
pip install resume-keyword-injector
```

```bash
# 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

```bash
 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)

```bash
resume-keyword-injector
```

The tool will guide you through:
1. **PDF Selection**: Choose your resume file
2. **Keyword Input**: Enter relevant keywords for your target job
3. **Output Location**: Specify where to save the enhanced resume
4. **Method Selection**: Choose injection methods (or use defaults)

### Command Line Mode

#### Basic Usage
```bash
# Minimum required arguments
resume-keyword-injector resume.pdf --keywords "python,developer,software"
```

#### Advanced Usage
```bash
# 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
```bash
# 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

1. **PDF Analysis**: Extract existing text and analyze document structure
2. **Strategic Placement**: Position keywords using advanced PDF overlay techniques
3. **Invisibility Application**: Apply chosen methods (tiny fonts, white text, etc.)
4. **Quality Verification**: Ensure keywords are detectable but invisible
5. **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

```bash
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

```bash
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

```bash
git clone https://github.com/SimonOneNineEight/resume-keyword-injector.git
cd resume-keyword-injector
pip install -e ".[dev]"
```

### Running Tests

```bash
# Run all tests
pytest

# Run with coverage
pytest --cov=src

# Run specific test category
pytest tests/test_cli.py -v
```

### Code Quality

```bash
# 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](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](https://github.com/SimonOneNineEight/resume-keyword-injector/issues)
- **Documentation**: [Full Documentation](https://github.com/SimonOneNineEight/resume-keyword-injector#readme)
- **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!*