Product Overview & Philosophy
Philosophy, deterministic ATS score engine, and zero-storage career privacy guarantees.
Quickstart Walkthrough
End-to-end workflow from PDF upload to sub-50ms vector PDF download.
System Execution Pipeline
Interactive execution flow across in-browser extraction, schema parsing, and compilation.
Product Overview & Philosophy
LumaCV is a high-performance, open-source resume engineering platform. It pairs the Typst Rust WASM vector typesetting engine with a deterministic ATS scoring model, multi-provider AI tailoring, and client-side zero-storage privacy guarantees.
Zero Hallucinations
Every AI rewrite is diffed against your original resume before it ever reaches you. Employers, job titles, dates, and universities are treated as immutable ground truth, the model can rephrase and reorganize, but it cannot invent.
Sub-50ms Typst Engine
Most resume builders render through a headless Chromium instance, slow, memory-heavy, and prone to layout drift. LumaCV compiles directly through Typst’s Rust engine instead, producing crisp single-page vector PDFs in 15–45ms.
Client-Side BYOK
Your API key never touches a database. It travels once, encrypted over TLS as a request header, is used for that single call, and is discarded, Gemini, OpenAI, Claude, and Groq are all supported.
4-Vector ATS Scoring
No black-box "AI vibe score." The match against a job description is computed from four weighted, inspectable vectors, Required Skills, Responsibilities, Preferred Skills, and Terminology, so you can see exactly why a number moved.
Quickstart Walkthrough
Generate an ATS-tailored, vector-typeset resume in four simple steps:
Upload Resume PDF & Paste Target Job Description
Open /builder. Drag-and-drop your existing resume PDF. Mozilla pdfjs-dist extracts text client-side in a Web Worker without uploading unparsed files to any server.
Verify Profile Data & Experience Details
Review parsed work experiences, education records, and skills taxonomy in Step 2. You can reorder sections, add missing achievements, and verify links.
AI Bullet Tailoring & ATS Gap Optimization
Choose Optimize (100% fact-preserving polish) or Tailor (aggressive JD alignment). The pipeline identifies missing keywords from the JD and refines bullet points while preserving 100% of your real employment facts.
Select From 52 Typst Templates & Export Vector PDF
Inspect side-by-side bullet diffs in Step 4. Switch between 52 architectural templates across 8 curated palettes. Export crisp vector PDFs or pure .typ code.
Typst automatically balances margins and font leading based on content density to ensure clean single-page outputs without awkward orphan lines.
Interactive Execution Architecture
LumaCV separates heavy vector typesetting and deterministic scoring into specialized runtime layers:
Mozilla pdfjs-dist runs locally in web workers to extract tokens and URLs.
Validates structure and uses jsonrepair for robust JSON syntax recovery.
Evaluates alignment against JD requirements, verbs, and taxonomy.
Gemini / OpenAI / Claude / Groq client keys transmitted via TLS headers.
Guarantees that job titles, employers, and degree dates remain unedited.
Sub-50ms vector compilation across 52 templates with zero rasterization.
4-Step Resume Studio Workflow
The resume builder UI is designed as a focused, linear 4-step wizard that ensures complete verification before export:
Step 1: Upload & Target JD
Extracts raw text from user-uploaded PDFs using in-browser Web Workers. Accepts target job descriptions and generates a baseline ATS keyword analysis.
Step 2: Experience & Details Editor
Provides an interactive editor to inspect, correct, and reorder extracted sections. Changes hydrate the client-side Zustand store with immediate localStorage persistence.
Step 3: AI Tailoring & Alignment
Applies the selected tailoring mode (Optimize or Tailor) to align bullet points with target role criteria while enforcing truth verification.
Step 4: Typesetting Studio & Diff Studio
Live Typst compilation preview, side-by-side bullet diff inspector, template selector (52 templates), color palette picker, and instant vector PDF / .typ download.
Authentication & Workspace Isolation
LumaCV uses server-side cookie authentication to preserve drafts, track revision histories, and prevent unauthorized access:
Row Level Security (RLS)
PostgreSQL policies enforce strict ownership: auth.uid() = user_id. No user can read or overwrite another user's resumes.
HTTP-Only Secure Cookies
Sessions are verified at the Edge via middleware.ts using encrypted, HTTP-only cookie headers.
Typst Vector Typesetting vs Headless Chromium
Most traditional resume builders rely on headless browsers (Puppeteer, Playwright) or heavy LaTeX distributions (TeX Live). LumaCV is built around Typst, a modern, Rust-based typesetting system.
| Typesetting Engine | Average Compile Time | Output Format | Runtime Footprint | Page Break Fidelity |
|---|---|---|---|---|
| Typst (LumaCV) | 15ms – 45ms | Native Vector PDF | ~35 MB binary | Mathematical Exact |
| Puppeteer / Chromium | 1,800ms – 4,500ms | Rasterized Web Print | ~450 MB Chromium | Unpredictable CSS breaks |
| pdflatex / XeLaTeX | 3,000ms – 8,000ms | Vector PDF | ~3.5 GB TeX Live | Mathematical Exact |
#let resume(title: "", author: (), body) = {
set document(title: title, author: author.name)
set page(paper: "a4", margin: (x: 1.5cm, y: 1.2cm))
set text(font: "Liberation Sans", size: 10pt)
body
}Template Catalog & Architecture (52 Systems)
LumaCV provides 52 distinct Typst template systems organized into 5 professional archetypes. Explore them in the Templates Gallery:
Linear typographic hierarchies designed for automated enterprise applicant tracking systems (`Apex`, `Catalyst`, `Stratum`, `Sentinel`, `Clearance`).
Clean, high-density layouts favored by software engineers, platform architects, and tech founders (`Vector`, `Platform`, `Gridline`, `Terminal`).
Authoritative serif and mixed hierarchies designed for directors, consultants, and senior leaders (`Heritage`, `Executive`, `Advisory`, `Meridian`).
Design-forward typography, asymmetric balance, and clean editorial whitespace (`Boutique`, `Editorial`, `Atelier`, `Nordic`).
Multi-page scholarly formats accommodating extensive publications, research grants, patents, and advisory boards (`Scholar`, `Discovery`).
AI Pipeline & Client-Side BYOK Setup
LumaCV supports community-tier models out of the box and empowers candidates to connect their personal API keys from Google, OpenAI, Anthropic, or Groq for unlimited high-throughput tailoring.
Google GeminiFastest / Recommended
Native support for JSON structured outputs. Recommended for high reliability and zero rate limiting.
Supported Models & Latency Benchmarks
Client Security Architecture
- Storage: Stored strictly in browser encrypted
localStorageunder keyluma_byok_keys. - Transmission: Transmitted exclusively as TLS headers (
x-gemini-api-key) during completion calls. - Zero Retention: Never saved to PostgreSQL, Supabase Auth tables, or application server logs.
Deterministic ATS Scoring Formula
LumaCV evaluates alignment between your resume and target job descriptions using a deterministic 4-vector algorithm defined in app/api/v1/resume/score/route.ts:
Measures exact and fuzzy matches for primary technical languages, libraries, and core qualifications specified in the JD requirements section.
Evaluates executive verbs (e.g., spearheaded, architected, orchestrated) and presence of measurable metrics (revenue, latency, scale).
Scans for secondary qualifications such as agile frameworks, CI/CD pipelines, and cloud certifications.
Ensures appropriate acronyms (e.g. SOC2, HIPAA, Kubernetes, Microservices) match standard industry taxonomy.
Fact-Checking & Integrity Verification
Standard AI chatbots frequently hallucinate certifications, employers, or technologies you never used. LumaCV enforces strict anti-hallucination guardrails implemented in lib/fact-validator.ts:
- Immutable Ground Truth: Extracted company names, job titles, dates of employment, and university degrees cannot be modified or invented by the AI pipeline.
- Bullet Diff Studio: In Step 4, candidates can inspect side-by-side diffs of original vs. tailored bullets and selectively revert any individual line with a single click.
- Truth Verification Algorithm: Any newly suggested bullet point that introduces ungrounded credentials not substantiated by the source document is flagged or pruned.
Data Handling & Privacy Standards
We treat candidate career histories as strictly confidential data:
Candidate resumes, drafts, and job descriptions are never used to train public or proprietary AI models.
Every cloud-saved resume is locked behind PostgreSQL Row Level Security accessible only to the authenticated session owner.
REST API Reference & Endpoints
LumaCV exposes clean, documented REST route handlers for programmatic resume parsing, tailoring, scoring, and vector compilation:
/api/v1/resume/parseAccepts raw text or extracted PDF tokens and structures them into the verified LumaCV resume JSON schema.
Request Headers
| Header | Required | Description |
|---|---|---|
| Content-Type | Yes | application/json |
| x-gemini-api-key | Optional | Personal Google API Key (optional BYOK) |
| x-openai-api-key | Optional | Personal OpenAI API Key (optional BYOK) |
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| extractedText | string | Yes | Raw plaintext extracted client-side from the candidate PDF (min. 10 characters). |
Sample Request (CURL)
curl -X POST "https://your-domain.com/api/v1/resume/parse" \
-H "Content-Type: application/json" \
-H "x-gemini-api-key: YOUR_GEMINI_API_KEY" \
-d '{ ...payload }'Sample Response (200 OK)
{
"personalInfo": {
"name": "Jane Doe",
"email": "jane@example.com",
"title": "Principal Distributed Systems Architect"
},
"experience": [
{
"company": "Tech Corp",
"title": "Staff Engineer",
"dates": "2021, Present",
"bullets": [
"Architected real-time streaming pipeline reducing event latency by 72%."
]
}
]
}Tech Stack & Dependency Audit
LumaCV is built with modern, battle-tested technologies selected for performance, type safety, and minimal bundle size:
| Package / Integration | Version | Role in LumaCV |
|---|---|---|
| Next.js (App Router) | 14.2.x | Core web framework, serverless route handlers, and SSR streaming. |
| TypeScript | 5.x | Full end-to-end type safety across schemas, stores, and API payloads. |
| Typst Native CLI | 0.11.x | Native Rust compiler generating sub-50ms vector PDFs. |
| Tailwind CSS | 3.4.x | Semantic dark/light design tokens and typography styling. |
| Zustand | 4.5.x | Reactive client store with persistent local storage hydration guards. |
| pdfjs-dist | 4.10.x | Client-side PDF text and hyperlink extraction via web worker. |
Environment Variables & Configuration
Configure the following variables in your .env.local file:
| Variable | Required | Purpose |
|---|---|---|
| GEMINI_API_KEY | Yes* | Server-side fallback API key for Google Gemini (Flash / Flash-Lite). |
| GROQ_API_KEY | Yes* | Server-side secondary failover key for Groq Cloud (Qwen / Llama). |
| NEXT_PUBLIC_SUPABASE_URL | Optional | Supabase project URL for cloud authentication & database persistence. |
| NEXT_PUBLIC_SUPABASE_ANON_KEY | Optional | Supabase anonymous public key. |
Docker & Self-Hosting Guide
Run LumaCV fully isolated in your private infrastructure with pre-installed Typst binary:
version: '3.8'
services:
lumacv:
image: ghcr.io/sahilbnsll/lumacv:latest
container_name: lumacv-app
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- GEMINI_API_KEY=${GEMINI_API_KEY}
- GROQ_API_KEY=${GROQ_API_KEY}
- NEXT_PUBLIC_SUPABASE_URL=${NEXT_PUBLIC_SUPABASE_URL}
- NEXT_PUBLIC_SUPABASE_ANON_KEY=${NEXT_PUBLIC_SUPABASE_ANON_KEY}Start the service using Docker Compose:
docker-compose up -d
Keyboard Shortcuts Reference
Speed up your resume engineering workflow with built-in hotkeys:
Production Deployment Guide
LumaCV is optimized for one-click serverless deployment on Vercel:
- Native Typst Execution: The serverless compiler automatically provisions the platform-specific Typst binary in Node.js serverless functions.
- Timeout Buffering: Long-running AI endpoints (
/api/v1/resume/parse,/api/v1/resume/tailor) are configured withmaxDuration = 60. - Edge Compatibility: Real-time keyword scoring (
/api/v1/resume/score) executes in under 10ms.
Troubleshooting & Common Questions
If your PDF was created via a flat image scanner or is password-protected, text chunks cannot be extracted client-side. You can either export a fresh text-selectable PDF or skip straight to Step 2 to type your details into the structured fields manually.
The free community quota enforces per-IP rate limits to prevent automated abuse. To bypass all platform rate limits, configure your own free personal API key in Settings (BYOK).
Install Typst on your machine (brew install typst on macOS, winget install Typst.Typst on Windows), then run typst compile resume.typ.
Changelog & Version History
All notable updates, engine speedups, model integrations, and security hardening are documented here chronologically:
Modern Documentation Hub, ⌘K Command Palette & REST API Explorer
Major release introducing a 3-column documentation architecture, instant Spotlight search, interactive API documentation, and hardened data normalization against stringified object payloads.
- Redesigned documentation UI with 3-column layout, sticky category navigation, and right-hand ScrollSpy "On this page" TOC.
- Added universal Spotlight Command Palette (⌘K / /) with fast fuzzy search across all topics, models, and API endpoints.
- Shipped interactive REST API Explorer for /api/v1/resume/parse, /tailor, /score, and /compile with cURL, TypeScript, and Python snippets.
- Added interactive BYOK model selector with real-time latency benchmarks for Gemini 2.5, GPT-4o, Claude 3.5, and Groq LPUs.
- Eliminated "[object Object]" keyword leakage in normalize-jd.ts, ATS score calculation, and tailoring summaries.
- Implemented defensive store rehydration guards in lib/store.ts to auto-purge corrupted persisted scores.
Deterministic 4-Vector ATS Scoring Engine & Bullet Diff Studio
Introduced mathematical ATS alignment scoring and side-by-side bullet diffing to give candidates granular control over AI modifications.
- Deterministic 4-vector scoring: Required Skills (40%), Responsibilities (25%), Preferred Skills (20%), and Terminology (15%).
- Side-by-side Bullet Diff Studio in Step 4 allowing 1-click single-line reversion of any tailored bullet.
- Real-time ATS alignment gauge with categorized keyword gap feedback (Missing, Partial, Matched).
- Ground-truth validation guardrails ensuring AI models cannot hallucinate employer names, job titles, or dates of employment.
Multi-Provider Client-Side BYOK (Bring Your Own Key)
Enabled candidates to bring their personal API keys with zero server-side storage and instant multi-model switching.
- Multi-provider support: Google Gemini 2.5 (Flash / Pro), OpenAI GPT-4o, Anthropic Claude 3.5 Sonnet, and Groq LPUs.
- Client-side BYOK security: Keys are stored exclusively in browser localStorage (luma_byok_keys) and sent via TLS headers.
- Zero database persistence or retention of candidate API credentials.
- Optimized token streaming and payload compression for long-context job descriptions.
Typst Rust WASM Engine Migration & 52 Architectural Templates
Replaced headless Chromium (Puppeteer) with the Rust-based Typst engine, slashing compile times from 3,500ms down to sub-50ms.
- Typst compilation latency reduced to 15ms–45ms with 100% vector fidelity and mathematical page-break fitting.
- Eliminated 450MB Puppeteer/Chromium dependency overhead in serverless runtimes.
- Shipped 52 architectural Typst templates across 5 professional archetypes (ATS, Modern, Executive, Creative, Academic).
- Interactive Color Palette selector with 8 curated color schemes matching typographic hierarchies.
- Direct export of raw .typ source files for local command-line compilation.
In-Browser PDF Parsing & Zod Schema Recovery
Client-side PDF text extraction in Web Workers with resilient JSON recovery for complex resumes.
- Client-side PDF extraction powered by Mozilla pdfjs-dist Web Worker, preserving privacy before parsing.
- Integrated jsonrepair for robust JSON syntax recovery on malformed LLM responses.
- Complete Zod schema validation across all resume data layers.
Open Source Release & PostgreSQL Workspace Isolation
Initial open-source release with Supabase Row Level Security (RLS) and dark/light design system tokens.
- PostgreSQL Row Level Security (RLS) enforcing strict user workspace isolation.
- Cookie-based SSR session management with @supabase/ssr and Edge middleware.
- Released under permissive MIT License for community contribution and self-hosting.
License & Open-Source Terms
LumaCV is open-source software licensed under the MIT License:
MIT License
Copyright (c) 2026 Sahil Bansal & LumaCV Contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.