Inspiration
Job seekers often face a frustrating problem: a resume can contain relevant skills and experience but still perform poorly against a specific job description.
Traditional resume checkers often focus mainly on keyword presence and provide a single score without explaining why the score is low or what should be improved.
This inspired us to build ATS Resume Analyzer — an AI-powered resume evaluation system that analyzes a resume against a target job description and provides a detailed breakdown of skills, keywords, content quality, ATS compatibility, and actionable improvement suggestions.
The goal was to build more than a simple resume checker. We wanted to create a complete application that combines document processing, NLP, semantic matching, LLM-based analysis, authentication, persistent history, and report generation into a single platform.
What it does
ATS Resume Analyzer evaluates a candidate's resume against a target job description and generates a comprehensive ATS assessment.
Users can:
- Upload a resume in supported document formats.
- Provide a target job description.
- Receive an overall ATS score from 0–100.
- Analyze skills and keyword alignment.
- Identify missing keywords and skills.
- Validate whether claimed skills are supported by project or experience descriptions.
- Analyze resume content and measurable achievements.
- Check ATS-friendly formatting and structure.
- Detect potential privacy risks such as exposed addresses.
- Receive AI-generated improvement recommendations.
- Save previous resume analyses.
- View analysis history.
- Generate downloadable PDF reports.
The system uses a hybrid scoring approach, combining deterministic rules, fuzzy keyword matching, semantic similarity, NLP-based entity detection, and LLM-generated analysis.
The objective is to transform a simple resume score into an actionable improvement roadmap.
How we built it
We designed the application as a modular full-stack AI system with a FastAPI backend and Streamlit frontend.
1. Resume Processing
The system first extracts text from uploaded resumes using document-processing libraries such as:
pdfplumberPyPDF2python-docx
Fallback extraction mechanisms are used to improve reliability across different PDF structures.
2. NLP and Entity Detection
We integrated spaCy for Named Entity Recognition (NER).
The NLP layer is used to identify entities such as locations and detect potentially exposed personal information, including street addresses and ZIP codes.
3. Semantic Skill Matching
To move beyond exact keyword matching, we integrated Sentence Transformers using the all-MiniLM-L6-v2 model.
Resume skills and relevant experience are converted into vector embeddings and compared using similarity calculations.
NumPy-based vectorized operations are used for efficient matrix-based skill validation.
This allows the system to identify relationships between concepts even when the wording is not exactly identical.
4. AI-Powered Analysis
We integrated the Groq API with Llama-3 for structured resume and job-description analysis.
The LLM is used to extract structured information and generate personalized recommendations based on the detected gaps.
5. Hybrid ATS Scoring
The final score combines multiple dimensions instead of relying on a single keyword count.
The scoring system evaluates:
- Skills & Keywords
- Content & Achievement Impact
- Skill Validation
- Formatting & Structure
- ATS Compatibility
- Privacy-related risks
- Additional bonuses and penalties
The overall score is normalized to a 0–100 scale.
6. Backend Architecture
The backend was implemented using FastAPI with an asynchronous architecture.
The application separates:
- API routes
- Authentication
- Database operations
- Resume parsing
- Job-description matching
- ATS scoring
- AI processing
- Feedback generation
- PDF generation
This modular structure makes the application easier to maintain and extend.
7. Authentication and Storage
We integrated Supabase for authentication and persistent storage.
The application supports:
- Email/password authentication
- Google OAuth
- JWT-based authentication
- User-specific analysis history
- PostgreSQL-based data storage
Analysis results are stored so users can revisit their previous evaluations.
8. PDF Report Generation
The system generates downloadable reports using:
- Jinja2
- HTML/CSS templates
- WeasyPrint
This converts the analysis results into a structured PDF report.
Overall Architecture
Resume + Job Description
↓
Document Extraction
↓
Resume Preprocessing
↓
┌────────┼─────────────┐
↓ ↓ ↓
NLP Keyword LLM
NER Matching Analysis
↓ ↓ ↓
└────────┼─────────────┘
↓
Semantic Skill Matching
↓
Hybrid ATS Scoring
↓
┌────────┼──────────────┐
↓ ↓ ↓
Score Skill Gaps Suggestions
↓
Supabase Storage
↓
PDF Report
Built With
- ai
- fastapi
- google-gmail-oauth
- jinja
- ml
- natural-language-processing
- python
- sentencetransformer
- spacy
- streamlit
- supabase
- weasyprint
Log in or sign up for Devpost to join the conversation.