Skip to main content

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.

PyPI version Python 3.11+ License: MIT

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:

  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

# 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

  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

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

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resume_keyword_injector-1.0.1.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

resume_keyword_injector-1.0.1-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

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

Hashes for resume_keyword_injector-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9437e27e753856f597606d3340ff6a05179ab17be142dde297045bb9b04bbf24
MD5 9e79bf4d42afb89ac13ef18be13f4a21
BLAKE2b-256 da2701f84f16c7abd4757cbfcc59ea4913daba0d63a37a679aa753d6fec19998

See more details on using hashes here.

File details

Details for the file resume_keyword_injector-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for resume_keyword_injector-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b97c6cb01c496bc7dd4625df02382c5c676b638fd2787de0f2f0111c9f800725
MD5 07bfd85302e19a0013952d334693f89b
BLAKE2b-256 e00b8e05748a9f2bc171e56af06901c38ddf7c6014a4e3666e15ed686315abe8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page