CVio

CVio — AI Resume Builder — Avnish Yadav

An AI-powered resume builder that helps job seekers craft standout CVs — with ATS scoring, GPT-4o optimization, role-based tailoring, LinkedIn comparison, and PDF/DOCX export.

← Back to Projects

Overview

CVio solves a common pain point for job seekers: resumes that look good to humans but fail Applicant Tracking Systems (ATS). The platform combines document parsing, AI-powered rewriting, ATS scoring, role-specific tailoring, personal branding analysis, and LinkedIn consistency checking into a single cohesive workflow.

"Most resume tools give you a single ATS score and call it done. CVio gives you a weighted 6-category breakdown, tells you exactly what to fix, and rewrites it for you — without inventing facts."

Key Features

Core Workflow

  • Resume Upload & Parsing — Upload PDF or DOCX (up to 10 MB); GPT-4o extracts structured data automatically
  • AI Optimization — Rewrites bullets with strong action verbs and quantified achievements; never fabricates facts
  • ATS Scoring — Weighted 6-category breakdown with actionable suggestions
  • Role-Based Tailoring — Optimizes for Software Developer, UI/UX Designer, Product Manager, HR, or Marketing

Advanced Features

  • Personal Branding Analysis — Tone detection, UVP identification, headline and career narrative suggestions
  • LinkedIn Comparison — Surfaces inconsistencies between resume and LinkedIn; supports selective field import
  • Resume Builder — Inline editor with three templates (Notion, Apple, ATS-Friendly) and live preview
  • Version History — Every save creates a versioned snapshot; full history retained and browsable

Tech Stack

Frontend & Framework

  • Next.js 14 — App Router, TypeScript, Server Components
  • Tailwind CSS — Glassmorphism UI design language
  • Framer Motion — Animations on section wrappers and cards

Backend & Services

  • OpenAI GPT-4o — Parsing, optimization, branding, LinkedIn comparison
  • Firebase Auth + Firestore — Authentication and versioned resume storage
  • Puppeteer — Server-side PDF rendering with visual fidelity
  • docx library — DOCX export
Next.js 14 TypeScript GPT-4o Firebase Tailwind CSS Puppeteer Framer Motion Jest fast-check Vercel

Architecture

All server logic lives in Next.js API routes — no separate backend process. Each route is stateless, receiving all necessary data in the request body and validating Firebase ID tokens via a withAuth middleware on every protected endpoint.

Browser (Next.js App Router)
│
▼
Next.js API Routes
├── Parser          (pdf-parse / mammoth → GPT-4o)
├── AI_Optimizer    (GPT-4o, anti-hallucination prompt)
├── ATS_Scorer      (pure deterministic function)
├── Role_Optimizer  (GPT-4o + ROLE_CONVENTIONS config)
├── Branding_Analyzer (GPT-4o)
├── LinkedIn_Comparator (GPT-4o)
├── Exporter        (Puppeteer / docx)
├── Auth_Service    (Firebase Admin SDK)
└── Version_Store   (Firestore sub-collections)

Key Design Decisions

  • Pure domain modules — Parser, ATS_Scorer, and other services are plain TypeScript with no Next.js dependency, making them independently testable
  • Single ResumeData type — One shared type flows through every service, ensuring type safety across the entire pipeline
  • Firestore sub-collections — Version history stored per resume; querying one user's data never scans another's
  • Puppeteer PDF fidelity — Renders the same HTML template shown in the live preview, guaranteeing what you see is what you export

What Makes CVio Different

Anti-Hallucination AI

The optimization system prompt explicitly forbids GPT-4o from changing employer names, job titles, dates, or credentials. This is a hard constraint enforced at the prompt level — not a suggestion.

Deterministic ATS Scoring

The ATS scorer is a pure function with no AI dependency. The same resume always produces the same score — making it auditable, reproducible, and fully testable with property-based tests.

Role-Specific Conventions

Each of the five supported roles has a curated keyword list, tone descriptor, and preferred section ordering baked into the prompt — going beyond generic "optimize for this role" instructions.

LinkedIn Selective Import

Users can cherry-pick which LinkedIn fields to import rather than doing an all-or-nothing sync. The import function is pure — it never mutates the original resume data.

Testing Strategy

CVio uses a dual testing strategy: unit tests for known examples and integration points, and property-based tests for universal invariants. 27 formal correctness properties are defined and validated with fast-check.

Selected Correctness Properties

  • ATS score weighted sumscore === sum(breakdown categories) and score ∈ [0, 100]
  • AI Optimizer preserves facts — No new employer names, titles, or dates introduced
  • AI Optimizer error fallback — Original data returned unchanged on OpenAI failure
  • Branding schema invariantsummaryScore ∈ [1,10], tone is valid enum, arrays have ≥1 element
  • LinkedIn selective import — Only selected fields change; all others are identical to original
  • Version number monotonicity — Each save produces a strictly higher versionNumber
Jest ts-jest fast-check PBT Firebase Emulator 27 Properties

CI/CD & Deployment

Pipeline

GitHub Actions runs the full test suite on every push and PR. On merge to main, the CD job deploys to Vercel production via the Vercel CLI. SKIP_PUPPETEER=true bypasses Chromium-dependent tests in CI.

Hosting

Primary deployment on Vercel with zero-config Next.js builds. Firebase App Hosting as an alternative target with auto-scaling (0–10 instances, 100 concurrent requests, 512 MiB memory).

"Built spec-first using a requirements → design → tasks workflow with Kiro. Every feature was formally specified with correctness properties before a single line of implementation was written."