An intelligent resume optimization platform that uses AI to help job seekers create targeted, professional resumes optimized for specific job descriptions.
Resume Optimizer analyzes job descriptions using Google's Gemini AI and provides personalized recommendations to improve your resume's match score. It helps you:
- Create professional resumes in minutes, not hours
- Optimize for specific jobs with AI-powered analysis
- Identify skill gaps and get actionable improvement suggestions
- Export in multiple formats (PDF, JSON, shareable links)
- Track your progress with detailed analytics
- Python 3.9 or higher
- Git (for cloning the repository)
-
Clone the repository
git clone https://github.com/AADHIIII/ApplyFirst.git cd ApplyFirst -
Install dependencies
pip install fastapi uvicorn pydantic pydantic-settings google-generativeai reportlab jinja2 requests beautifulsoup4 python-multipart
-
Set up environment (optional)
# Create .env file for your Gemini API key (optional for testing) echo "GEMINI_API_KEY=your_api_key_here" > .env
-
Run the application
python3 run.py
-
Open your browser
http://127.0.0.1:8000
- Job Description Processing: Automatically extracts requirements from job postings
- Intelligent Matching: Compares your profile against ideal candidate requirements
- Smart Recommendations: Provides specific, actionable improvement suggestions
- Match Scoring: Quantifies how well you match job requirements (0-100%)
- Personal Information: Contact details, professional summary, social links
- Education: Degrees, institutions, GPA, relevant coursework
- Work Experience: Positions, achievements, technologies used
- Projects: Personal and professional projects with outcomes
- Skills: Technical, soft skills, languages, certifications with proficiency levels
- Awards & Recognition: Professional achievements and honors
- Modern: Clean, contemporary design for tech roles
- Professional: Traditional format for corporate positions
- Minimal: Simple, elegant layout for creative fields
- Performance Tracking: Monitor optimization success rates
- Usage Analytics: Track time-to-completion and user engagement
- Match Score History: See improvement over time
- Export Statistics: Monitor resume download and sharing metrics
- Session Management: Secure user sessions with automatic cleanup
- Rate Limiting: Prevents abuse and ensures fair usage
- Error Handling: Comprehensive error tracking and user-friendly messages
- Logging: Detailed application logs for monitoring and debugging
- Health Monitoring: Real-time system health checks and metrics
resume_optimizer/
โโโ api/ # FastAPI application and routes
โ โโโ main.py # Application entry point
โ โโโ routes/ # API endpoints
โ โโโ middleware/ # Custom middleware
โโโ services/ # Business logic layer
โ โโโ profile.py # Profile management
โ โโโ job_description.py # Job posting analysis
โ โโโ optimization.py # AI optimization engine
โ โโโ export.py # Resume generation
โ โโโ analytics.py # Usage tracking
โโโ models/ # Pydantic data models
โ โโโ profile.py # User profile schemas
โ โโโ job_description.py # Job posting schemas
โ โโโ analysis.py # AI analysis schemas
โโโ static/ # Frontend assets
โโโ index.html # Main application
โโโ styles.css # Styling
โโโ app.js # JavaScript functionality
- Responsive Design: Works on desktop, tablet, and mobile
- Progressive Web App: Installable and works offline
- Real-time Updates: Live resume preview as you type
- Step-by-step Workflow: Guided process from profile to export
POST /api/v1/profile/- Create user profileGET /api/v1/profile/- Retrieve profilePUT /api/v1/profile/- Update profileDELETE /api/v1/profile/- Delete profile
POST /api/v1/job-description/text- Process job description textPOST /api/v1/job-description/url- Extract from URLPOST /api/v1/job-description/analyze- AI analysis
POST /api/v1/optimization/compare- Compare profile to jobPOST /api/v1/optimization/score- Calculate match scorePOST /api/v1/optimization/recommendations- Get suggestionsPOST /api/v1/optimization/apply- Apply optimizations
GET /api/v1/export/pdf- Generate PDF resumeGET /api/v1/export/json- Export as JSONPOST /api/v1/export/share- Create shareable linkGET /api/v1/export/templates- List available templates
GET /api/v1/analytics/session- Session analyticsGET /api/v1/analytics/usage- Usage statisticsGET /health- System health checkGET /docs- Interactive API documentation
The project includes comprehensive test coverage:
# Quick validation
python3 validate_integration.py
# Full test suite
python3 run_integration_tests.py
# Specific test categories
python3 -m pytest tests/test_models.py -v
python3 -m pytest tests/test_api_integration.py -v
python3 -m pytest tests/test_end_to_end_integration.py -v- Unit Tests: Individual component testing
- Integration Tests: Service interaction testing
- End-to-End Tests: Complete workflow validation
- User Acceptance Tests: Real-world scenario testing
- Performance Tests: Load and timing validation
- Profile Creation: < 2 seconds
- Job Analysis: < 30 seconds
- Resume Generation: < 5 seconds
- Complete Workflow: < 5 minutes
- Concurrent Users: 100+ simultaneous sessions
- Caching: Intelligent caching for faster responses
- Connection Pooling: Efficient database connections
- Rate Limiting: Prevents system overload
- Async Processing: Non-blocking operations
- Memory Management: Automatic cleanup and optimization
- Session Security: Secure session management with TTL
- Input Validation: Comprehensive data sanitization
- Rate Limiting: Protection against abuse
- Error Handling: No sensitive data in error messages
- CORS Configuration: Proper cross-origin resource sharing
- No Permanent Storage: User data is session-based only
- Automatic Cleanup: Sessions expire automatically
- No Third-party Tracking: Privacy-focused design
- Local Processing: Most operations happen locally
python3 run.py# Using Uvicorn
uvicorn resume_optimizer.api.main:get_app --host 0.0.0.0 --port 8000 --factory
# Using Docker
docker build -t resume-optimizer .
docker run -p 8000:8000 resume-optimizer
# Using Docker Compose
docker-compose up -dGEMINI_API_KEY=your_gemini_api_key_here
ENVIRONMENT=production
DEBUG=false
SESSION_TTL_MINUTES=60
API_TIMEOUT_SECONDS=30
MAX_RETRIES=3We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Run tests:
python3 validate_integration.py - Commit changes:
git commit -m "Add feature" - Push to branch:
git push origin feature-name - Submit a pull request
- Python: Follow PEP 8 style guidelines
- Type Hints: Use type annotations for all functions
- Documentation: Document all public APIs
- Testing: Include tests for new features
- Error Handling: Implement comprehensive error handling
- Complete profile management system
- AI-powered job description analysis
- Intelligent optimization recommendations
- Multiple resume export formats
- Professional resume templates
- Comprehensive analytics tracking
- Full API documentation
- End-to-end testing suite
- Production-ready deployment
- Advanced template customization
- Multi-language support
- Mobile app development
- Enterprise SSO integration
- LinkedIn integration
- ATS compatibility checker
- Interview preparation tools
- Salary negotiation guidance
- Career path recommendations
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Gemini AI for intelligent job analysis
- FastAPI for the robust web framework
- Pydantic for data validation
- ReportLab for PDF generation
- Font Awesome for beautiful icons
- Documentation: Check the
/docsendpoint when running locally - Issues: Report bugs on GitHub Issues
- Discussions: Join GitHub Discussions for questions
- Email: Contact the maintainers directly
Server won't start
# Check if port 8000 is in use
lsof -ti:8000 | xargs kill -9
# Try a different port
uvicorn resume_optimizer.api.main:get_app --host 127.0.0.1 --port 8001 --factoryFrontend not loading properly
# Check static files are accessible
curl http://127.0.0.1:8000/static/styles.css
curl http://127.0.0.1:8000/static/app.jsAPI key issues
# The system works without a real API key for testing
# Set a dummy key for development
export GEMINI_API_KEY=test_key- Clone the repo:
git clone https://github.com/AADHIIII/ApplyFirst.git - Install dependencies:
pip install -r requirements.txt - Run the app:
python3 run.py - Open browser: http://127.0.0.1:8000
- Start building: Create your optimized resume in minutes!
Transform your job search with AI-powered resume optimization. Get started today! ๐