Skip to content

aliza-dev/ai-resume-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 AI Resume Analyzer & Job Matcher

Your Personal AI Recruiter β€” Land Your Dream Job Faster



React TypeScript TailwindCSS Node.js Express Prisma Gemini Stripe Vercel License


AI Resume Analyzer


Live Demo Β· Get Started Β· Features Β· Architecture


πŸ“‘ Table of Contents


πŸš€ Live Demo

πŸš€ View Live Demo Here

Try the full app β€” upload a resume, get an AI-powered ATS score, generate cover letters, and explore career growth insights. No installation required.

URL
🌐 Frontend aliza-resume-analyzer.vercel.app
βš™οΈ Backend API ai-resume-backend-sable.vercel.app

πŸ’‘ The Problem & Solution

78% of resumes are rejected by ATS systems before a human ever reads them.

Job seekers spend hours crafting resumes β€” only to be silently filtered out. They never know why they're rejected, which keywords are missing, or how to tailor their resume for each role. The feedback loop is completely broken.

AI Resume Analyzer fixes this. It's a full-stack SaaS platform that acts as your personal AI recruiter. Upload your resume once and instantly get a multi-dimensional ATS score, the exact keywords you're missing, AI-generated cover letters, mock interview questions with answer strategies, and a complete career growth roadmap. All powered by Google Gemini AI. No guesswork. No more rejections.


πŸ–Ό App Showcase

🏠 1. Landing Page & Value Proposition

πŸ’³ 2. Seamless Monetization & Pricing

πŸ” 3. Frictionless Authentication (Sign In & Register)

Sign In Page Create Account Page

πŸ“Š 4. User Dashboard & History

🧠 5. Multi-Dimensional ATS Scoring

🎯 6. Job Match & Skill Gap Analysis

✍️ 7. AI Content Generator (Cover Letters & Bios)

πŸš€ 8. Career Growth Hub & Projects

πŸ’¬ 9. Interactive AI Resume Assistant

πŸ“‹ 10. AI-Generated Interview Preparation

πŸŽ™οΈ 11. Live Mock Interview Simulator

πŸ‘€ 12. User Profile & Preferences


πŸš€ Core Features

Feature Description
πŸ“Š Multi-Dimensional ATS Scoring Scored across Grammar, Impact & Action Verbs, Formatting, and Keyword Density β€” each with animated progress cards
🧠 Dynamic Domain Classification Auto-detects Corporate vs. Academic CVs β€” academic CVs aren't penalized for length or publications
🎯 Semantic Job Matching Paste a JD or URL β€” semantic matching catches synonyms (Azure = Microsoft Azure, Collaborated = Collaboration)
✍️ AI Content Generation Cover letters, LinkedIn summaries, professional bios β€” with proper sign-off, no markdown artifacts, clean PDF export
πŸŽ™οΈ Mock Interview Prep 12 personalized questions from your resume + JD-targeted interview predictor with ideal answer strategies
πŸš€ Career Growth Hub AI career roadmaps (Current β†’ Next Role) + complexity-aware project suggestions
πŸ” Resume Visualizations Skills word cloud, top technologies chart, highlighted resume preview with toggleable categories
πŸ“„ PDF Reports Branded A4 exports with sanitized text, smart page breaks, and multi-page support
πŸ›‘οΈ Google OAuth + JWT Frictionless sign-in with Google or email/password with stateless JWT architecture
πŸ’³ Stripe Monetization Credit-based system with Stripe Elements, Hosted Checkout, PaymentIntents, and Webhooks
πŸ”„ PLG Onboarding Interactive landing page dropzone β†’ fake scan β†’ blurred teaser β†’ signup conversion funnel
⭐ In-App Feedback Floating 5-star feedback widget on every dashboard page

πŸ›  Tech Stack

Frontend

Technology Version Purpose
React 19 UI framework
TypeScript 5.9 Type safety
Vite 8 Build tool & dev server
TailwindCSS 4 Utility-first styling
Framer Motion 12 Animations & transitions
Recharts 3 Data visualization (charts)
Zustand 5 Lightweight state management
React Router 7 Client-side routing
@stripe/stripe-js Latest Stripe payment UI
@react-oauth/google Latest Google sign-in button

