Skip to content

nikhilesh-git/ai-resume-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AI Resume Analyzer

A production-grade full-stack AI SaaS application that analyzes resumes against job descriptions using Groq LLM, Google Gemini embeddings, and ATS-style scoring algorithms.

Portfolio-ready project: Demonstrates AI integration, full-stack architecture, JWT auth, Redis caching, vector similarity, and scalable system design.


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     FRONTEND (React)                    β”‚
β”‚  Landing β†’ Auth β†’ Dashboard β†’ Analyze β†’ Results         β”‚
β”‚  Deployed on: Vercel                                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚ HTTPS / REST
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  BACKEND (Node/Express)                 β”‚
β”‚                                                         β”‚
β”‚  /auth     β†’ JWT auth (login/register)                  β”‚
β”‚  /resume   β†’ Upload + parse PDF                         β”‚
β”‚  /analysis β†’ AI pipeline (Groq + Gemini)                β”‚
β”‚  /user     β†’ Profile + usage tracking                   β”‚
β”‚                                                         β”‚
β”‚  Deployed on: Render                                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚                      β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   MongoDB Atlas β”‚    β”‚      AI Layer                   β”‚
β”‚                 β”‚    β”‚                                β”‚
β”‚  Users          β”‚    β”‚  Groq (llama-3.3-70b)           β”‚
β”‚  Resumes        β”‚    β”‚   β†’ Resume analysis (ATS)        β”‚
β”‚  Analyses       β”‚    β”‚   β†’ Resume rewriting             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚                                β”‚
           β”‚           β”‚  Gemini (embedding-001)         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”    β”‚   β†’ Semantic similarity         β”‚
β”‚  Redis (Upstash)β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚  Cache (1hr TTL)β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Features

Feature Details
ATS Score (0–100) Groq LLM evaluates resume vs JD
Semantic Similarity Gemini embeddings + cosine similarity
Section-wise Scores Skills, Experience, Education, Projects
Composite Score 50% LLM + 30% semantic + 20% sections
Missing Skills Detection Extracted directly from JD
Actionable Suggestions Specific improvements (not generic)
ATS Tips Resume optimization guidance
AI Resume Rewriter Groq rewrites resume for better matching
JWT Auth Secure login + refresh tokens
Redis Caching Same resume+JD β†’ instant result
Rate Limiting Prevents abuse

🧠 AI Pipeline

Resume + Job Description
        β”‚
        β–Ό
Groq β†’ LLM Analysis (ATS Score, Skills, Suggestions)
        β”‚
        β–Ό
Groq β†’ Section-wise scoring
        β”‚
        β–Ό
Gemini β†’ Generate embeddings (resume + JD)
        β”‚
        β–Ό
Cosine Similarity β†’ Semantic Score
        β”‚
        β–Ό
Weighted Average:
50% LLM + 30% Semantic + 20% Sections
        β”‚
        β–Ό
Final Composite Score

πŸ› οΈ Tech Stack

Frontend

  • React + Vite
  • Tailwind CSS
  • Zustand
  • TanStack Query

Backend

  • Node.js + Express
  • MongoDB + Mongoose
  • Redis (Upstash)
  • Groq SDK
  • Google Generative AI (Gemini)
  • JWT Auth + bcrypt
  • Multer + pdf-parse

πŸ“ Project Structure

ai-resume-analyzer/
β”œβ”€β”€ client/        # React frontend
└── server/        # Express backend
    β”œβ”€β”€ routes/
    β”œβ”€β”€ controllers/
    β”œβ”€β”€ services/
    β”‚   └── aiService.js   # Groq + Gemini logic
    β”œβ”€β”€ models/
    └── middleware/

βš™οΈ Environment Variables

Server (server/.env)

NODE_ENV=production
PORT=5000

MONGODB_URI=your_mongodb_uri

JWT_SECRET=your_secret
JWT_REFRESH_SECRET=your_secret

GROQ_API_KEY=your_groq_key
GEMINI_API_KEY=your_gemini_key

REDIS_URL=your_redis_url
CLIENT_URL=http://localhost:3000

Client (client/.env)

VITE_API_URL=http://localhost:5000/api/v1

▢️ Local Setup

git clone https://github.com/yourusername/ai-resume-analyzer.git
cd ai-resume-analyzer

npm run install:all
npm run dev

πŸ“Š API Example

Analyze Resume

POST /api/v1/analysis/analyze
{
  "resumeId": "123",
  "jobDescription": "We are looking for a Software Engineer..."
}

Response

{
  "compositeScore": 73,
  "semanticScore": 68,
  "llmAnalysis": {
    "score": 76,
    "missing_skills": ["Docker", "Kubernetes"],
    "suggestions": ["Add quantified achievements"]
  }
}

πŸ’‘ Why Groq + Gemini?

  • Groq β†’ ultra-fast, low-cost LLM for analysis & rewriting
  • Gemini β†’ high-quality embeddings for semantic matching

πŸ‘‰ This hybrid approach balances:

  • ⚑ Speed
  • πŸ’° Cost
  • 🧠 Accuracy

πŸ“ˆ Limits (Free Tier)

Service Limit
Groq ~14K requests/day
Gemini ~1500 embeddings/day

πŸ‘‰ ~700–750 resume analyses/day (without caching)


πŸš€ Deployment

Backend β†’ Render

  • Build: npm install
  • Start: npm start

Frontend β†’ Vercel

  • Build: npm run build

Database β†’ MongoDB Atlas

Cache β†’ Upstash Redis


🧠 System Design Highlights

  • Hybrid AI architecture (LLM + embeddings)
  • Caching layer (Redis)
  • Stateless backend (scalable)
  • Composite scoring (robust evaluation)

🎯 Interview Explanation

β€œI used Groq for fast and cost-efficient LLM tasks like resume analysis and rewriting, and Gemini for embeddings to compute semantic similarity. This hybrid design improves performance while maintaining accuracy.”


πŸ“Œ Future Improvements

  • Queue system (BullMQ)
  • WebSocket updates
  • Resume templates export
  • Payment integration

πŸ“œ License

MIT

About

AI-powered Resume Analyzer that evaluates resumes against job descriptions using LLMs (Groq) and semantic similarity (Gemini embeddings) to generate ATS scores, skill gaps, and personalized improvement suggestions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors