An AI-powered web application that analyzes a candidate's PDF resume against their target career and generates a structured resume review.
The system combines Prompt Engineering, Google Gemini, Flask, PDF text extraction, ATS analysis, career matching, resume scoring, and structured AI outputs to provide practical resume improvement guidance.
This project was developed as part of the Vault of Codes Prompt Engineering Internship.
The AI-Powered Resume Analyzer & Career Resume Coach allows students, freshers, and job seekers to upload a PDF resume and provide information about their target career.
The application extracts the resume content and processes it through a modular 8-prompt AI pipeline.
The final report includes:
- Overall Resume Score
- ATS Readiness Score
- Career Match Score
- Resume Strengths
- Key Problems
- Missing Information
- Grammar & Consistency Issues
- Content Improvement Suggestions
- Priority Improvement Plan
- Top Actions
- Final Recommendation
The application is designed to provide useful career guidance without inventing skills, achievements, technologies, or experience that are not supported by the candidate's resume.
Try the AI Resume Analyzer & Career Coach
- PDF resume upload
- PDF-only validation
- Maximum file size validation
- Multi-page PDF support
- Resume text extraction using PyMuPDF
- Detection of unreadable or invalid PDFs
- Character and page count extraction
Users can provide:
- Full Name
- Current Education
- Degree / Course
- Current Year / Stage
Users can specify:
- Target Job Role
- Target Industry
- Career Goal
- Experience Level
- Preferred Job Type
- Skills to Highlight
- Current Career Purpose
The AI analyzes:
- Resume structure
- Resume quality
- Career alignment
- ATS readiness
- Grammar and consistency
- Missing information
- Content improvement opportunities
- Overall resume readiness
The system provides:
- Overall Resume Score
- Resume Quality Score
- ATS Readiness Score
- Career Match Score
- Content Completeness Score
- Error & Consistency Score
- Content Strength / Evidence Score
- Responsive interface
- Professional report layout
- Dark mode
- Structured result cards
- Priority-based recommendations
- Resume analysis dashboard
The homepage introduces the AI Resume Analyzer and allows users to begin the resume review process.
Users enter their current education and academic background before starting the analysis.
Users specify their target job role, industry, career goal, experience level, and preferred job type.
After entering the required information and uploading a PDF resume, the user can start the analysis.
The final report presents the overall resume score, ATS readiness, career match, and detailed AI analysis.
The application compares the candidate's existing resume with the selected target career.
Important resume problems are identified along with their priority, reason, and recommended action.
The application generates practical improvement recommendations while preserving the candidate's actual experience.
The system provides content improvement guidance based on the candidate's existing resume information.
A final career-focused recommendation summarizes the most important improvements the candidate should make.
The application also supports a dark-mode interface.
Instead of sending the entire task through one large AI prompt, this project uses a modular 8-prompt pipeline.
PDF Resume
โ
โผ
Resume Text Extraction
โ
โผ
Prompt 1 โโ Resume Structure
โ
โผ
Prompt 2 โโ Quality Analysis
โ
โผ
Prompt 3 โโ Career Match
โ
โผ
Prompt 4 โโ ATS Analysis
โ
โผ
Prompt 5 โโ Error Detection
โ
โผ
Prompt 6 โโ Missing Information
โ
โผ
Prompt 7 โโ Content Improvement
โ
โผ
Prompt 8 โโ Final Report
โ
โผ
AI Resume Review
File
prompts/01-resume-structure.txt
Extracts and organizes information from the uploaded resume into structured JSON.
Typical information includes:
- Candidate information
- Professional summary
- Education
- Technical skills
- Soft skills
- Work experience
- Internships
- Projects
- Certifications
- Achievements
- Languages
- Other detected sections
File
prompts/02-quality-analysis.txt
Evaluates the overall quality of the resume.
It considers:
- Section quality
- Professional clarity
- Resume structure
- Existing strengths
- Weak content
- High-priority quality issues
File
prompts/03-career-match.txt
Compares the resume against the user's selected career goal.
It evaluates:
- Target role alignment
- Relevant existing skills
- Strong alignment points
- Weakly demonstrated skills
- Career alignment gaps
- Recommended development areas
File
prompts/04-ats-analysis.txt
Evaluates resume readiness for Applicant Tracking Systems.
It reviews:
- Section headings
- Resume readability
- Keyword coverage
- Relevant keywords
- Missing or weakly represented keywords
- ATS strengths
- ATS issues
- Priority ATS improvements
File
prompts/05-error-detection.txt
Checks the resume for:
- Grammar issues
- Wording problems
- Repetition
- Terminology inconsistencies
- Timeline inconsistencies
- Formatting consistency
- Information requiring candidate verification
File
prompts/06-missing-information.txt
Identifies important information that may be:
- Missing
- Incomplete
- Weakly demonstrated
- Candidate-verification dependent
The prompt also avoids treating optional sections as mandatory.
File
prompts/07-content-improvement.txt
Generates practical content improvements while preserving the candidate's real experience.
It can provide:
- Improved professional summary
- Project description improvements
- Internship improvements
- Work experience improvements
- Skills presentation improvements
- Wording improvements
- Future development areas
The prompt is designed not to fabricate unsupported candidate information.
File
prompts/08-final-report.txt
Combines the previous analyses into the final structured resume review.
The final report contains:
- Scores
- Executive summary
- Resume strengths
- Key problems
- ATS review
- Career goal review
- Missing information
- Errors and consistency
- Content improvements
- Priority action plan
- Top actions
- Final recommendation
The overall resume score is based on six components.
| Component | Weight |
|---|---|
| Resume Quality | 25% |
| ATS Readiness | 20% |
| Career Goal Match | 20% |
| Content Completeness | 15% |
| Error & Consistency Quality | 10% |
| Content Strength / Evidence | 10% |
| Total | 100% |
Overall Resume Score =
(Resume Quality Score ร 0.25)
+
(ATS Readiness Score ร 0.20)
+
(Career Match Score ร 0.20)
+
(Content Completeness Score ร 0.15)
+
(Error & Consistency Score ร 0.10)
+
(Content Strength / Evidence Score ร 0.10)
The final result is rounded to the nearest whole number.
The overall score is therefore derived from the component scores instead of being an arbitrary standalone value.
| Score | Interpretation |
|---|---|
| 85โ100 | Strong Resume |
| 70โ84 | Good Resume with Targeted Improvements |
| 50โ69 | Moderate Resume Requiring Meaningful Improvement |
| 30โ49 | Weak Resume Requiring Major Improvement |
| 0โ29 | Very Weak or Highly Incomplete Resume |
The scoring methodology does not automatically reduce a candidate's score simply because they are a student or fresher.
For students and freshers, the analyzer can consider evidence such as:
- Education
- Academic projects
- Personal projects
- Internships
- Certifications
- Coursework
- Technical skills
- Practical implementation
- Achievements
Professional employment history is not treated as mandatory when the candidate's experience level does not reasonably require it.
- Python
- Flask
- Google Gemini API
- Google GenAI Python SDK
- PyMuPDF
- python-dotenv
- HTML5
- CSS3
- JavaScript
- Google Gemini
- Prompt Engineering
- Structured JSON outputs
- Multi-stage AI pipeline
- Pytest
- Gunicorn
- Flask-compatible hosting
AI-Resume-Analyzer/
โ
โโโ prompts/
โ โโโ 01-resume-structure.txt
โ โโโ 02-quality-analysis.txt
โ โโโ 03-career-match.txt
โ โโโ 04-ats-analysis.txt
โ โโโ 05-error-detection.txt
โ โโโ 06-missing-information.txt
โ โโโ 07-content-improvement.txt
โ โโโ 08-final-report.txt
โ
โโโ screenshots/
โ โโโ analyse_button.png
โ โโโ Analysis_report.png
โ โโโ career_goal_match.png
โ โโโ career_goal.png
โ โโโ Dark_mode.png
โ โโโ Final_recommendation.png
โ โโโ Homepage.png
โ โโโ improvements.png
โ โโโ Key_problem_in_resume.png
โ โโโ student_information.png
โ โโโ updated_resume.png
โ
โโโ static/
โ โโโ script.js
โ โโโ style.css
โ
โโโ templates/
โ โโโ index.html
โ
โโโ tests/
โ โโโ conftest.py
โ โโโ test_final_report.py
โ โโโ test_mock_pipeline.py
โ โโโ test_pdf_processing.py
โ โโโ test_profile_validation.py
โ โโโ test_scoring.py
โ
โโโ uploads/
โ โโโ .gitkeep
โ
โโโ .env
โโโ .gitignore
โโโ app.py
โโโ requirements.txt
โโโ README.md
.envand uploaded resume files are excluded from Git using.gitignore.
git clone YOUR_GITHUB_REPOSITORY_URLMove into the project directory:
cd AI-Resume-Analyzerpython -m venv venv.\venv\Scripts\Activate.ps1If PowerShell prevents activation:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
.\venv\Scripts\Activate.ps1pip install -r requirements.txtCreate a .env file in the root directory.
For full AI mode:
GEMINI_API_KEY=your_gemini_api_key
GEMINI_MODEL=your_gemini_model
USE_AI=true
AI_PROMPT_LIMIT=8Replace the placeholders with your actual Gemini configuration.
Never upload your real Gemini API key to GitHub.
The .env file is ignored through .gitignore.
To execute all eight Gemini prompts:
USE_AI=true
AI_PROMPT_LIMIT=8When the application starts, the terminal should show:
========================================
AI Resume Analyzer
USE_AI: True
AI_PROMPT_LIMIT: 8
Gemini enabled for prompts 1 to 8.
========================================
During a successful full analysis:
========== RUNNING PROMPT 1 ==========
Prompt 1 completed successfully.
========== RUNNING PROMPT 2 ==========
Prompt 2 completed successfully.
========== RUNNING PROMPT 3 ==========
Prompt 3 completed successfully.
========== RUNNING PROMPT 4 ==========
Prompt 4 completed successfully.
========== RUNNING PROMPT 5 ==========
Prompt 5 completed successfully.
========== RUNNING PROMPT 6 ==========
Prompt 6 completed successfully.
========== RUNNING PROMPT 7 ==========
Prompt 7 completed successfully.
========== RUNNING PROMPT 8 ==========
Prompt 8 completed successfully.
The application also contains a mock mode for development and testing without consuming Gemini API quota.
Set:
USE_AI=false
AI_PROMPT_LIMIT=0The terminal will show:
AI Resume Analyzer
USE_AI: False
AI_PROMPT_LIMIT: 0
Gemini AI calls are DISABLED.
Mock mode can be used to test:
- Frontend
- PDF processing
- Form validation
- Scoring logic
- Report layout
- Application flow
- Automated tests
Mock results are clearly identified as development values and should not be presented as real Gemini analysis.
Start Flask:
python app.pyThe development server will run at:
http://127.0.0.1:5000
Open this URL in your browser.
The application currently accepts:
File Type: PDF
Maximum Size: 5 MB
The uploaded resume should contain readable text.
Image-only/scanned PDFs may not provide sufficient extractable text.
The project uses Pytest for local automated testing.
Tests cover:
- Career profile validation
- Missing required field detection
- PDF extension validation
- PDF text extraction
- Invalid PDF handling
- Weighted resume score calculation
- Resume score-level classification
- Mock pipeline execution
- Final report structure
Run all tests with:
pytest tests -vLatest local test result:
========================
9 passed, 5 warnings
========================
The five warnings observed during testing were PyMuPDF/SWIG dependency-level deprecation warnings and did not cause test failures.
| Component | Status |
|---|---|
| Student Information Form | โ Tested |
| Career Goal Form | โ Tested |
| PDF Validation | โ Tested |
| PDF Text Extraction | โ Tested |
| Prompt 1 | โ Tested |
| Prompt 2 | โ Tested |
| Prompt 3 | โ Tested |
| Prompt 4 | โ Tested |
| Prompt 5 | โ Tested |
| Prompt 6 | โ Tested |
| Prompt 7 | โ Tested |
| Prompt 8 | โ Tested |
| Weighted Scoring | โ Tested |
| Final Report | โ Tested |
| Mock Mode | โ Tested |
| Pytest Suite | โ 9 Passed |
A complete end-to-end Gemini test was performed using all eight prompts.
The terminal confirmed:
Prompt 1 completed successfully.
Prompt 2 completed successfully.
Prompt 3 completed successfully.
Prompt 4 completed successfully.
Prompt 5 completed successfully.
Prompt 6 completed successfully.
Prompt 7 completed successfully.
Prompt 8 completed successfully.
Example result from the test resume:
Overall Score: 78
ATS Score: 88
Career Match: 90
The test demonstrated that the pipeline could generate:
- Resume strengths
- Career alignment analysis
- ATS analysis
- Keyword analysis
- Missing information
- Timeline inconsistencies
- Grammar and consistency issues
- Content improvement suggestions
- Priority recommendations
- Final career-focused recommendation
API calls can be limited during development using AI_PROMPT_LIMIT to help manage API quota.
Resumes can contain sensitive personal information.
The application therefore follows several privacy-oriented practices:
- PDF files are validated before analysis.
- File size is limited to 5 MB.
- Resume text is extracted for analysis.
- Uploaded resumes are not intentionally permanently stored by the current application flow.
- Uploaded files are excluded from Git tracking.
- API keys are stored through environment variables.
.envis excluded from Git.- AI instructions discourage fabrication of candidate information.
The uploads/ directory contains .gitkeep only so that the directory structure can remain in Git.
The analyzer is designed to avoid inventing candidate information.
The AI should not fabricate:
- Skills
- Technologies
- Employers
- Work experience
- Internships
- Certifications
- Achievements
- Project details
- Responsibilities
- Numerical metrics
When recommending a skill the candidate does not currently demonstrate, it should be treated as a future development recommendation, not as an existing skill.
Users should verify AI-generated recommendations before modifying their resume.
The ATS score is an advisory estimate.
Different employers and Applicant Tracking Systems use different:
- Parsing methods
- Ranking algorithms
- Keywords
- Job requirements
- Resume filters
Therefore, an ATS score generated by this project does not guarantee that a resume will pass a real employer's ATS.
The project uses the following Python dependencies:
Flask==3.1.3
python-dotenv==1.2.3
google-genai==2.18.1
PyMuPDF==1.26.4
gunicorn==26.1.0
pytest==9.1.1
Install them using:
pip install -r requirements.txtSensitive and unnecessary development files should not be committed.
Recommended configuration:
.env
venv/
.venv/
__pycache__/
*.pyc
.pytest_cache/
uploads/*
!uploads/.gitkeep
.vscode/
.DS_Store
Thumbs.dbThe project includes gunicorn for production-compatible Flask deployment.
A typical production start command is:
gunicorn app:appEnvironment variables must be configured on the deployment platform instead of uploading the local .env file.
Required AI environment variables include:
GEMINI_API_KEY
GEMINI_MODEL
USE_AI
AI_PROMPT_LIMIT
Potential future enhancements include:
- Job Description vs Resume comparison
- Downloadable PDF analysis report
- Resume builder
- Resume version comparison
- LinkedIn profile analysis
- Job-specific keyword recommendations
- Resume improvement checklist
- Multiple resume comparison
- Career roadmap generation
- Additional AI provider support
- Improved analytics dashboard
This project demonstrates practical knowledge of:
- Prompt Engineering
- Multi-prompt AI workflows
- Google Gemini API integration
- Structured JSON generation
- Flask backend development
- HTML, CSS, and JavaScript
- PDF document processing
- ATS-oriented resume analysis
- Career goal matching
- AI safety constraints
- Environment variable management
- API quota-aware development
- Automated testing with Pytest
- Git and GitHub project management
- Never commit
.envto GitHub. - Never expose the Gemini API key in screenshots or source code.
- Uploaded resumes should not be committed to the repository.
- AI-generated recommendations should be treated as guidance.
- Candidates should only add skills and achievements they genuinely possess.
- ATS scores do not guarantee hiring outcomes.
- Mock-mode scores are for development and interface testing only.
Vault of Codes โ Prompt Engineering Internship
AI-Powered Resume Analyzer & Career Resume Coach
The project demonstrates the use of prompt engineering to transform unstructured resume information into structured, career-focused recommendations through a modular AI analysis pipeline.
Kanneboina Maheshwari
Computer Science and Engineering
GitHub: KanneboinaMaheshwari29
This application is an educational and career-support project.
Resume recommendations, career-match scores, ATS scores, and other AI-generated assessments are advisory only. Recruiter preferences, ATS systems, job requirements, and hiring decisions vary between employers.
Users are responsible for reviewing the generated recommendations and ensuring that their final resume contains only accurate and truthful information.
This project uses the Google Gemini API for AI-powered resume analysis through an 8-prompt pipeline.
Gemini API usage is subject to rate limits and quota restrictions. If the available quota is exhausted, live AI analysis may temporarily fail or become unavailable.
To support development and testing without consuming API quota, the application includes a Mock/Development Mode that:
- Does not make Gemini API requests.
- Uses predefined test responses.
- Allows the UI, scoring logic, PDF processing, and report rendering to be tested safely.
- Helps prevent unnecessary API usage during development.
The complete Gemini pipeline has also been successfully tested with all 8 prompts, producing real ATS, career-match, resume-quality, and final-report results.
Mock results are intended only for development and testing. Real resume analysis requires Gemini API access and available API quota.