Backend & AI

Technology Version Purpose
Node.js 22 JavaScript runtime
Express 4 HTTP server framework
Prisma 6 ORM for MongoDB
MongoDB Atlas β€” Cloud database
Gemini 2.5 Flash Latest AI analysis & generation
Natural.js 8 NLP: TF-IDF, Porter Stemmer
Stripe Latest Payments & subscriptions
google-auth-library Latest OAuth token verification
Cheerio Latest Web scraping (job URLs)
jsPDF + autoTable Latest Server-quality PDF generation

πŸ— System Architecture

flowchart TB
    subgraph Client["Frontend - React + Vite"]
        UI["Pages & Components"]
        Store["Zustand Auth Store"]
        Axios["Axios Client"]
    end

    subgraph Server["Backend - Express.js"]
        Routes["API Routes"]
        MW["Middlewares"]
        Ctrl["Controllers"]
        Svc["Service Layer"]
    end

    subgraph AI["AI Layer"]
        Gemini["Gemini 2.5 Flash"]
        NLP["NLP Engine"]
        OCR["Gemini Vision OCR"]
    end

    subgraph DB["Data Layer"]
        Prisma["Prisma ORM"]
        Mongo[("MongoDB Atlas")]
    end

    subgraph Ext["External Services"]
        StripeAPI["Stripe API"]
        GoogleAPI["Google OAuth"]
    end

    UI --> Axios
    Axios -->|"REST + JWT"| Routes
    Routes --> MW
    MW -->|"Auth + Credits"| Ctrl
    Ctrl --> Svc
    Svc --> Gemini
    Svc --> NLP
    Svc --> OCR
    Svc --> Prisma
    Prisma --> Mongo
    Routes -.-> StripeAPI
    Store -.-> GoogleAPI
Loading

Request Lifecycle

User clicks "Analyze Resume"
  β†’ React component β†’ Axios (JWT header attached)
  β†’ Express Route β†’ authenticate() middleware
  β†’ requireCredits() middleware (checks aiCredits > 0)
  β†’ Controller β†’ Service β†’ Gemini AI + NLP Engine
  β†’ Response built β†’ deductCredit() called
  β†’ X-AI-Credits-Remaining header set
  β†’ Frontend receives data + updates UI + shows toast

πŸ—ƒ Database Schema

