AIResume is an intelligent resume tailoring application that uses AI to optimize your resume for specific job descriptions. It analyzes the match between your resume and a job posting, then intelligently modifies your resume to improve the match score while preserving dates, structure, and truthfulness.
- ๐ค Multi-Format Support: Upload resumes and job descriptions in PDF, DOCX, or TXT format
- ๐ Match Score Analysis: Calculate detailed match scores between resume and job description
- ๐ค AI-Powered Tailoring: Uses OpenRouter AI (Claude, GPT, LLaMA) to intelligently rewrite bullet points
- ๐ Before/After Comparison: See your match score improvement side-by-side
- โ Smart Preservation: Keeps all dates, personal info, and overall structure intact
- ๐ฏ Targeted Modifications: Tailors only the most recent 1-2 projects
- โฌ๏ธ Multiple Export Formats: Download tailored resume as PDF or DOCX
- ๐ Change Summary: Detailed explanation of what was modified and why
- Upload Your Resume: PDF, DOCX, or TXT format
- Provide Job Description: Upload file or paste text
- Analyze Match: See your current match score (typically 70-85%)
- Tailor Resume: AI optimizes your resume for the job
- Download: Get your tailored resume in PDF or DOCX format
The AI modifies only job responsibilities (bullet points) in your most recent 1-2 projects while:
- Preserving all dates and date ranges
- Maintaining bullet point count (ยฑ1)
- Keeping personal information unchanged
- Incorporating relevant keywords from the job description
- Adding quantifiable achievements where possible
- Python 3.11 or higher
- macOS, Linux, or Windows
- OpenRouter API Key (supports Claude, GPT, LLaMA, and more)
cd /Users/Sri/projects
git clone https://github.com/sthama121-del/AIResume.git
cd AIResumepython3 -m venv venv
source venv/bin/activate # On macOS/Linux
# OR
venv\Scripts\activate # On Windowspip install -r requirements.txtCreate a .env file in the project root with your OpenRouter API key:
OPENROUTER_API_KEY=your_openrouter_api_key_hereNote: The .env file is excluded from Git via .gitignore to protect your API key.
To get your API key:
- Visit OpenRouter
- Sign up/login and create an API key
- Add the key to your
.envfile
streamlit run app.pyThe application will open in your default browser at http://localhost:8501
-
Upload Resume (left column)
- Click "Browse files" or drag and drop
- Supported formats: PDF, DOCX, TXT
-
Provide Job Description (right column)
- Option 1: Upload file
- Option 2: Paste text directly
-
Analyze Match Score
- Click "๐ Analyze Match Score"
- View overall match percentage
- See matched and missing skills
-
Tailor Resume
- Click "โจ Tailor Resume to Job Description"
- Wait 30-60 seconds for AI processing
- Review the improved match score
-
Download Tailored Resume
- Download as DOCX (editable)
- Download as PDF (print-ready)
- Select AI Model: Choose from Claude 3.5 Sonnet, GPT-4, GPT-3.5, or LLaMA
- Projects to Tailor: Set how many recent projects to modify (1-3)
AIResume/
โโโ app.py # Streamlit frontend application
โโโ config.py # Configuration and environment setup
โโโ requirements.txt # Python dependencies
โโโ .env # Environment variables (API keys)
โโโ .gitignore # Git ignore rules
โโโ README.md # This file
โโโ backend/
โ โโโ __init__.py # Package initialization
โ โโโ file_parser.py # Extract text from PDF/DOCX/TXT
โ โโโ resume_analyzer.py # Calculate match scores
โ โโโ resume_tailor.py # AI-powered resume tailoring
โ โโโ document_generator.py # Generate PDF/DOCX outputs
โโโ uploads/ # Temporary file storage (gitignored)
Edit config.py to modify the default model:
DEFAULT_MODEL = "anthropic/claude-3.5-sonnet" # Or any OpenRouter modelAvailable models:
anthropic/claude-3.5-sonnet(recommended)openai/gpt-4-turboopenai/gpt-3.5-turbometa-llama/llama-3.1-70b-instruct
In config.py:
MAX_PROJECTS_TO_TAILOR = 2 # Number of recent projects to modify
BULLET_VARIATION_ALLOWED = 1 # Allow +1 or -1 bullets
TARGET_MATCH_SCORE_MIN = 77 # Minimum target score
TARGET_MATCH_SCORE_MAX = 95 # Maximum realistic scoreThe match score is calculated using:
- 60% Technical Skills Match: Programming languages, frameworks, tools, technologies
- 40% General Keywords Match: Job-specific terminology, domain knowledge, soft skills
Target scores:
- 70-75%: Basic match
- 77-86%: Good match (typical result)
- 87-95%: Excellent match (achievable with straightforward requirements)
- 95%+: Rare (only for very specific JDs)
Error: "OPENROUTER_API_KEY not found"
Solution: Ensure .env file exists in the project root with:
OPENROUTER_API_KEY=your_key_hereError: "Unsupported file format"
Solution: Ensure files are in PDF, DOCX, or TXT format
Error: "Could not extract text from PDF"
Solution: Try these formats in order:
- Save as text-based PDF (not scanned image)
- Convert to DOCX
- Copy text and paste as TXT
If initial match score is very low (<50%):
- Ensure job description is complete
- Check that resume contains relevant technical skills
- Verify resume format is being parsed correctly
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenRouter for providing unified LLM API access
- Streamlit for the amazing web framework
- Anthropic for Claude AI
- OpenAI for GPT models
For questions, issues, or suggestions:
- GitHub Issues: github.com/sthama121-del/AIResume/issues
- GitHub: @sthama121-del
Planned features:
- Multi-language support
- Resume templates library
- Cover letter generation
- ATS compatibility checker
- Batch processing for multiple job descriptions
- Resume version history
- LinkedIn profile optimization
- Interview preparation based on tailored resume
- v1.0.0 (2024-10) - Initial release
- Multi-format file support
- AI-powered tailoring with OpenRouter
- Match score analysis
- PDF/DOCX export
- Professional Streamlit UI
Made with โค๏ธ by Sri | Powered by AI