Skip to main content

AI career agent that tailors your resume for every job — 10x your interview chances in 30 seconds.

Project description

DeepResume

AI career agent that tailors your resume for every job -- 10x your interview chances in 30 seconds.

Python 3.10+ License: MIT Code style: black PyPI version

What It Does

DeepResume uses AI to analyze job listings and tailor your resume for maximum ATS (Applicant Tracking System) compatibility. It goes beyond simple keyword matching -- it understands context, rewrites your experience bullets with impact, and generates cover letters that get noticed.

Your Resume  +  Job Listing  =  Tailored Resume + Cover Letter + Interview Prep

Features

  • Multi-format resume parsing -- PDF, DOCX, JSON, or plain text
  • ATS optimization -- keyword density analysis, compatibility checks, score breakdown
  • AI-powered tailoring -- rewrites summary, skills, and experience for each job
  • Cover letter generation -- 5 tone options (professional, enthusiastic, conversational, formal, creative)
  • Batch processing -- tailor for multiple jobs in one run
  • Interview preparation -- generates likely questions based on the job listing
  • Match scoring -- detailed breakdown of keyword, skills, experience, and education match
  • Security-first -- no personal data in logs, input sanitization, API keys via env vars only

Demo Flow

$ deepresume tailor resume.json "https://jobs.company.com/senior-dev-123"

  ____                      _     _____
 |  _ \  ___  ___ _ __ ___ | |__ | ____|_  _____  ___
 | | | |/ _ \/ _ \ '_ ` _ \| '_ \|  _| \ \/ / _ \/ __|
 | |_| |  __/  __/ | | | | | |_) | |___ >  <  __/\__ \
 |____/ \___|\___|_| |_| |_|_.__/|_____/_/\_\___||___/

Resume: resume.json
Job: https://jobs.company.com/senior-dev-123

Processing...

┌─────────────────────────────────────────────────────┐
│            Resume-Job Match Analysis                 │
├──────────────┬──────────┬───────────────────────────┤
│ Category     │ Score    │ Bar                        │
├──────────────┼──────────┼───────────────────────────┤
│ Overall      │ 82.5%    │ ||||||||||||||....         │
│ Keywords     │ 85.0%    │ |||||||||||||||...         │
│ Skills       │ 75.0%    │ |||||||||||||......        │
│ Experience   │ 88.0%    │ ||||||||||||||||..         │
│ Education    │ 90.0%    │ |||||||||||||||||.         │
└──────────────┴──────────┴───────────────────────────┘

Missing Keywords: kubernetes, terraform, ci/cd pipelines

Generated files:
  [report] ./deepresume_output/analysis_report.md
  [resume] ./deepresume_output/tailored_resume.pdf
  [cover_letter] ./deepresume_output/cover_letter.pdf
  [interview_prep] ./deepresume_output/interview_prep.md

Done! Your tailored resume is ready.

Installation

# Install from PyPI
pip install deepresume

# Or clone the repository
git clone https://github.com/theihtisham/deep-resume.git
cd deep-resume

# Create a virtual environment
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# Install dependencies
pip install -e ".[dev]"

# Set your API key
export OPENAI_API_KEY="your-key-here"

Requirements

  • Python 3.10+
  • OpenAI API key (or compatible API endpoint)

Usage

Tailor Resume for a Job

# From a job URL
deepresume tailor resume.pdf "https://linkedin.com/jobs/view/123456"

# From pasted job text
deepresume tailor resume.json "Senior Python Developer at TechCorp. Requirements: 5+ years..."

# Specify output format and tone
deepresume tailor resume.docx "https://jobs.example.com/123" --format markdown --tone enthusiastic

# Batch: tailor for multiple jobs
deepresume tailor resume.json \
  "https://jobs.company.com/role-1" \
  "https://jobs.company.com/role-2" \
  "https://jobs.company.com/role-3"

Analyze Match (No Output Files)

# Quick analysis of how well your resume matches
deepresume analyze resume.pdf "Job listing text or URL"

Generate Cover Letter Only

# Generate a cover letter with specific tone
deepresume cover-letter resume.json "Job listing" --tone creative --format docx

Interview Preparation

# Generate interview questions from job listing
deepresume interview resume.json "Job listing URL or text"

ATS Compatibility Check (No API Key Needed)

# Check your resume for common ATS issues
deepresume check resume.pdf

Configuration Info

deepresume info

CLI Commands

Command Description Requires API Key
tailor Full pipeline: analyze, tailor, generate resume + cover letter Yes
analyze Score resume-job match, show missing keywords Yes
cover-letter Generate customized cover letter Yes
interview Generate interview preparation questions Yes
check Check resume for ATS compatibility issues No
info Show version and configuration info No

Configuration