erDiagram
    USER ||--o{ RESUME : uploads
    RESUME ||--o| ANALYSIS : has

    USER {
        string id PK
        string name
        string email UK
        string password
        string role
        boolean isPro
        int aiCredits
        string stripeCustomerId
        datetime createdAt
    }

    RESUME {
        string id PK
        string userId FK
        string fileUrl
        string fileName
        int atsScore
        datetime createdAt
    }

    ANALYSIS {
        string id PK
        string resumeId FK
        int skillsScore
        int experienceScore
        int educationScore
        int projectsScore
        int jobMatchScore
        string_array keywords
        string_array missingKeywords
        string_array suggestions
    }

    FEEDBACK {
        string id PK
        string userId FK
        int rating
        string comment
        datetime createdAt
    }
Loading

πŸš€ Getting Started

Prerequisites

1. Clone the Repository

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

2. Install Backend Dependencies

cd backend
npm install

3. Install Frontend Dependencies

cd ../frontend
npm install

4. Generate Prisma Client

cd ../backend
npx prisma generate

5. Start Development Servers

Terminal 1 β€” Backend (port 5000):

cd backend
npm run dev

Terminal 2 β€” Frontend (port 3000):

cd frontend
npm run dev

πŸŽ‰ Open http://localhost:3000 and start analyzing resumes!


πŸ” Environment Variables

Backend β€” backend/.env

# Server
NODE_ENV=development
PORT=5000

# Database
DATABASE_URL=mongodb+srv://your-user:[email protected]/ai_resume_analyzer

# Authentication
JWT_SECRET=your-super-secret-jwt-key-change-this
JWT_EXPIRES_IN=7d
GOOGLE_CLIENT_ID=your-google-oauth-client-id.apps.googleusercontent.com

# File Uploads
UPLOAD_DIR=./uploads
MAX_FILE_SIZE=5242880

# CORS
CORS_ORIGIN=http://localhost:3000

# AI
GEMINI_API_KEY=your-gemini-api-key

# Stripe Payments
STRIPE_SECRET_KEY=sk_test_your-stripe-secret-key
STRIPE_WEBHOOK_SECRET=whsec_your-webhook-secret
STRIPE_PRICE_ID=
FRONTEND_URL=http://localhost:3000

# Admin
[email protected]

Frontend β€” frontend/.env

VITE_APP_NAME=AI Resume Analyzer
VITE_API_URL=http://localhost:5000/api
VITE_STRIPE_PUBLISHABLE_KEY=pk_test_your-stripe-publishable-key
VITE_GOOGLE_CLIENT_ID=your-google-oauth-client-id.apps.googleusercontent.com

πŸ—‚ Folder Structure

ai-resume-analyzer/
β”œβ”€β”€ frontend/                 # React 19 + TypeScript + Vite + TailwindCSS
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ api/              # Axios client & API wrappers
β”‚   β”‚   β”œβ”€β”€ components/       # Reusable UI (charts, layout, gates)
β”‚   β”‚   β”œβ”€β”€ pages/            # 15+ pages (dashboard, auth, landing)
β”‚   β”‚   β”œβ”€β”€ hooks/            # Zustand auth store, theme
β”‚   β”‚   β”œβ”€β”€ utils/            # PDF generation, sanitization
β”‚   β”‚   └── routes/           # Protected routes & router config
β”‚   └── index.html
β”‚
β”œβ”€β”€ backend/                  # Node.js + Express + Prisma + Gemini AI
β”‚   β”œβ”€β”€ prisma/               # MongoDB schema (User, Resume, Analysis)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ controllers/      # Auth & Analysis endpoints
β”‚   β”‚   β”œβ”€β”€ services/         # AI engine (2500+ LOC), LLM prompts, NLP
β”‚   β”‚   β”œβ”€β”€ middlewares/      # JWT auth, credit gating, error handler
β”‚   β”‚   β”œβ”€β”€ routes/           # 20+ REST API routes
β”‚   β”‚   β”œβ”€β”€ validators/       # Zod request schemas
β”‚   β”‚   └── server.ts         # Express entry point
β”‚   └── uploads/              # Resume file storage
β”‚
β”œβ”€β”€ assets/                   # README screenshots
└── README.md

πŸ“ Project Structure

Click to expand full tree
ai-resume-analyzer/
β”‚
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ prisma/
β”‚   β”‚   └── schema.prisma              # User, Resume, Analysis, Feedback
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”‚   β”œβ”€β”€ database.ts            # Prisma client singleton
β”‚   β”‚   β”‚   β”œβ”€β”€ env.ts                 # Environment variables
β”‚   β”‚   β”‚   └── multer.ts              # File upload config
β”‚   β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth.controller.ts     # Login, Register, Google OAuth
β”‚   β”‚   β”‚   └── analysis.controller.ts # 30+ AI analysis endpoints
β”‚   β”‚   β”œβ”€β”€ helpers/
β”‚   β”‚   β”‚   β”œβ”€β”€ jwt.ts                 # Token generation & verification
β”‚   β”‚   β”‚   β”œβ”€β”€ password.ts            # Bcrypt hashing
β”‚   β”‚   β”‚   └── response.ts            # Standardized API responses
β”‚   β”‚   β”œβ”€β”€ middlewares/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth.ts                # JWT authentication guard
β”‚   β”‚   β”‚   β”œβ”€β”€ credits.ts             # AI credit check & deduction
β”‚   β”‚   β”‚   └── errorHandler.ts        # Global error + 429 handling
β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth.routes.ts         # /api/auth/*
β”‚   β”‚   β”‚   β”œβ”€β”€ analysis.routes.ts     # /api/analysis/* (20+ routes)
β”‚   β”‚   β”‚   β”œβ”€β”€ stripe.routes.ts       # /api/stripe/* (checkout, webhook)
β”‚   β”‚   β”‚   └── feedback.routes.ts     # /api/feedback
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ analysis.service.ts    # Core engine (2500+ lines)
β”‚   β”‚   β”‚   β”œβ”€β”€ auth.service.ts        # User authentication logic
β”‚   β”‚   β”‚   β”œβ”€β”€ llm.service.ts         # Gemini AI prompts (750+ lines)
β”‚   β”‚   β”‚   └── nlp.engine.ts          # TF-IDF, stemming, classification
β”‚   β”‚   β”œβ”€β”€ validators/                # Zod request schemas
β”‚   β”‚   └── server.ts                  # Express app entry point
β”‚   └── uploads/                       # Resume file storage
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   β”œβ”€β”€ client.ts              # Axios + interceptors (401/403/429)
β”‚   β”‚   β”‚   β”œβ”€β”€ auth.ts                # Auth API calls
β”‚   β”‚   β”‚   └── resume.ts              # 25+ analysis API methods
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ layout/                # Sidebar, Navbar, DashboardLayout
β”‚   β”‚   β”‚   β”œβ”€β”€ charts/                # AtsScore, SkillsRadar, JobMatchBar
β”‚   β”‚   β”‚   β”œβ”€β”€ ui/                    # Button, Card, Badge, Skeleton
β”‚   β”‚   β”‚   β”œβ”€β”€ ProGate.tsx            # Credit-based feature gating
β”‚   β”‚   β”‚   β”œβ”€β”€ FeedbackModal.tsx      # Floating feedback widget
β”‚   β”‚   β”‚   └── SocialAuthButtons.tsx  # Google OAuth button
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.tsx               # Landing page (PLG dropzone)
β”‚   β”‚   β”‚   β”œβ”€β”€ Pricing.tsx            # Free vs Pro plans
β”‚   β”‚   β”‚   β”œβ”€β”€ Purchase.tsx           # 3-step Stripe checkout
β”‚   β”‚   β”‚   β”œβ”€β”€ NotFound.tsx           # Custom 404
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/                  # Login, Register
β”‚   β”‚   β”‚   └── dashboard/             # 15+ dashboard pages
β”‚   β”‚   β”œβ”€β”€ hooks/                     # useAuth (Zustand), useTheme
β”‚   β”‚   β”œβ”€β”€ data/                      # Sample resume mock data
β”‚   β”‚   β”œβ”€β”€ utils/                     # PDF gen, sanitization, constants
β”‚   β”‚   └── routes/                    # Router config + ProtectedRoute
β”‚   └── index.html
β”‚
β”œβ”€β”€ assets/                            # README screenshots
β”‚   β”œβ”€β”€ landing-page.jpg
β”‚   β”œβ”€β”€ pricing.jpg
β”‚   β”œβ”€β”€ auth.jpg
β”‚   β”œβ”€β”€ dashboard.jpg
β”‚   β”œβ”€β”€ analysis.jpg
β”‚   β”œβ”€β”€ job-match.jpg
β”‚   β”œβ”€β”€ career-hub.jpg
β”‚   └── mock-interview.jpg
β”‚
└── README.md

🀝 Contributing

Contributions are what make the open-source community such an incredible place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the project
  2. Create your feature branch
    git checkout -b feature/AmazingFeature
  3. Commit your changes
    git commit -m 'Add some AmazingFeature'
  4. Push to the branch
    git push origin feature/AmazingFeature
  5. Open a Pull Request

Note: Please ensure TypeScript compiles cleanly before submitting:

cd frontend && npx tsc --noEmit
cd ../backend && npx tsc --noEmit

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.



⭐ If this project helped you land a job, give it a star on GitHub!

Built with πŸ’œ by Aliza Tariq


Report Bug Β· Request Feature


🀝 Let's Connect

I'm always open to collaborations, freelance opportunities, and connecting with fellow developers!

Link
πŸ’Ό LinkedIn linkedin.com/in/aliza-tariq-dev
πŸ™ GitHub github.com/aliza-dev
πŸ“§ Email [email protected]

"The best way to predict the future is to build it."


Made with ❀️ and β˜• β€” If you found this useful, a ⭐ on the repo means the world!

About

An enterprise-grade AI Career SaaS. Features multi-dimensional ATS scoring, semantic job matching, AI cover letters, and mock interviews powered by Gemini AI. Built with React, Node.js, Prisma, & Stripe.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages