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
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 sum —
score === 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 invariant —
summaryScore∈ [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
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."
