AI Resume Analyzer is a full-stack web application that uses artificial intelligence to analyze resumes and match them with job descriptions. The system extracts skills from PDF resumes, scores them based on industry relevance, and provides job matching capabilities with detailed recommendations for improvement.
- Resume Upload & Analysis: Upload PDF resumes for automatic text extraction and skill identification
- AI-Powered Scoring: Calculate resume quality scores based on skills, length, and diversity
- Job Matching: Compare resumes against job descriptions using TF-IDF similarity algorithms
- Skill Gap Analysis: Identify missing skills and provide targeted recommendations
- Resume Dashboard: Track upload history, scores, and analytics
- Secure Authentication: JWT-based user authentication and authorization
- User Profiles: Personalized dashboard for each user
- Resume History: Complete history of uploaded and analyzed resumes
- PDF Processing: Advanced text extraction from PDF documents
- Machine Learning: Custom ML models for skill extraction and job matching
- Responsive Design: Mobile-first web interface
- Real-time Analysis: Instant feedback and scoring results
- Framework: FastAPI (Python)
- Database: PostgreSQL with SQLAlchemy ORM
- Authentication: JWT tokens with bcrypt hashing
- ML/AI: scikit-learn, custom algorithms
- PDF Processing: pdfplumber
- Validation: Pydantic schemas
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- UI Library: React 19
- Styling: Tailwind CSS 4
- Components: shadcn/ui (Radix UI primitives)
- Icons: Lucide React
- Deployment: Backend on Render, Frontend on Vercel
- Database: PostgreSQL (production)
- Environment: Python virtual environment
ai-resume-analyzer/
├── backend/ # FastAPI backend application
│ ├── main.py # Application entry point
│ ├── database.py # Database configuration
│ ├── requirements.txt # Python dependencies
│ ├── api/ # API route handlers
│ ├── models/ # SQLAlchemy database models
│ ├── services/ # Business logic layer
│ ├── ml/ # Machine learning components
│ ├── schemas/ # Pydantic validation schemas
│ ├── security/ # Authentication utilities
│ ├── utils/ # Utility functions
│ ├── uploads/ # File upload directory
│ └── README.md # Backend documentation
├── frontend/ # Next.js frontend application
│ ├── app/ # Next.js App Router pages
│ ├── components/ # React components
│ ├── lib/ # Utility libraries
│ ├── public/ # Static assets
│ ├── package.json # Node.js dependencies
│ └── README.md # Frontend documentation
├── venv/ # Python virtual environment
└── README.md # This file
- Python 3.8+ for backend
- Node.js 18+ for frontend
- PostgreSQL database
- Git for version control
git clone <repository-url>
cd ai-resume-analyzer# Navigate to backend directory
cd backend
# Create Python virtual environment
python -m venv venv
# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
# Install Python dependencies
pip install -r requirements.txt
# Set up environment variables
# Create .env file in backend directory
DATABASE_URL=postgresql://username:password@localhost:5432/resume_analyzer
SECRET_KEY=your-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30# Create PostgreSQL database
createdb resume_analyzer
# The application will automatically create tables on startup# Navigate to frontend directory
cd ../frontend
# Install Node.js dependencies
npm install
# Configure API endpoint (optional)
# Update lib/api.ts if needed
export const API_URL = "http://localhost:8000"-
Start Backend:
cd backend venv\Scripts\activate # Windows uvicorn main:app --reload
Backend will be available at: http://localhost:8000
-
Start Frontend:
cd frontend npm run devFrontend will be available at: http://localhost:3000
-
Backend Production:
cd backend uvicorn main:app --host 0.0.0.0 --port 8000 -
Frontend Production:
cd frontend npm run build npm run start
- Visit the application at http://localhost:3000
- Click "Signup" to create a new account
- Login with your credentials
- Access the dashboard and upload functionality
- Upload Resume: Click "Choose File" and select a PDF resume
- Optional Job Description: Paste a job description for matching
- Analyze: Click "Upload & Analyze" to process the resume
- View Results: See ATS score, job match percentage, skills found, and recommendations
- View all uploaded resumes
- Check individual scores and match results
- Track analysis history
- Download processed resumes
POST /auth/login- User login (OAuth2 form data)POST /users- User registration
POST /resume/upload- Upload and analyze resumePOST /resume/match- Match resume with job descriptionGET /resume/history- Get user's resume historyGET /resume/dashboard- Get dashboard analyticsGET /resume/progress- Get processing progressPUT /resume/{id}- Update resumeDELETE /resume/{id}- Delete resumeGET /resume/download/{id}- Download resume file
GET /users/me- Get current user informationPUT /users/me- Update user profile
Full API documentation available at: http://localhost:8000/docs (Swagger UI)
- Skill Weights: Industry-specific skill importance (Python: 10, Git: 6, etc.)
- Length Bonus: Optimal resume length (200-600 words)
- Diversity Bonus: Points for multiple skill categories
- Maximum Score: 100 points
- Method: Regex pattern matching against predefined skill database
- Coverage: Technical skills (programming languages, frameworks, tools)
- Accuracy: Case-insensitive matching with word boundaries
- Algorithm: TF-IDF vectorization with cosine similarity
- Input: Resume text vs. job description text
- Output: Match percentage (0-100%)
- Backend: Type hints, Pydantic validation, SQLAlchemy best practices
- Frontend: TypeScript strict mode, ESLint, component composition
- Testing: Unit tests for ML algorithms, API endpoint testing
- Backend: Add models, services, and API routes following existing patterns
- Frontend: Create components in
/components, pages in/app - ML: Extend algorithms in
/backend/mldirectory
# Backend
DATABASE_URL=postgresql://user:pass@localhost:5432/db
SECRET_KEY=your-256-bit-secret
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Frontend (if needed)
NEXT_PUBLIC_API_URL=http://localhost:8000- Connect GitHub repository
- Set environment variables
- Configure PostgreSQL database
- Deploy with uvicorn
- Connect GitHub repository
- Set build settings (Next.js default)
- Configure environment variables
- Deploy automatically
- Use managed PostgreSQL (Render, Railway, or AWS RDS)
- Set connection pooling for production
- Enable SSL connections
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code structure and naming conventions
- Add type hints and TypeScript types
- Write descriptive commit messages
- Test your changes thoroughly
- Update documentation for new features
Backend Connection Issues:
- Verify PostgreSQL is running and credentials are correct
- Check
.envfile configuration - Ensure virtual environment is activated
Frontend API Errors:
- Confirm backend is running on correct port
- Check API_URL in
frontend/lib/api.ts - Verify CORS configuration in backend
PDF Processing Errors:
- Ensure PDF files are not corrupted
- Check file size limits
- Verify pdfplumber installation
Authentication Issues:
- Clear browser localStorage
- Check JWT token expiration
- Verify backend secret key configuration
- Backend: Check uvicorn console output
- Frontend: Use browser developer tools
- Database: Check PostgreSQL logs
[Add your license information here]
For questions, issues, or contributions:
- Create an issue in the GitHub repository
- Check the backend and frontend READMEs for detailed documentation
- Review API documentation at
/docsendpoint
- Advanced ML models for better skill extraction
- Resume optimization suggestions
- Multiple file format support (DOCX, TXT)
- Team collaboration features
- Analytics dashboard improvements
- Mobile app development
- Unit and integration testing
- CI/CD pipeline setup
- Performance optimization
- Security audits
- Docker containerization