AI Resume Editor is a powerful tool that leverages large language models to automatically analyze, improve, and customize your resume for specific job descriptions. It parses various resume formats, suggests enhancements, and can generate tailored versions and cover letters, helping you present a polished, job-focused application.
- 📄 Resume Parsing: Extract structured data from PDF resumes
- 🎯 Job Tailoring: Customize resumes for specific job descriptions
- 🔍 Keyword Extraction: Identify critical ATS keywords from job postings
- 🎨 Multiple Templates: Generate beautiful HTML resumes with 4 different templates
- 🤖 AI-Powered: Uses advanced LLMs for intelligent resume optimization
AI Resume Editor/
├── src/
│ ├── config/ # Configuration management
│ ├── core/ # Core business logic (parser, editor, generator)
│ ├── models/ # Pydantic data models
│ ├── services/ # External services (LLM)
│ ├── templates/ # HTML resume templates
│ └── utils/ # Pure utility functions
├── tests/ # Test suite
├── examples/ # Example usage and sample files
├── backup/ # Backup of previous structure
├── main.py # Main entry point
└── README.md
- Clone the repository
git clone <repository-url>
cd "AI Resume Editor"- Install dependencies
pip install -r requirements.txt
# or using uv
uv pip install -r requirements.txt- Set up environment variables
Create a .env file in the root directory:
OPENAI_API_KEY=your_api_key_here
OPENAI_MODEL=gpt-4
# Optional: OPENAI_BASE_URL=https://api.openai.com/v1Run the main script to parse a resume and generate HTML:
python main.pyfrom src.core import ResumeParser
parser = ResumeParser()
resume_data = parser.process_resume("CV.pdf")
print(f"Parsed resume for: {resume_data.name}")from src.core import ResumeParser, ResumeGenerator
# Parse resume
parser = ResumeParser()
resume_data = parser.process_resume("CV.pdf")
# Generate HTML with different templates
generator = ResumeGenerator()
output_file = generator.generate(
resume_data,
template_choice="1", # 1=classic, 2=modern, 3=structural, 4=premium
output_filename="my_resume.html"
)from src.core import ResumeParser, ResumeEditor
# Parse resume
parser = ResumeParser()
resume_data = parser.process_resume("CV.pdf")
# Read job description
with open("job_description.txt", "r") as f:
job_desc = f.read()
# Tailor resume
editor = ResumeEditor()
tailored_resume = editor.tailor_resume(resume_data, job_desc)from src.core import ResumeEditor
editor = ResumeEditor()
job_desc = "Looking for a Python developer with AWS experience..."
keywords = editor.extract_keywords(job_desc)
print("Technical Skills:", keywords.technical_skills)
print("Soft Skills:", keywords.soft_skills)
print("Domain Lingo:", keywords.domain_lingo)- Classic - Traditional, professional layout
- Modern - Contemporary design with clean aesthetics
- Structural - Organized, section-focused layout
- Premium - Elegant, feature-rich design
- See
examples/README.mdfor more usage examples - Check
examples/sample_job_description.txtfor job description format
All configuration is managed through src/config/settings.py. You can customize:
- LLM model and parameters
- Template directory location
- Default temperature for AI responses
Contributions are welcome! Please ensure:
- Code follows the project structure
- Tests are added for new features
- Documentation is updated
[Add your license here]
Built with:
- LangChain for LLM orchestration
- Pydantic for data validation
- Jinja2 for template rendering
- PDFPlumber for PDF parsing