All configuration is via environment variables or CLI flags:

Variable Default Description
OPENAI_API_KEY (required) Your API key
OPENAI_API_BASE https://api.openai.com/v1 API base URL (for compatible endpoints)
DEEPRESUME_MODEL gpt-4 AI model to use
DEEPRESUME_MAX_TOKENS 4096 Max response tokens
DEEPRESUME_TEMPERATURE 0.7 Response randomness (0-2)
DEEPRESUME_TIMEOUT 60 API timeout in seconds
DEEPRESUME_LOG_LEVEL WARNING Logging level
DEEPRESUME_SANITIZE_LOGS true Strip PII from logs

JSON Resume Format

For best results, use a structured JSON resume:

{
  "contact": {
    "name": "Jane Developer",
    "email": "jane@example.com",
    "phone": "(555) 123-4567",
    "location": "San Francisco, CA",
    "linkedin": "https://linkedin.com/in/janedoe",
    "github": "https://github.com/janedoe"
  },
  "summary": "Senior Python developer with 5 years of web development experience.",
  "skills": ["Python", "Django", "PostgreSQL", "Docker", "AWS"],
  "experience": [
    {
      "title": "Senior Developer",
      "company": "TechCorp",
      "start_date": "Jan 2020",
      "end_date": "Present",
      "descriptions": [
        "Built REST APIs serving 1M requests/day",
        "Led team of 5 engineers"
      ]
    }
  ],
  "education": [
    {
      "degree": "BS Computer Science",
      "institution": "State University",
      "graduation_date": "2019",
      "gpa": "3.8"
    }
  ],
  "certifications": ["AWS Solutions Architect"]
}

Testing

# Run all tests
pytest

# Run with coverage
pytest --cov=deepresume --cov-report=html

# Run specific test file
pytest tests/test_parsers.py -v

# Skip integration tests (require API key)
pytest -m "not integration"

Security

  • No personal data in logs -- PII (emails, phone numbers, SSNs) is automatically stripped from all log output
  • Input sanitization -- all user input is sanitized to prevent injection attacks
  • API keys via env vars only -- credentials are never stored in config files or logs
  • No data persistence -- DeepResume does not store or transmit your resume data beyond the AI API call

Project Structure

10-deep-resume/
  deepresume/
    __init__.py              # Package init with version
    cli.py                   # Click CLI interface
    config.py                # Environment configuration
    exceptions.py            # Custom exception hierarchy
    models.py                # Pydantic data models
    orchestrator.py          # Main pipeline orchestrator
    ai_engine.py             # OpenAI API interface
    utils.py                 # Text processing utilities
    parsers/
      __init__.py
      resume_parser.py       # PDF/DOCX/JSON resume parsing
      job_parser.py          # URL/text job listing parsing
    analyzers/
      __init__.py
      ats_analyzer.py        # ATS compatibility analysis
    generators/
      __init__.py
      resume_generator.py    # PDF/DOCX/Markdown output
      cover_letter_generator.py
    templates/
      __init__.py
      report.md.j2           # Analysis report template
      interview_prep.md.j2   # Interview prep template
  tests/
    test_models.py
    test_utils.py
    test_parsers.py
    test_analyzers.py
    test_generators.py
    test_config.py
    test_exceptions.py
    test_cli.py
  pyproject.toml
  requirements.txt
  .gitignore
  LICENSE
  README.md

License

MIT -- use it however you like.


Built with Python, Click, Pydantic, ReportLab, python-docx, and OpenAI.

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

deepresume-1.0.0.tar.gz (45.2 kB view details)

Uploaded Source

Built Distribution

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

deepresume-1.0.0-py3-none-any.whl (38.6 kB view details)

Uploaded Python 3

File details

Details for the file deepresume-1.0.0.tar.gz.

File metadata

  • Download URL: deepresume-1.0.0.tar.gz
  • Upload date:
  • Size: 45.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for deepresume-1.0.0.tar.gz
Algorithm Hash digest
SHA256 69bf6b8d1a46b6e912f1a0fbb41d95bd8b2f697c2b803c5b233208daad55a2af
MD5 98a5b57cb105efb59dc8c2ce2bfa072a
BLAKE2b-256 54b5c96473617493912ef936aab27bf0b03568ae42e2d95f1f0d7e209720b651

See more details on using hashes here.

File details

Details for the file deepresume-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: deepresume-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 38.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for deepresume-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 56a9e6c27e746c789ee67388444842cdd6eec83493ef0d27acd685fc7ccfe3c1
MD5 e59f14fa36aea1927853870788bad6b1
BLAKE2b-256 bca366ff51e049ac9b3a8ae76c2b9f3b587d3484f7c1e5b309147b0d3b14ff6f

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