Skip to content
 
 

Latest commit

 

History

110 Commits

Folders and files

Repository files navigation

GitHub license GitHub issues Last Commit Build GitHub stars Forks GitHub contributors PRs Welcome ECSoC'26

AI Resume Analyzer

An enterprise-grade automated platform to parse resumes, evaluate ATS scores, extract technical skills, and generate contextual recommendations.

Framework Overview

Client (Frontend)

React Vite TypeScript Bootstrap Axios

Server (Backend)

Python Django DRF PDFPlumber CORS

Key Features • Project Preview • Architecture • Tech Stack • Installation & Setup • API Reference • Roadmap • Contributing • Contributors


Key Features

  • Flexible Multi-Format Parsing — Instant text extraction from files (PDF format) using Python pdfplumber.
  • ATS Optimizer & Scoring Engine — High-performance scoring algorithm that parses resumes against technical standard keywords.
  • Contextual Skill Extraction — Detects core programming languages, frameworks, developer tools, database engines, and libraries.
  • Dynamic Feedback Generation — Yields smart suggestions recommending targeted certifications, technologies, and formatting changes.
  • Premium Glassmorphic UI — Fully responsive, beautiful interface with active state indicators, hover metrics, and smooth transitions built using Bootstrap 5.

Project Preview/ Screenshots

🏠 Home Page

Application Interface Preview

📤 Resume Upload

Application Interface Preview

📜 Analysis Result

Application Interface Preview

Architecture & Data Flow

 ┌──────────────┐         POST /api/upload/         ┌─────────────────┐
 │              │ ────────────────────────────────> │                 │
 │ React Client │                                   │ Django Backend  │
 │  (Bootstrap) │ <──────────────────────────────── │   (REST API)    │
 └──────────────┘           Analysis JSON           └─────────────────┘
                                                             │
                                                             ▼
                                                    ┌─────────────────┐
                                                    │  PDFPlumber Parser│
                                                    └─────────────────┘
                                                             │
                                                             ▼
                                                    ┌─────────────────┐
                                                    │ Keyword Matches │
                                                    │   & ATS Engine  │
                                                    └─────────────────┘

Tech Stack

Client (Frontend)

  • Framework: React 19 (Vite boilerplate)
  • Language: TypeScript
  • Styling: Bootstrap 5 + Vanilla CSS Variables (Glassmorphism theme)
  • API Handler: Axios

Server (Backend)

  • Framework: Django REST Framework (DRF)
  • Language: Python 3.10+
  • CORS Management: django-cors-headers
  • Text Extractor: PDFPlumber

Project Structure

ai-resume-analyzer/
├── frontend/                 # React frontend application
│   ├── public/             # Static public assets (ui.png, favicon, etc.)
│   ├── src/
│   │   ├── assets/         # Images, logos, and Vite assets
│   │   ├── App.css         # Component layout configurations
│   │   ├── App.tsx         # Application entry view & core client logic
│   │   ├── index.css       # Core stylesheets and variables
│   │   └── main.tsx        # DOM Renderer
│   ├── package.json        # Node modules and dependency matrix
│   └── tsconfig.json       # TypeScript compiler settings
│
├── backend/                 # Django REST API backend
│   ├── resume_analyzer/    # Main settings, routing, and configurations
│   ├── analyzer/           # App endpoints, models, viewsets, and migrations
│   │   ├── migrations/     # Database migration schema
│   │   ├── models.py       # Resume database models
│   │   ├── serializers.py  # Django REST serialization maps
│   │   ├── urls.py         # Endpoint routes
│   │   └── views.py        # Resume parsing & scoring logic
│   ├── resumes/            # Storage path for processed resumes
│   ├── requirements.txt    # Python dependencies list
│   └── manage.py           # Django command utility
│
└── README.md

Installation & Setup

Prerequisites

Ensure you have the following packages installed on your local development machine:

  • Node.js (v18 or higher)
  • Python (v3.10 or higher)
  • Git
  • Redis Server (running locally on port 6379 for Celery tasks)

Clone the Repository

git clone https://github.com/Muskankr/AI-Resume-Analyzer.git

Server Setup (Django)

We recommend installing dependencies inside a secure Python virtual environment:

# Navigate to server directory
cd server

# Initialize a virtual environment
python -m venv venv

# Activate the virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate

