π Status: Live & Deployed
π Production: https://resumatchh.xyz
π± Frontend (Vercel): https://resumatch-front-4nts.vercel.app
π§ Backend API: https://resumatch-backend-q5qo.onrender.com
π³ Docker Hub: josephshibumathew/resumatch
ποΈ Database: MongoDB Atlas
Production: https://resumatchh.xyz (Secure HTTPS deployment)
Frontend: https://resumatch-front-4nts.vercel.app
- Student Experience:
- Create account β Upload resume β Get AI matches β Apply to jobs β Chat with recruiters
- Recruiter Experience:
- Create account β Post jobs β Review applications β Chat with candidates
- AI Features:
- Resume analysis with skill extraction
- Job matching algorithm
- Mock interview questions
Backend API: https://resumatch-backend-q5qo.onrender.com
- Health Check: /healthz
- Interactive Docs: /docs
- OpenAPI Schema: /openapi.json
- Overview
- Features
- Technology Stack
- Project Structure
- Setup & Installation
- Environment Variables
- API Documentation
- Deployment Guide
- User Workflows
- Contributing
ResuMatch is an intelligent platform that connects students and recruiters through AI-powered resume analysis and job matching. The platform uses Groq's Llama 3.3 70B model to provide comprehensive resume analysis, generate enhanced resumes, and create job-specific tailored resumes to help students stand out in their applications.
Stage 1: Basic Resume Analysis (Immediate Value)
- Upload your resume and get instant, comprehensive feedback
- Overall Score (0-100): Holistic assessment of resume quality
- ATS Compatibility Score: How well your resume works with Applicant Tracking Systems
- Experience Level: Entry/Mid/Senior level classification
- Strengths: What's working well in your resume
- Weaknesses: Areas that need improvement
- Missing Skills: Industry-standard skills you should consider adding
- Improved Resume: AI-generated enhanced version with better formatting, stronger action verbs, and quantified achievements
- Job Matches: Top 10 matching jobs from our database with compatibility scores
- Download as PDF: One-click download of your improved resume
Stage 2: Job-Specific Analysis (Optional Deep Dive)
- Analyze your resume against a specific job posting
- Compatibility Score: How well you match this specific position
- Skills Match: Detailed breakdown of matching vs missing skills
- Gap Analysis: What you need to work on for this role
- Tailoring Suggestions: Specific recommendations for this application
- Job-Tailored Resume: Customized resume optimized for this specific job posting
- Mock Interview Questions: Practice questions specific to this job role
- Download Tailored PDF: Job-specific resume ready to submit
- Frontend Application: https://resumatch-frontend-hazel.vercel.app
- Backend API: https://resumatch-backend-q5qo.onrender.com
- API Health Check: https://resumatch-backend-q5qo.onrender.com/healthz
- API Documentation: https://resumatch-backend-q5qo.onrender.com/docs
- Visit the live application
- Sign up as a Student or Recruiter
- Students: Upload your resume and get AI-powered job matches
- Recruiters: Post jobs and find qualified candidates
- Use real-time chat to communicate with each other
- π Two-Stage Resume Analysis:
- Stage 1 - Basic Analysis: Upload PDF resume and get immediate comprehensive feedback with overall score, ATS compatibility, experience level assessment, strengths, weaknesses, and missing skills
- Stage 2 - Job-Specific Analysis: Optional deep dive with job compatibility scoring, skill gap analysis, and tailored resume generation
- β¨ AI-Powered Resume Enhancement:
- Automatically generate improved resume with stronger action verbs, quantified achievements, and professional formatting
- Download improved resume as PDF with one click
- π― Job-Tailored Resumes:
- Generate customized resumes optimized for specific job postings
- Reorder skills, rewrite experience bullets with job keywords, and highlight relevant achievements
- Download tailored resume as PDF for each job application
- π― Smart Job Matching: Get top job recommendations based on resume analysis and skills with match percentages
- π¬ Real-time Chat: Communicate with recruiters through Socket.IO powered messaging
- π€ Mock Interviews: Practice with AI-generated interview questions tailored to your profile and specific jobs
- π Application Tracking: Track job applications and their status
- π Job Posting: Create and manage job listings with detailed requirements
- π₯ Candidate Management: View and manage job applicants
- π¬ Direct Communication: Chat with potential candidates in real-time
- π Resume Screening: AI-assisted candidate evaluation and matching
- π Secure Authentication: JWT-based auth with role-based access control
- π Dark/Light Mode: Toggle between themes for better user experience
- π± Responsive Design: Works seamlessly across desktop and mobile devices
- β‘ Real-time Updates: Live notifications and messaging with Socket.IO
- FastAPI - Modern Python web framework for building APIs
- Socket.IO - Real-time bidirectional communication
- MongoDB Atlas - Cloud database for storing user data, jobs, and messages
- Groq Llama 3.3 70B - Advanced AI model for resume analysis, enhancement, and job matching
- JWT - Secure authentication and authorization
- PyPDF2 - PDF processing for resume text extraction
- ReportLab - PDF generation for improved and tailored resumes
- Uvicorn - ASGI server for FastAPI
- React 18 - Modern UI library with hooks and context
- TypeScript - Type-safe JavaScript for better development experience
- Vite - Fast build tool and development server
- Tailwind CSS - Utility-first CSS framework for styling
- Socket.IO Client - Real-time communication with backend
- Axios - HTTP client for API calls
- React Router - Client-side routing
- Docker - Containerized application with multi-stage builds
- Docker Hub - Image registry (josephshibumathew/resumatch)
- Ubuntu VM - Production server deployment
- Gunicorn - Python WSGI HTTP Server for production
- Nginx - Reverse proxy and web server
- UFW Firewall - Server security and port management
- HTTPS/SSL - Secure connections with Let's Encrypt
- SSH - Secure remote server access
- Namecheap - Domain registration and DNS management (resumatchh.xyz)
- Render - Alternative backend hosting platform
- Vercel - Frontend hosting platform
- GitHub - Version control and CI/CD
- Environment Variables - Secure configuration management
resumatch/
βββ backend/ # FastAPI Backend
β βββ auth/ # Authentication & JWT handling
β β βββ auth_utils.py # Password hashing, verification
β β βββ dependencies.py # Auth dependencies for routes
β β βββ jwt_handler.py # JWT token creation/validation
β βββ database/ # Database connections
β β βββ mongo.py # MongoDB connection & collections
β βββ models/ # Pydantic data models
β β βββ user.py # User model (Student/Recruiter)
β β βββ job.py # Job posting model
β β βββ message.py # Chat message model
β βββ routes/ # API route handlers
β β βββ auth_routes.py # Login, signup, logout
β β βββ student_routes.py # Resume upload, job matching
β β βββ recruiter_routes.py # Job posting, applicant management
β β βββ job_routes.py # Job search, application
β β βββ pdf_generator.py # PDF generation for resumes
β β βββ parser/ # AI & parsing utilities
β β βββ llama_client.py # Groq Llama 3.3
β β βββ chat_service.py # Chat management service
β βββ sockets/ # Socket.IO handlers
β β βββ chat_server.py # Real-time chat implementation
β β βββ chat_client.py # Socket client for testing
β β βββ chat_example.py # Usage examples
β βββ utils/ # Utility functions
β β βββ password.py # Password utilities
β β βββ parser/ # AI & parsing utilities
β β βββ gemini_client.py # Google Gemini AI integration
β β βββ resume_parser.py # PDF text extraction
β β βββ job_matcher.py # Job matching algorithm
β βββ scripts/ # Setup scripts
β β βββ setup_mongodb.py # Database initialization
β β βββ setup_admin.py # Admin user creation
β βββ main.py # FastAPI application entry point
β βββ config.py # Configuration settings
β βββ requirements.txt # Python dependencies
β
βββ frontend/ # React Frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ Layout.tsx # Main app layout
β β β βββ LoadingSpinner.tsx # Loading indicator
β β β βββ ErrorBoundary.tsx # Error handling
β β β βββ DarkModeToggle.tsx # Theme switcher
β β βββ pages/ # Page components
β β β βββ LoginPage.tsx # User authentication
β β β βββ SignupPage.tsx # User registration
β β β βββ StudentDashboard.tsx # Student main page
β β β βββ RecruiterDashboard.tsx # Recruiter main page
β β β βββ ResumeUploadPage.tsx # Resume analysis
β β β βββ JobListPage.tsx # Job search & browsing
β β β βββ JobDetailsPage.tsx # Individual job details
β β β βββ ChatPage.tsx # Real-time messaging
β β β βββ MockInterviewPage.tsx # AI interview practice
β β β βββ PostJobPage.tsx # Job creation (recruiters)
β β β βββ MyJobsPage.tsx # Job management
β β βββ services/ # API communication
β β β βββ api.ts # Axios configuration
β β β βββ authService.ts # Authentication API
β β β βββ studentService.ts # Student-specific API
β β β βββ recruiterService.ts # Recruiter-specific API
β β β βββ jobService.ts # Job-related API
β β β βββ resumeService.ts # Resume analysis API
β β β βββ chatService.ts # Chat/messaging API
β β βββ context/ # React Context providers
β β β βββ AuthContext.tsx # Authentication state
β β β βββ ThemeContext.tsx # Dark/light mode
β β β βββ ChatContext.tsx # Chat state management
β β βββ hooks/ # Custom React hooks
β β β βββ useApi.ts # API calling hook
β β β βββ useLoading.ts # Loading state hook
β β β βββ useJobs.ts # Job data hook
β β βββ types/ # TypeScript type definitions
β β β βββ index.ts # All type definitions
β β βββ utils/ # Utility functions
β β βββ auth.ts # Auth helper functions
β β βββ helpers.ts # General utilities
β βββ public/ # Static assets
β βββ package.json # Node.js dependencies
β βββ vite.config.ts # Vite configuration
β βββ tailwind.config.js # Tailwind CSS configuration
β βββ tsconfig.json # TypeScript configuration
β
βββ docker/ # Docker configuration
β βββ docker-compose.yml # Development (default)
β βββ docker-compose.dev.yml # Development (explicit)
β βββ docker-compose.prod.yml # Production
β βββ .dockerignore # Docker ignore rules
β βββ README.md # Docker documentation
β
βββ env/ # Environment configuration
β βββ .env.dev # Development environment variables
β βββ .env.prod # Production environment template
β βββ README.md # Environment documentation
β
βββ scripts/ # Automation scripts
β βββ Makefile # Command shortcuts
β βββ deploy-production.sh # Production deployment script
β βββ verify-setup.sh # Environment verification
β βββ README.md # Scripts documentation
β
βββ docs/ # Project documentation
β βββ DOCKER_*.md # Docker guides
β βββ PRODUCTION_DEPLOYMENT.md
β βββ ... # Other documentation
β
βββ .gitignore # Git ignore rules
βββ .env # Active environment (not in git)
βββ README.md # This file
- MongoDB Atlas account (free tier available)
- Groq API account (free tier with generous limits - console.groq.com)
- Domain name (optional - we use Namecheap for resumatchh.xyz)
- Ubuntu VM or cloud server (for production deployment)
- Docker installed (for containerized deployment)
This project supports three deployment strategies:
Full containerization with Docker Compose for easy local development and testing.
# From project root, navigate to scripts folder
cd scripts
# Development environment (with hot-reload)
make dev-up
# Production environment (optimized images)
make prod-upSee detailed guides:
- Docker Configuration - Docker files documentation
- Docker Quick Start Guide
- Docker Deployment Guide
- Docker Quick Reference
Enterprise-grade deployment on Ubuntu server with Gunicorn, Nginx, HTTPS, and security hardening.
Production URL: https://resumatchh.xyz
Features:
- β Ubuntu 20.04/22.04 LTS server
- β Gunicorn WSGI server with multiple workers
- β Nginx reverse proxy with SSL/TLS
- β HTTPS encryption with Let's Encrypt
- β SSH secure access
- β UFW firewall configuration
- β Custom domain (resumatchh.xyz via Namecheap)
- β Automated SSL certificate renewal
- β Process monitoring and auto-restart
See detailed guide:
Quick deployment using managed cloud platforms.
Live URLs:
- Frontend: https://resumatch-front-4nts.vercel.app
- Backend: https://resumatch-backend-q5qo.onrender.com
- Render account (for managed backend deployment)
- Vercel account (for managed frontend deployment)
The platform includes four specialized AI functions:
- analyze_resume_basic() - Comprehensive resume scoring and feedback
- generate_improved_resume() - Creates enhanced version with better formatting and language
- analyze_job_fit() - Job-specific compatibility analysis and gap assessment
- generate_job_tailored_resume() - Creates customized resume for specific job postings
git clone https://github.com/bipaulr/ResuMatch.git
cd ResuMatch- Connect this repository to Render
- Create Web Service with these settings:
- Root Directory:
backend - Build Command:
pip install -r requirements.txt - Start Command:
uvicorn main:api --host 0.0.0.0 --port $PORT
- Root Directory:
- Add environment variables:
MONGODB_URI=your_mongodb_atlas_connection_string JWT_SECRET=your_secure_random_secret GOOGLE_API_KEY=your_google_gemini_api_key ALLOWED_ORIGINS=https://your-frontend.vercel.app
- Connect this repository to Vercel
- Set root directory to
frontend - Add environment variables:
VITE_API_BASE_URL=https://your-backend.onrender.com VITE_SOCKET_PATH=/ws/socket.io
- Create free M0 cluster
- Create database user
- Add network access (0.0.0.0/0 for deployment)
- Get connection string
- Visit Google AI Studio
- Create API key
- Add to backend environment variables
# Server Configuration
ALLOWED_ORIGINS=http://localhost:5173,https://your-frontend-domain.vercel.app
JWT_SECRET=your_super_secret_jwt_key_change_this_in_production
JWT_EXPIRES_IN=86400
# Database
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/resumatch?retryWrites=true&w=majority
# AI Configuration
GROQ_API_KEY=your_groq_api_key_from_console_groq_com
GROQ_MODEL=llama-3.3-70b-versatile# API Configuration
VITE_API_BASE_URL=http://localhost:8000
VITE_SOCKET_PATH=/ws/socket.ioRender (Backend):
ALLOWED_ORIGINS: Your Vercel domain(s)MONGODB_URI: MongoDB Atlas connection stringJWT_SECRET: Strong secret keyGROQ_API_KEY: Groq API key from console.groq.com
Vercel (Frontend):
VITE_API_BASE_URL: Your Render backend URLVITE_SOCKET_PATH:/ws/socket.io
POST /auth/signup- Register new userPOST /auth/login- User loginGET /auth/me- Get current user info
Student Endpoints (Stage 1 - Basic Analysis with immediate comprehensive feedback, improved resume generation, and job matches)
POST /student/analyze-resume- Job-specific analysis (Stage 2 - Advanced Analysis with compatibility scoring, gap analysis, and tailored resume generation)GET /student/download-improved-resume- Download AI-enhanced resume as PDFGET /student/download-tailored-resume- Download job-tailored resume as PDFPOST /student/upload-resume- Upload and analyze resumeGET /student/job-matches- Get matched jobsPOST /student/apply/{job_id}- Apply to a jobGET /student/applications- Get user's applications
POST /recruiter/jobs- Create new job postingGET /recruiter/jobs- Get recruiter's jobsGET /recruiter/jobs/{job_id}/applicants- Get job applicants
GET /jobs- Search and filter jobsGET /jobs/{job_id}- Get job details
GET /chat/messages/{room_id}- Get chat history- WebSocket:
/ws/socket.io- Real-time messaging
- Create free MongoDB Atlas account
- Create a new cluster (M0 free tier)
- Create datroq API Setup (Llama 3.3 70B)
- Visit Groq Console
- Create free account and generate API key
- Update
GROQ_API_KEYin environment variables - Model used: llama-3.3-70b-versatile (fast and powerful)
- Create Google Cloud project
- Enable Gemini API
- Create API key
- Update
GOOGLE_API_KEYin environment variables
- Push code to GitHub
- Create new Web Service on Render
- Connect GitHub repository
- Set root directory to
backend - Set build command:
pip install -r requirements.txt - Set start command:
uvicorn main:api --host 0.0.0.0 --port $PORT - Add environment variables
- Deploy and test
/healthzendpoint
- Create new project on Vercel
- Connect GitHub repository
- Set root directory to
frontend - Set build command:
npm run build - Set output directory:
dist - Add environment variables
- Deploy and test the application
- Update
ALLOWED_ORIGINSin Render with your Vercel domain - Update
VITE_API_BASE_URLin Vercel with your Render domain - Test complete workflow: signup β login β resume upload β job matching β chat
- Sign Up/Login β Create account with student role
- Upload Resume β PDF analysis with AI skill extraction and immediate comprehensive feedback
- Get Instant Value β View overall score, ATS compatibility, strengths, weaknesses, and missing skills
- Download Improved Resume β Get AI-enhanced resume with better formatting and stronger language
- Optional Deep Analysis β Run job-specific analysis for positions you're interested in
- Get Tailored Resume β Download customized resume optimized for specific job postings
- View Job Matches β Get top recommended jobs based on skills with match percentages
- Browse Jobs β Search and filter available positions
- Apply to Jobs β Submit applications with one click
- Chat with Recruiters β Real-time communication
- Mock Interview β Practice with AI-generated questions tailored to specific jobs
- Track Applications β Monitor application status
- Sign Up/Login β Create account with recruiter role
- Post Jobs β Create detailed job listings with requirements
- Manage Listings β View and edit posted jobs
- Review Applicants β See candidate profiles and resumes
- Chat with Candidates β Direct communication with applicants
- Evaluate Candidates β AI-assisted matching and with PyPDF2
- Stage 1 AI Analysis: Groq Llama 3.3 70B for comprehensive resume scoring, skill extraction, and improvement generation
- Stage 2 AI Analysis: Job-specific compatibility scoring, gap analysis, and tailored resume generation
- PDF Generation: ReportLab for creating downloadable improved and tailored resumes
- Real-time Chat: Socket.IO for instant messaging
- Data Persistence: MongoDB for all user data, resumes, and analysis result
- File Upload: PDF processing and text extraction
- AI Analysis: Gemini API for skill extraction and matching
- Real-time Chat: Socket.IO for instant messaging
- Data Persistence: MongoDB for all user data and relationships
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
This project is licensed under the MIT License.
- CORS Errors: Ensure
ALLOWED_ORIGINSincludes your frontend domain - Socket.IO Connection: Check
VITE_SOCKET_PATHmatches backend mount point - File Upload: Verify PDF files are valid and readable
- AI Responses: Check Google API key and quota limits
- Create an issue on GitHub for bugs
- Check API documentation at
/docsendpoint - Verify environment variables are correctly set
Built with β€οΈ by the ResuMatch Team