A comprehensive resume analysis system that uses machine learning to match resumes with job market requirements, providing personalized feedback and recommendations.


The Resume Analyzer is a comprehensive web application that helps job seekers improve their resumes by analyzing them against current job market trends. The system identifies skills present in the resume, highlights missing in-demand skills, and provides personalized recommendations for improvement.
- Resume Parsing: Extracts text and key information from PDF, DOCX, and TXT resumes
- Skill Detection: Identifies technical and soft skills present in the resume
- Market Comparison: Compares identified skills against current job market demands
- Gap Analysis: Highlights missing skills that are in high demand
- Personalized Recommendations: Provides tailored advice to improve resume effectiveness
The project consists of three main components:
- API Server (FastAPI): Handles user interactions, file uploads, and results display
- ML Matcher Service (Flask): Performs resume parsing, skill extraction, and analysis
- MongoDB Database: Stores resume data, analysis results, and job market information
- Docker and Docker Compose
- Git
git clone https://github.com/software-students-spring2025/5-final-deployables.git
Edit the .env
file to set your specific configuration values.
Start all services using Docker Compose:
docker-compose up -d
This will start the API server, ML matcher service, and MongoDB database.
Once all services are running, you can access the application at:
- Web Interface: http://localhost:8000
- API Server Documentation: http://localhost:8000/docs
- ML Service API: http://localhost:5000/analyze (POST endpoint)
To run tests for the API server:
cd api_server
pytest tests/ --cov=app
To run tests for the ML matcher:
cd ml_matcher
pytest tests/ --cov=app
- Visit http://localhost:8000 in your browser
- Enter your name and email
- Upload a resume file (PDF, DOCX, or TXT format)
- Click "Analyze Resume"
- View the analysis results, including:
- Overall match score
- Identified skills
- Missing in-demand skills
- Personalized recommendations
GET /
: Main web interfacePOST /upload
: Upload and analyze a resumeGET /results/{resume_id}
: View analysis results for a specific resumeGET /api/analyses
: List recent analyses (JSON)
POST /analyze
: Analyze a resume file
The project uses GitHub Actions for CI/CD:
- Automatically builds and tests on push or pull request to main branch
- Pushes Docker images to Docker Hub
- Deploys to Digital Ocean
For CI/CD to work, set the following GitHub Secrets:
DOCKER_USERNAME
: Docker Hub usernameDOCKER_PASSWORD
: Docker Hub passwordDIGITALOCEAN_HOST
: Digital Ocean droplet IPDIGITALOCEAN_USERNAME
: SSH usernameDIGITALOCEAN_SSHKEY
: SSH private key
The MongoDB database contains three collections:
resumes
: Stores information about uploaded resumesanalyses
: Stores analysis resultsjob_skills
: Stores job market data including skill demand levels