# Create local environment configuration from the example
# Windows:
copy .env.example .env
# macOS/Linux:
cp .env.example .env

# Install dependencies
pip install -r requirements.txt

# Execute database migrations
python manage.py migrate

# Spin up Django development server
python manage.py runserver

# In a separate terminal, activate the venv and start the Celery background worker:
# (Use --pool=solo on Windows to avoid process spawning issues)
celery -A resume_analyzer worker -l info --pool=solo

The API server starts on: http://127.0.0.1:8000/

Server Environment Variables

Variable Description Default / Placeholder
SECRET_KEY Secret key for Django cryptographic signing django-insecure-local-development-secret-key-change-me
DEBUG Set to True for development, False for production True
ALLOWED_HOSTS Comma-separated list of allowed host/domain names localhost,127.0.0.1,127.0.0.1:8000

Client Setup (React)

# Open a new terminal instance and navigate to client directory
cd client

# Create local environment configuration from the example
# Windows:
copy .env.example .env
# macOS/Linux:
cp .env.example .env

# Install packages
npm install

# Run the local Vite web server
npm run dev

The client application will run at: http://localhost:5173/

Client Environment Variables

Variable Description Default / Placeholder
VITE_BACKEND_URL The URL of the Django backend REST API server http://127.0.0.1:8000

API Reference

Parse Resume File

Validates and parses an uploaded resume, matches standard technical keywords, calculates scores, and returns suggestions.

  • Endpoint: /api/upload/
  • Method: POST
  • Payload Format: multipart/form-data

Parameters

Name Type Required Description
file binary (PDF) Yes The document to analyze

Sample Success JSON Response (200 OK)

{
  "score": 80,
  "skills_found": [
    "python",
    "django",
    "react",
    "git"
  ],
  "suggestions": [
    "Mention Django experience",
    "Add frontend skills like React"
  ]
}

Rate Limiting

The resume upload endpoint (POST /api/upload/) is throttled per client IP using DRF's SimpleRateThrottle.

Setting Default Description
RESUME_UPLOAD_RATE 10/hour Max requests per IP. Format: <n>/hour, <n>/day, <n>/min

To change the limit, set RESUME_UPLOAD_RATE in your server/.env:

RESUME_UPLOAD_RATE=20/hour

When the limit is exceeded, the API returns:

// HTTP 429 Too Many Requests
// Retry-After: <seconds>
{ "detail": "Request was throttled. Expected available in <N> seconds." }

Roadmap

  • DOCX Document Parsing — Integrate python-docx to support Word resume parser pipelines.
  • Dark Mode Toggle — Implement user-theme selections with CSS theme tokens persisted in localStorage.
  • Target Job Role Comparison — Match resume skill outputs directly against selectable target job roles.
  • Persistent User Dashboard — Save and render a timeline history of past scores using client-side indexing.
  • Upload Interactive States — Dash borders and overlay drop indicators to make file uploads feel extremely natural.

Contributing

We welcome contributions of all levels under the ECSoC'26 program!

📜 Please read our Code of Conduct before participating in this project. By contributing, you agree to abide by its guidelines.

  1. Fork the repository on GitHub.
  2. Clone your fork and create a checkout branch:
    git checkout -b feature/your-feature-name
  3. Commit your changes with standard semantic commit messages (e.g. feat: ..., fix: ...).
  4. Push changes to your fork and create a Pull Request (PR) targeting the upstream main branch.

Please review active issues before creating duplicates, and always link open issues to your Pull Request!


Code Owners

This repository uses a CODEOWNERS file to automatically request reviews from maintainers whenever a Pull Request is opened.

  • The file lives at .github/CODEOWNERS.
  • Currently, all files (*) are owned by @Muskankr.
  • When you open a PR, GitHub will automatically add the code owner as a reviewer.
  • As the project grows, ownership can be split by folder (e.g. /frontend/ → frontend maintainers, /backend/ → backend maintainers).

Contributors

Maintainer

  • Muskan Kumari (@Muskankr) — Project Creator & Lead Maintainer

Active Contributors Grid

A huge thanks to all the developers who have contributed code, fixed bugs, and improved documentation!

Contributors Avatars Grid
Show your support by leaving a ⭐ on this repository!

About

AI-powered Resume Analyzer with ATS scoring, skill extraction, and resume improvement suggestions.

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages