Intelligent resume analysis powered by Google Gemini 2.5 Flash
- Overview
- Features
- Architecture
- Tech Stack
- Getting Started
- API Reference
- Project Structure
- Screenshots
- Contributing
- License
ATS (AI Resume Architect) is a full-stack web application that leverages Google's Gemini 2.5 Flash AI model to intelligently analyze resumes against job descriptions. It acts as a smart Applicant Tracking System that provides candidates with actionable insights to optimize their resumes for better job matching.
Upload your resume, paste a job description, and instantly receive a detailed compatibility report β complete with match percentage, skill gap analysis, strengths, and personalized improvement suggestions.
| Feature | Description |
|---|---|
| π€ AI-Powered Parsing | Uses Gemini 2.5 Flash to intelligently extract skills, experience, education, and tools from resumes |
| π PDF Resume Upload | Drag-and-drop or click-to-upload PDF resume support |
| π― ATS Match Scoring | Generates a 0β100 match percentage between resume and job description |
| β Skill Gap Analysis | Identifies matching skills and highlights missing ones |
| πͺ Strengths Report | Highlights candidate strengths relative to the role |
| π Improvement Suggestions | Provides actionable recommendations to improve resume fit |
| π¨ Cinematic UI | Stunning dark-themed interface with particle animations, glassmorphism, and smooth transitions |
| π± Responsive Design | Fully responsive layout that works across desktop, tablet, and mobile |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT (Browser) β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β PDF Upload β β JD Input β β Results UI β β
β ββββββββ¬ββββββββ ββββββββ¬ββββββββ ββββββββ²ββββββββ β
β β β β β
β ββββββββββ¬βββββββββ β β
β β POST /analyze β β
ββββββββββββββββββββΌββββββββββββββββββββββββββββΌβββββββββββ
β β
βΌ β
ββββββββββββββββββββββββββββββββββββββββββββββββ€βββββββββββ
β FLASK SERVER β β
β β β
β ββββββββββββββ ββββββββββββββ ββββββββββββ΄ββββββββ β
β β PDF Parser β β Resume β β JSON Response β β
β β (PyPDF2) ββββ Parser ββββ Builder β β
β ββββββββββββββ β (Gemini) β ββββββββββββββββββββ β
β βββββββ¬βββββββ β
β β β
β βββββββββββββββ ββββββ΄βββββββ β
β β JD Parser ββββ ATS Match β β
β β (Gemini) β β Engine β β
β βββββββββββββββ β (Gemini) β β
β βββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Google Gemini API β
β (2.5 Flash Model) β
βββββββββββββββββββββββββ
| Layer | Technology | Purpose |
|---|---|---|
| Backend | Python, Flask | REST API server, request handling, file management |
| AI Engine | Google Gemini 2.5 Flash | Resume parsing, JD analysis, ATS matching |
| PDF Processing | PyPDF2 | Text extraction from uploaded PDF resumes |
| Frontend | HTML5, Tailwind CSS, JavaScript | Responsive UI with cinematic design |
| Icons | Lucide Icons | Beautiful, consistent iconography |
| Markdown | Marked.js | Rendering AI-generated markdown responses |
- Python 3.8+ β Download
- pip β Python package manager (included with Python)
- Google Gemini API Key β Get your API key
-
Clone the repository
git clone https://github.com/your-username/ATS.git cd ATS -
Create a virtual environment
python -m venv .venv
-
Activate the virtual environment
- Windows:
.venv\Scripts\activate
- macOS/Linux:
source .venv/bin/activate
- Windows:
-
Install dependencies
pip install flask google-genai PyPDF2
Open main.py and replace the API key with your own Google Gemini API key:
client = genai.Client(api_key="YOUR_GEMINI_API_KEY_HERE")python main.pyThe application will start on http://localhost:8080
* Running on http://127.0.0.1:8080
* Debug mode: on
Open your browser and navigate to http://localhost:8080 to start analyzing resumes! π
Analyzes a resume against a job description using AI.
Request:
| Parameter | Type | Location | Required | Description |
|---|---|---|---|---|
resume |
File (PDF) | Form Data | β | The candidate's resume in PDF format |
job_description |
String | Form Data | β | The target job description text |
Response:
{
"parsed_resume": "β’ Skills: Python, Flask, ...\nβ’ Experience: ...",
"parsed_job_description": "β’ Required Skills: ...\nβ’ Responsibilities: ...",
"ats_result": "### Match Percentage: 78%\n### Matching Skills: ...\n### Missing Skills: ..."
}Error Responses:
| Status | Message |
|---|---|
400 |
Resume PDF is required |
400 |
Job description is required |
ATS/
βββ main.py # Flask application & API routes
βββ README.md # Project documentation
βββ templates/
β βββ index.html # Frontend template (alternate)
β βββ index1.html # Main frontend template (active)
βββ uploads/ # Uploaded PDF resumes (auto-created)
βββ .venv/ # Python virtual environment
π Landing Page β Click to expand
A cinematic dark-themed landing page with particle animation background, glassmorphism panels, and a clean two-column layout for resume upload and job description input.
π Analysis Results β Click to expand
Three-column results dashboard showing parsed resume profile, ATS scorecard with match percentage, and detailed job analysis β all rendered with rich markdown formatting and color-coded sections.
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create your feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m "feat: add amazing feature" - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow PEP 8 for Python code
- Use meaningful commit messages following Conventional Commits
- Add docstrings to new functions
- Test your changes locally before submitting
This project is licensed under the MIT License β see the LICENSE file for details.
Built with β€οΈ and powered by Google Gemini AI
