The open-source AI resume workbench.
The AI proposes edits in place; you accept or skip each one.
Magic Resume is an open-source AI resume workbench: the AI proposes edits in place and you accept or skip each one. MIT-licensed core, 19 templates, six modes (create, optimize, analyze, translate, interview, export), and multi-device cloud sync.
It pairs a real-time visual editor with multi-model AI — and goes one step further with a native MCP server that lets AI coding tools (Claude Code, Cursor, Windsurf) read and safely patch your resumes without ever guessing the data shape.
Same features either way. The difference is where your data lives and who supplies the AI.
| Self-hosted (this repo) | Cloud (magic-resume.cn) | |
|---|---|---|
| License | MIT, free forever | Free tier + paid plans |
| Account | Not required | Required |
| Data storage | Your browser's IndexedDB only | Encrypted cloud storage, exportable anytime |
| Multi-device sync | Not available | On by default |
| Version history | Local snapshots | Kept in the cloud, restorable |
| AI | Bring your own API key | Built in, works out of the box |
| Backend | No backend or database needed | Hosted for you |
| Templates | 19, identical | 19, identical |
Note
The self-hosted build runs entirely in your browser; resume data never leaves your machine. The cloud build syncs across devices by default, with encrypted transport and storage, and a full export available at any time.
Build — visual editing that just works
- Real-time preview — see every change the instant you type.
- 19 professional templates — ATS-friendly, with full color, font, and layout control.
- Deep customization — 22+ font styles, spacing, and layout controls.
- Version history — snapshot and restore any previous version.
- Sharing — share via a unique link with Viewer / Commenter / Editor permissions.
Analyze — Lighthouse-style resume health
- Overall score — a single, honest rating of your resume's impact.
- Detailed breakdown — keyword matching, actionability, and readability.
- Actionable fixes — specific, targeted suggestions, not vague advice.
Optimize — tailor to any job
- JD matching — AI reads a job description and rewrites content to fit.
- Bring your own model — OpenAI, Google Gemini, Anthropic Claude, DeepSeek, or any OpenAI-compatible API.
AI Lab — beyond editing
- Mock interviews — practice with AI feedback on your answers.
- One-click translation — translate a resume into any language, formatting preserved.
Privacy — your data stays yours
- Local-first — stored in IndexedDB by default, no account needed.
- Optional cloud sync — securely sync across devices only if you choose.
- Export anywhere — high-quality PDF or structured JSON.
Nineteen hand-crafted, ATS-friendly templates, each fully customizable (color, font, spacing, layout):
classic · azurill · bronzor · chikorita · ditto · gengar · orange-modern · clean-minimal · teal-professional · red-accent · golden-elegant · product-ops-focus · compact-cn-photo · executive-band · timeline-pro · skills-first · serif-minimal · slate-sidebar · cn-formal-photo
Magic Resume ships a native Model Context Protocol (MCP) server (@magic-resume/mcp) — a first-class integration for AI coding tools.
Configure it once with a personal access token, and your AI assistant can read and patch resumes safely, without touching the raw database:
npx -y @magic-resume/mcp config set --api-url "https://your-api.example.com/api" --pat "mr_pat_xxx"
claude mcp add magic-resume -- npx -y @magic-resume/mcp mcp| Tool | Description |
|---|---|
list_resumes |
List all resumes in your account |
get_resume |
Fetch a resume's full content |
get_resume_schema |
Get the JSON schema for validation |
get_resume_editing_guide |
AI-readable guide on how to edit resumes |
preview_resume_patch |
Preview a JSON Patch without applying it |
update_resume_content |
Apply a JSON Patch to update resume content |
Tip
The server is schema-aware and patch-based — AI tools make surgical edits rather than risky full rewrites.
| Layer | Technology |
|---|---|
| Monorepo | Turborepo, pnpm |
| Framework | Next.js 15 (App Router) |
| Language | TypeScript |
| AI / LLM | LangChain, LangGraph, Google GenAI, Anthropic |
| Auth | Clerk (cloud mode only) |
| Styling | Tailwind CSS 4 |
| UI | Radix UI, Lucide |
| Animation | Framer Motion, GSAP |
| State | Zustand |
| Storage | IndexedDB |
| Editor | Tiptap, Monaco |
| MCP | @modelcontextprotocol/sdk |
| Schema | Zod |
| i18n | i18next |
Magic Resume runs fully in the browser — no backend, no database, no account.
git clone https://github.com/Magic-Resume/Magic-Resume.git
cd Magic-Resume
cp apps/web/.env.example apps/web/.env.local # set NEXT_PUBLIC_APP_MODE=self-hosted
pnpm install
pnpm run devOpen http://localhost:3000 and start building.
Self-hosted mode needs nothing but the browser — set NEXT_PUBLIC_APP_MODE=self-hosted (or leave it unset) and all data persists in IndexedDB. The open-source self-hosted build sends no product analytics.
Cloud mode (auth, cloud sync, sharing) deploys in one click:
Tip
For cloud mode, set NEXT_PUBLIC_APP_MODE=cloud, NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, and CLERK_SECRET_KEY in your Vercel dashboard.
Environment variables
All variables live in apps/web/.env.local (copy from apps/web/.env.example). Values prefixed with NEXT_PUBLIC_ are inlined into the browser bundle — never put secrets behind that prefix.
| Variable | Required in | Default | Purpose |
|---|---|---|---|
NEXT_PUBLIC_APP_MODE |
both | auto | self-hosted or cloud. Auto-detected: cloud when NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY is set, else self-hosted. |
NEXT_PUBLIC_APP_URL |
both | https://magic-resume.cn |
Canonical base URL for OG tags / SEO. Set to your origin (e.g. http://localhost:3000 in dev). |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY |
cloud | — | Clerk publishable key (pk_...). |
CLERK_SECRET_KEY |
cloud | — | Clerk secret key (sk_...). |
NEXT_PUBLIC_CLOUD_API_URL |
cloud | http://localhost:3111 |
NestJS Core API — resumes, settings, sharing, PATs. |
BACKEND_URL |
AI features | http://localhost:8000 |
Agent server — interview, translate, AI optimize/analyze. |
self-hosted— pure browser. No Clerk, no Core API; onlyNEXT_PUBLIC_APP_URLmatters.cloud— requires the two Clerk keys plusNEXT_PUBLIC_CLOUD_API_URL; AI features additionally requireBACKEND_URL.
This repository is a Turborepo + pnpm monorepo.
| Package | Description |
|---|---|
apps/web |
Next.js frontend — editor, dashboard, AI Lab |
packages/mcp |
@magic-resume/mcp — stdio MCP server and CLI |
packages/resume-schema |
Shared Zod schemas, types, and sample data |
packages/resume-templates |
Template DSL, renderer, and registry |
pnpm install # install everything
pnpm run dev # start all workspaces
pnpm run lint # lint
pnpm run test # test
# target a single workspace
pnpm --filter @magic-resume/web dev
pnpm --filter @magic-resume/mcp buildContributions of every size are welcome — bug fixes, new templates, docs, translations, or features.
Please read the Contributing Guide for local setup, the branch workflow, and the enforced gitmoji + Conventional Commits convention. For bugs or ideas, feel free to file an issue first.
Copyright © 2026 Magic Resume Team · MIT licensed.
