Local-first, ATS-aware resume builder with a full visual editor, industry-curated templates, LaTeX PDF generation, a job tracker, and an explainable rewrite pipeline powered by a pluggable LLM (local Ollama, AWS Bedrock, or a built-in mock).
Beta → resumeforge-web.vercel.app
Most resume AIs are black boxes that rewrite your CV into something you don't recognise. ResumeForge runs the rewrite locally through Ollama, shows you every edit with justification, compiles a real LaTeX PDF, and scores you against the ATS platforms (Workday / Greenhouse / Lever / Taleo / iCIMS / SmartRecruiters / BambooHR) the employer is actually using.
flowchart LR
U[Resume +<br/>Job Description] --> W[Next.js 14<br/>App Router]
W -->|SSE stream| A[FastAPI<br/>/api/v1/runs]
A --> P[Parser<br/>+ Scoring]
A --> L[LangGraph<br/>rewrite pipeline]
L --> O[LLM provider<br/>Ollama · Bedrock · mock]
A --> T[tectonic<br/>LaTeX → PDF]
A -.->|optional| R[Redis +<br/>Celery]
A --> S[(SQLite / Postgres)]
T --> ART[Artifacts<br/>PDF · TEX · ZIP]
Everything the model does is observable: you see the plan, the per-section diff, and the compiled PDF in real time over SSE.
| Route | Status | Description |
|---|---|---|
/ |
✅ live | Marketing - animated background, hero input, industry filter, template showcase, ATS badges |
/new |
✅ live | Core builder - paste/upload resume, pick template, select industry + colour, run analysis |
/transferring |
✅ live | Animated progress screen while backend analyses |
/editor |
✅ live | Full visual resume editor - drag-and-drop sections, real-time preview, export |
/templates |
✅ live | Gallery - filter by industry, ATS score, layout |
/tracker |
✅ live | Job Tracker - Kanban board (saved → applied → interview → offer), reminders, per-job match score |
/checker |
✅ live | Resume Checker - multi-criteria audit + keyword match report |
/cover-letter |
✅ live | Truthful, JD-aware cover-letter generation |
/import |
✅ live | Import a PDF/DOCX resume or pasted LinkedIn profile into the editor |
/dashboard |
✅ live | Run history, fit scores, artifact downloads + quick links |
/fit-analyzer |
✅ live | JD ↔ resume alignment scorer (overall + per-dimension + keyword match) |
/pricing |
✅ live | Pricing tiers |
/admin/deployment |
✅ live | Health dashboard - API, LLM provider, Ollama, LaTeX, filesystem, call stats |
- AnimatedBackground - 4-layer canvas: Gemini hero image → animated mesh gradient → 80-particle canvas (proximity lines, 40 fps) → parallax ghost resume cards (framer-motion mouse tracking).
- IndustryFilterBar - 10 industry pills · role typeahead · ATS platform dropdown · experience slider · strict-ATS toggle.
- TemplatePicker - Visual grid with CSS mockup previews · colour swatches · ATS score badges · industry filtering.
- ResumeHeroInput - Dual-pane textarea (resume + JD) · drag-and-drop file upload (
.pdf/.docx/.txt/.md). - VisualEditor - Drag-and-drop sections, inline editing, print/export.
| Endpoint | Status | Purpose |
|---|---|---|
GET /api/v1/health |
✅ | Basic health + dependency checks |
POST /api/v1/runs/analyze |
✅ | Sync parse + score against JD |
POST /api/v1/runs/{id}/render |
✅ | LaTeX → PDF via tectonic, returns artifact URLs |
GET /api/v1/runs/{id}/artifacts/{aid}/download |
✅ | Stream PDF / TEX / ZIP bytes |
GET /api/v1/runs/{id}/stream |
✅ | SSE - async LangGraph rewrite pipeline |
POST /api/v1/assistant/chat |
✅ | Redis-backed chat history |
GET /api/v1/settings |
✅ | User preferences |
GET/POST /api/v1/jobs |
✅ | Job Tracker board + CRUD (Teal-style Kanban) |
POST /api/v1/jobs/{id}/move |
✅ | Move a card between stages |
POST /api/v1/jobs/match-score |
✅ | Live resume↔JD match score (LLM-free, fast) |
POST /api/v1/checker/analyze |
✅ | Resume Checker — Rezi/Jobscan-style audit + keyword match |
POST /api/v1/assistant/cover-letter |
✅ | Truthful, JD-aware cover letter |
POST /api/v1/import/resume · /import/linkedin |
✅ | Import PDF/DOCX or pasted LinkedIn profile |
POST /api/v1/export/docx |
✅ | Editable, ATS-safe Word export |
GET /api/v1/health/llm |
✅ | LLM provider + call observability |
LLM provider: all model calls route through a factory — set LLM_PROVIDER to
ollama (local, default), groq (hosted, free, OpenAI-compatible — great for cloud
demos), bedrock (AWS Converse; any Nova/Claude/Llama via BEDROCK_MODEL_ID), or
mock (deterministic, no keys). With LLM_FALLBACK_TO_MOCK=true a provider error
degrades to mock instead of failing. See docs/CREDENTIALS.md.
| Key | UI ID | ATS score | For |
|---|---|---|---|
ats_classic_single_column |
forge-classic | 99% | Maximum ATS compatibility |
modern_minimal_single_column |
forge-minimal | 97% | Typography-first |
technical_compact |
forge-tech | 96% | Skills-first, dense - engineers |
academic_cv |
forge-research | 95% | Publications / education prominent |
consulting_clean |
forge-classic variant | 94% | Consulting bullet depth |
executive_bold |
forge-executive | 92% | Large header, ruled separators |
two_column_split |
forge-two-column | 88% | Experience left + skills sidebar |
creative_sidebar |
forge-creative | 74% | Design / UX / marketing |
apps/
api/ FastAPI - parsers, scoring, LLM, LaTeX, runs, assistant, auth, SSE
app/api/routes/ health, settings, prompts, runs, assistant, auth, streaming,
jobs, checker, export, imports
app/core/ config, database (SQLite default / Postgres)
app/schemas/ Pydantic contracts
app/services/ run_service, llm_factory + llm_base, ollama/bedrock/mock providers,
cover_letter, resume_checker, docx_export, job_service, tracing,
redis, session, celery, langgraph, evaluator, s3, sse
evals/ regression-gated eval harness (relevance / discrimination / grounding)
tests/ pytest + fakeredis async fixtures
web/ Next.js 14 App Router + server proxy → backend
app/(marketing)/ Landing
app/(main)/ Shell - /new · /editor · /templates · /tracker · /checker ·
/cover-letter · /import · /dashboard · /settings
lib/templates.ts 8 templates × 10 industries × 6 colour schemes + ATS metadata
extension/ MV3 Chrome extension - 1-click JD capture into the tracker
packages/
shared-types/ Zod schemas + TS contracts
prompt-library/ YAML prompt packs with inheritance
latex-templates/ 8 × .tex.j2 Jinja2
scoring-engine/ Synonym ontology maps
docs/ All project docs live here:
ARCHITECTURE.md End-to-end workflows + file map
BEDROCK_SETUP.md · CREDENTIALS.md · EVAL_HARNESS.md · DEPLOYMENT.md · VERCEL_DEPLOYMENT.md
LOCAL_SETUP.md · TESTING.md · PROMPT_LIBRARY.md · GEMINI_IMAGE_PROMPTS.md
aws-architecture.md
Dockerfile.api Python + tectonic (pinned v0.15.0 musl-static)
Dockerfile.web Next.js production image
docker-compose.yml Redis + Ollama + API + Celery worker + optional web
render.yaml Render Blueprint (API + 5 GB disk)
.github/workflows/ CI - backend pytest + eval gate, web typecheck + build
# Run the stack locally
docker compose up
# → API on :8000, Ollama on :11434, Web on :3000Or piece-by-piece:
# API
cd apps/api && pip install -r requirements.txt && uvicorn app.main:app --reload
# Web (npm workspaces — install from the repo root)
npm install && npm run dev -w apps/webYou need: Python 3.11+, Node 20+, and Docker (for tectonic). For the LLM, pick a
provider via LLM_PROVIDER: ollama (local, default), bedrock (AWS — see
docs/BEDROCK_SETUP.md), or mock (deterministic, needs no
keys or model — handy for CI and quick demos). Required keys per provider are listed
in docs/CREDENTIALS.md.
- Backend → Render: push, then create a Blueprint from
render.yaml(Docker image bundles tectonic for real PDF). Comes up onLLM_PROVIDER=mockwith zero secrets. - Frontend → Vercel: deploy
apps/web(Root Directoryapps/web) and setNEXT_PUBLIC_API_BASE_URLto the backend URL.
- Job Tracker (Teal-style Kanban) with stages, reminders, notes, and per-job match score
- Live ATS match score in the visual editor (updates as you edit)
- AWS Bedrock LLM provider (Converse API) + mock provider, alongside local Ollama
- Cover-letter generation (truthful, JD-aware) — API + UI
- Browser extension: 1-click JD capture from job boards into the tracker (
apps/extension) - Resume import (PDF/DOCX) + simulated LinkedIn import → visual editor
- Eval harness (regression-gated) + LLM call tracing + graceful degradation
- Resume Checker (Rezi/Jobscan-style multi-criteria audit + keyword report)
- Editable DOCX export (ATS-safe single column)
- GitHub Actions CI (backend pytest + eval gate, web typecheck + build)
- Fit-analyzer: JD ↔ resume alignment scorer (overall + per-dimension + keyword match)
- Admin deployment health-check dashboard (
/admin/deployment) - Improve data-science / academic scoring discrimination (see
docs/EVAL_HARNESS.md) - AWS CDK stack (VPC, ECS Fargate + ALB, S3, ElastiCache Redis, Bedrock IAM) +
deploy.sh