A private, local-first CV builder with on-device AI. Your career data never leaves your machine — no account, no upload, no server.
Try it → · Architecture · Contributing · AGPL-3.0
I'm a software engineer. For years I've applied for jobs with one carefully-built resume — clean, ATS-parseable, never once bounced by an applicant-tracking robot. But every tool I used to maintain it wanted the same thing in return: an account, an upload, my work history sitting on someone else's server, behind a paywall when I wanted a PDF.
That's backwards. Your resume is the most personal professional document you have. It should be a file you own — editable anywhere, private by default, yours forever.
So I built HireLoom: the resume tool I actually wanted. The kind that runs entirely in your browser, uses AI that lives on your device, and exports the same parse-clean PDF that's quietly passed every ATS I've thrown it at.
🔒 Private by architecture. Everything — your data, the AI, the PDF rendering — runs client-side. Resumes live in your browser's IndexedDB. There is no backend to leak, sell, or shut down. Back your data up to a JSON file and take it anywhere.
🤖 AI that never phones home. HireLoom uses Chrome's built-in AI (Gemini Nano) to improve bullets, draft summaries, mine skills from your experience, tailor your CV to a job, and even chat with your resume — all on your machine. No key, no cloud, no telemetry. Don't have on-device AI? Bring your own Gemini key (stored only in your browser) and it works in any browser. The engine is pluggable — Anthropic and others are a single adapter away.
🎯 ATS-smart, for real. A deterministic, on-device keyword match scores your CV against any job post and shows exactly what's missing — then one click tailors your summary and projects the score lift. The PDF export is a true text layout (not a screenshot): selectable, parse-safe, the same recipe behind a resume that's gone years with zero ATS rejections.
✍️ A genuinely nice editor. A block-based canvas with inline editing, drag-to-reorder, live preview, and real templates — single column, two-column (you choose the split), header band.
| Editor | Block canvas, inline editing, reorder, live preview, zoom |
| Templates | Single / two-column / header-band layouts · fonts · density · accent color |
| AI (on-device or your key) | Inline ✨ improve/shorten/expand/grammar · summary · skills · cover letter · CV chat · tailor-to-JD |
| ATS | Deterministic keyword match + gap analysis + score-lift tailoring |
| Import | Any resume PDF (AI-structured) · LinkedIn "Save to PDF" · JSON Resume |
| Export | ATS-safe PDF (embedded fonts) · JSON Resume |
| Data | 100% local (IndexedDB) · one-click backup/restore · installable offline PWA |
Requires Node 22+ (pnpm 11 needs Node ≥22.13) and pnpm.
pnpm install
pnpm dev # → http://localhost:3000pnpm build # production build
pnpm test # vitest
pnpm lint # eslint
pnpm format # prettier + eslint --fixThe AI features use Chrome's built-in Prompt API (Gemini Nano). To enable it locally in Chrome 128+:
chrome://flags/#prompt-api-for-gemini-nano→ Enabledchrome://flags/#optimization-guide-on-device-model→ Enabled BypassPerfRequirement- Relaunch Chrome.
chrome://components→ Optimization Guide On Device Model → Check for update (downloads ~2–4 GB once).
No on-device AI (other browsers, or don't want the download)? Open the Assistant tab and click the engine name (⚙) in its header to switch to Gemini (your key) — stored only in your browser. Everything non-AI (editing, ATS match, PDF/JSON export, JSON/LinkedIn import) works with no AI at all.
TanStack Start (React 19 · Vite) · TanStack Router & Query · Dexie/IndexedDB · Tailwind CSS v4 · Zod · pdfmake · pdf.js · Vitest.
See ARCHITECTURE.md for the design: a declarative block model over the JSON Resume schema and a pluggable AI engine.
Private by default. Your resume never leaves your device — period — unless you opt into the cloud AI engine with your own key, in which case your prompts go from your browser straight to your provider (never through us; there is no "us" server). No accounts. The only thing measured is anonymous, cookie-less page views (Vercel Analytics) — visit counts and referrers, never your resume content or any personal data.
AGPL-3.0-only — free and open. Run a modified version as a service, and you must share its source.