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:

  • pdfplumber
  • PyPDF2
  • python-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

Share this project:

Updates

Submission history