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.
- PDF upload with type and size validation
- Groq inference with OpenAI
gpt-oss-20band 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
| 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 |
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
cp .env.example .env
docker compose up --buildOpen:
- 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.
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| 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 |
pnpm lint
pnpm test
pnpm buildThe 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.
AI-powered resume analyzer that scores CVs against job descriptions and gives actionable improvement suggestions.



