Intelligent Resume Tailoring System powered by Anthropic Claude that automatically generates ATS-optimized resumes based on job descriptions.
This AI Resume Generator takes your existing experience, projects, and skills, then intelligently tailors them to match any job description you provide. It uses advanced AI to:
- Analyze Job Descriptions โ Extract keywords, requirements, and technologies
- Match Your Background โ Find relevant projects and experiences
- Generate Tailored Resumes โ Create ATS-optimized PDF resumes
- Optimize for ATS โ Ensure high compatibility with Applicant Tracking Systems
graph TD
A[๐ Job Description Input] --> B[๐ง Claude AI Analysis]
B --> C[๐ Keyword Extraction]
C --> D[๐ Semantic Matching]
E[๐ Knowledge Base] --> F[๐๏ธ Projects Library]
E --> G[๐ผ Work Experience]
E --> H[๐ ๏ธ Skills Database]
D --> I[โ๏ธ Relevance Scoring]
F --> I
G --> I
H --> I
I --> J[๐ฏ Smart Selection]
J --> K[๐ Resume Generation]
K --> L[๐ LaTeX Compilation]
L --> M[๐ PDF Output]
style A fill:#e1f5fe
style B fill:#f3e5f5
style M fill:#e8f5e8
๐ knowledge_base/
โโโ github_projects/ โ 25+ projects from your portfolio
โโโ work_experience/ โ Professional experience history
โโโ skills/ โ Technical skills organized by category
โโโ past_resumes/ โ Previous resume versions
โโโ templates/ โ LaTeX resume templates
โโโ profile_summary.json โ Personal information
What Happens:
- System loads 25 GitHub projects with extracted technologies
- Imports work experience with achievements and responsibilities
- Categorizes technical skills (Languages, Frameworks, Tools, etc.)
- Validates all data using Pydantic models for type safety
# User submits job description
POST /api/analyze-job
{
"job_description": "We need a React developer with Node.js..."
}
# Claude AI processes the description
โ
# Extracts structured data:
{
"required_skills": ["React", "Node.js", "JavaScript"],
"preferred_skills": ["TypeScript", "AWS", "Docker"],
"keywords": ["frontend", "API", "responsive"],
"experience_level": "Mid-level",
"industry_focus": "Technology",
"company_name": "TechCorp"
}What Happens:
- Claude AI analyzes the job posting using advanced NLP
- Extracts keywords using multiple pattern-matching techniques
- Identifies technologies from a database of 80+ known tech stacks
- Determines experience level and industry requirements
- Handles API failures with intelligent fallback parsing
# Sentence transformers convert text to vectors
job_vector = model.encode(job_requirements)
project_vectors = model.encode(project_descriptions)
# Cosine similarity calculates relevance scores
scores = cosine_similarity(job_vector, project_vectors)
# โ [0.85, 0.72, 0.91, 0.45, ...]
# Top projects selected based on relevance
selected_projects = top_projects_by_score(scores, limit=4)What Happens:
- Sentence transformers convert job requirements to numerical vectors
- Project summaries are converted to comparable vectors
- Cosine similarity calculates relevance scores (0-1 scale)
- Smart selection picks the 3-4 most relevant projects
- Technology overlap increases project ranking
% LaTeX template with dynamic content
\section{Experience}
\resumeSubHeadingListStart
% Dynamically inserted based on job relevance
\resumeProjectHeading
{\textbf{ConnectX} $|$ \emph{React, Node.js, PostgreSQL}}{June 2024}
\resumeItemListStart
\resumeItem{Built real-time chat with Socket.io}
\resumeItem{Implemented JWT authentication}
\resumeItemListEnd
\resumeSubHeadingListEndWhat Happens:
- Template selection based on job type and industry
- Dynamic content insertion with most relevant projects
- Keyword optimization to match job requirements
- LaTeX compilation to professional PDF format
- ATS optimization with proper formatting and keywords
ai-resume-generator/
โโโ app/
โ โโโ main.py # ๐ FastAPI application & API endpoints
โ โโโ models/ # ๐ Pydantic data models
โ โ โโโ __init__.py # (ProjectModel, ExperienceModel, etc.)
โ โโโ services/ # ๐ง Business logic
โ โ โโโ resume_agent.py # ๐ค Core AI agent with Claude integration
โ โโโ templates/ # ๐ LaTeX resume templates (future)
โโโ knowledge_base/ # ๐ Your personal data
โโโ tests/ # ๐งช Comprehensive test suite
โโโ static/ # ๐ Web interface files (future)
โโโ output/ # ๐ Generated resumes
โโโ requirements.txt # ๐ฆ Python dependencies
| Endpoint | Method | Purpose | Status |
|---|---|---|---|
/ |
GET | Root endpoint with system info | โ |
/health |
GET | Health check and agent status | โ |
/api/analyze-job |
POST | Analyze job description with Claude | โ |
/api/knowledge-base/summary |
GET | View loaded projects/experience | โ |
/api/generate-resume |
POST | Generate tailored resume | ๐ Phase 2 |
/api/resume/{id}/download |
GET | Download generated PDF | ๐ Phase 3 |
# Job Analysis Output
class JobAnalysisModel(BaseModel):
required_skills: List[str]
preferred_skills: List[str]
keywords: List[str]
industry_focus: Optional[str]
experience_level: Optional[str]
technologies: List[str]
company_name: Optional[str]
# Project Information
class ProjectModel(BaseModel):
title: str
summary: str
technologies: List[str]
github_url: Optional[str]
relevance_score: Optional[float]
# Work Experience
class ExperienceModel(BaseModel):
company: str
position: str
duration: Dict[str, str]
description: List[str]
technologies: List[str]
achievements: List[str]- Python 3.10+
- Anthropic API Key (Get one here)
- Git for cloning the repository
# 1. Clone the repository
git clone https://github.com/Dextron04/resume-agent.git
cd resume-agent
# 2. Navigate to the AI generator
cd ai-resume-generator
# 3. Run the automated setup script
./setup.sh
# 4. Configure your API key
cp .env.example .env
# Edit .env and add: ANTHROPIC_API_KEY=your_api_key_here
# 5. Pre-download AI models (prevents hanging)
python download_model.py
# 6. Start the API server
uvicorn app.main:app --reload# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Set up environment
export ANTHROPIC_API_KEY="your_api_key_here"
export KNOWLEDGE_BASE_PATH="../knowledge_base"
# Run tests to verify setup
pytest tests/test_phase1.py -v
# Start the server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000Open your browser to: http://localhost:8000/docs
Health Check:
curl http://localhost:8000/healthView Your Knowledge Base:
curl http://localhost:8000/api/knowledge-base/summaryAnalyze a Job Description:
curl -X POST "http://localhost:8000/api/analyze-job" \
-H "Content-Type: application/json" \
-d '{
"job_description": "We are seeking a React developer with Node.js experience to build modern web applications. Must have experience with JavaScript, TypeScript, PostgreSQL, and AWS deployment."
}'Expected Response:
{
"analysis": {
"required_skills": ["React", "Node.js", "JavaScript"],
"preferred_skills": ["TypeScript", "PostgreSQL", "AWS"],
"keywords": ["web applications", "modern", "developer"],
"experience_level": "Mid-level",
"technologies": [
"React",
"Node.js",
"JavaScript",
"TypeScript",
"PostgreSQL",
"AWS"
],
"company_name": null
},
"status": "success"
}# Run all Phase 1 tests
pytest tests/test_phase1.py -v
# Run specific tests
pytest tests/test_phase1.py::TestPhase1::test_job_analysis_with_mock_anthropic -v
# Run with coverage
pytest tests/ --cov=app --cov-report=html- Knowledge Base Loading - Import projects, experience, skills
- Claude AI Integration - Job description analysis
- Technology Extraction - Pattern matching from summaries
- FastAPI Backend - RESTful API with documentation
- Comprehensive Testing - 100% test coverage for core features
- Error Handling - Graceful fallbacks and logging
- Semantic Similarity Engine - Vector-based project ranking
- Smart Project Selection - Choose top 3-4 relevant projects
- Experience Filtering - Select relevant work history
- Keyword Optimization - Maximize ATS compatibility
- Relevance Scoring - Quantify job-project alignment
- LaTeX Template System - Professional resume layouts
- Dynamic Content Insertion - Job-specific customization
- PDF Generation Pipeline - High-quality output
- Multiple Templates - Industry-specific designs
- ATS Optimization - Maximum compatibility testing
- Web Interface - User-friendly frontend
- Resume Versioning - Track multiple versions
- A/B Testing - Compare different approaches
- Analytics Dashboard - Success rate tracking
- Cover Letter Generation - Matching cover letters
- ๐ง AI Job Analysis: Claude analyzes any job description
- ๐ Knowledge Base: 25+ projects and work history loaded
- ๐ Technology Extraction: 80+ technologies automatically detected
- ๐ REST API: Full documentation at
/docs - ๐งช Testing Suite: Comprehensive test coverage
- โก Performance: Fast startup with model caching
- Projects Loaded: 25 GitHub repositories
- Work Experience: 6 professional positions
- Technologies Known: 80+ frameworks and tools
- API Response Time: < 2 seconds for job analysis
- Model Cache: ~80MB sentence transformer model
- Test Coverage: 100% for Phase 1 features
# Required
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# Optional
KNOWLEDGE_BASE_PATH=../knowledge_base # Path to your data
LOG_LEVEL=INFO # Logging verbosity
MODEL_CACHE_DIR=~/.cache/huggingface # AI model storageknowledge_base/
โโโ github_projects/ # JSON files for each project
โ โโโ 01_project_name.json
โ โโโ 02_another_project.json
โ โโโ ...
โโโ work_experience/ # Professional experience
โ โโโ work_experience.json
โโโ skills/ # Technical skills by category
โ โโโ skills.json
โโโ past_resumes/ # Previous resume versions
โโโ templates/ # LaTeX templates
โโโ profile_summary.json # Personal information
Issue: ModuleNotFoundError: No module named 'sentence_transformers'
# Solution: Install missing dependencies
pip install -r requirements.txtIssue: Import hanging during startup
# Solution: Pre-download models
python download_model.pyIssue: ANTHROPIC_API_KEY environment variable is required
# Solution: Set your API key
export ANTHROPIC_API_KEY="your_key_here"
# Or add it to your .env fileIssue: Server not starting
# Solution: Check if port 8000 is available
lsof -i :8000
# Or use a different port
uvicorn app.main:app --port 8001# Enable detailed logging
export LOG_LEVEL=DEBUG
# Run with Python debugger
python -m pdb -c continue -m uvicorn app.main:app --reloadThis project is licensed under the MIT License. See LICENSE file for details.
- Anthropic for Claude AI capabilities
- Hugging Face for sentence transformer models
- FastAPI for the excellent web framework
- LaTeX community for resume templates
Tushin Kulshreshtha - GitHub
Contributions are welcome! Please feel free to submit a Pull Request.
# Fork the repository
git clone https://github.com/yourusername/resume-agent.git
# Create a feature branch
git checkout -b feature/amazing-feature
# Make your changes and test
pytest tests/ -v
# Commit and push
git commit -m "Add amazing feature"
git push origin feature/amazing-feature
# Open a Pull Request- ๐ง Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ Documentation: Project Wiki