Skip to content

Repository files navigation

ResumeRadar

AI-powered resume analyzer that scores CVs against job descriptions and gives actionable improvement suggestions.

ResumeRadar is a production-shaped portfolio project: upload a resume PDF, paste a job description, and receive a structured match report with skill gaps, strengths, weaknesses, ATS guidance, and a searchable analysis history.

Product highlights

  • PDF upload with type and size validation
  • Groq inference with OpenAI gpt-oss-20b and strict structured output
  • Deterministic weighted scoring with a local narrative fallback
  • Provider, model, latency, and token telemetry for every analysis
  • Match score, category breakdown, skill gaps, and prioritized recommendations
  • Responsive dashboard, analysis history, filters, and built-in demo scenario
  • Saved job descriptions with UTF-8 text downloads from each report
  • Persistent profile defaults, settings, and an in-app help center
  • PostgreSQL persistence through Prisma
  • Swagger/OpenAPI docs and Docker Compose development stack

Screenshots

Overview

ResumeRadar overview dashboard

New analysis

ResumeRadar new analysis workflow

Analysis report

ResumeRadar AI analysis report

Recommendations and job description download

ResumeRadar recommendations and job description download

Stack

Layer Technology
Web Next.js 16, React 19, TypeScript, Tailwind CSS 4
API NestJS 11, Swagger, class-validator
AI Groq API, OpenAI gpt-oss-20b, strict JSON Schema
Data PostgreSQL 17, Prisma 6
Runtime pnpm workspaces, Docker Compose

Architecture

Next.js web
    |
    | multipart PDF + job description
    v
NestJS API -----> pdf-parse
    |                 |
    |                 v
    |            extracted text
    |
    +-----> deterministic score engine
    |             |
    |             +-- skills 45%
    |             +-- experience 30%
    |             +-- keywords 15%
    |             +-- ATS readability 10%
    |
    +-----> Groq API / openai-gpt-oss-20b
                  |
                  v
           strict JSON narrative
    |
    v
PostgreSQL / Prisma

Quick start

Docker

cp .env.example .env
docker compose up --build

Open:

  • Web app: http://localhost:3000
  • API: http://localhost:4000/api
  • Swagger: http://localhost:4000/api/docs

The app works in local fallback mode without GROQ_API_KEY. Add a key to .env to enable Groq inference. PDF text extraction and scoring remain server-side.

Local development

Requirements: Node.js 22+, pnpm 10+, Docker.

cp .env.example .env
docker compose up -d postgres
pnpm install
pnpm db:generate
pnpm db:migrate
pnpm db:seed
pnpm dev

Environment variables

Variable Required Default
DATABASE_URL Yes Local Docker PostgreSQL URL
GROQ_API_KEY No Local narrative fallback
GROQ_MODEL No openai/gpt-oss-20b
API_PORT No 4000
NEXT_PUBLIC_API_URL No http://localhost:4000/api

Verification

pnpm lint
pnpm test
pnpm build

Privacy behavior

The API reads the uploaded PDF in memory and extracts its text locally. When Groq is enabled, only the extracted text, target job description, and deterministic assessment are sent for narrative analysis. The database stores extracted resume text to support report history; production deployments should add authentication, retention controls, and encryption policies appropriate to their environment.

Repository description

AI-powered resume analyzer that scores CVs against job descriptions and gives actionable improvement suggestions.

About

AI-powered resume analyzer that scores CVs against job descriptions and gives actionable improvement suggestions.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages