Help
resmd is a plain-text resume editor. You write in ResMarkup, pick a template, and export to PDF.
Quick Start
- Sign in — free, no credit card.
- Click New resume on the dashboard. A sample resume is pre-filled.
- Edit the left pane. The preview on the right updates as you type.
- Use the template picker in the preview pane to change the design.
- Click Export PDF in the toolbar when you're done.
ResMarkup Syntax
ResMarkup is a plain-text format for resumes. There's no fixed schema — you define your own sections and structure. Here's a full example:
# Bio Name: Alex Rivera Title: Software Engineer Email: alex@email.com Location: Berlin, Germany # Experience ## Engineer @ Stripe | 2022–Present | Remote - Built payment reconciliation service handling €2B/month - Reduced checkout API latency by 38% ## Engineer @ Vercel | 2020–2022 - Worked on edge runtime infrastructure # Skills Languages: TypeScript, Go, Rust Infra: Kubernetes, Terraform, AWS # Education ## B.Sc. Computer Science @ TU Berlin | 2016–2020
Sections
A # followed by any name creates a section. Call them whatever makes sense for you.
# Experience # Skills # Education # Projects # Side Quests
Entries
## creates an entry inside a section — a job, project, degree, etc. Use @ to separate role from organisation, and | to add date, location, or URL. All optional.
## Role @ Organization | Date | Location | URL ## Engineer @ Stripe | 2022–Present | Remote | https://stripe.com ## Contributor @ React | 2021 ## Side Project | 2023 | https://myproject.dev
Fields after | can appear in any order — the parser detects URLs, date ranges, and locations automatically.
Key-value pairs
Key: Value pairs render as a definition list. Mainly used in a Bio section for contact info, but work anywhere.
# Bio Name: Alex Rivera Title: Software Engineer Email: alex@email.com Phone: +49 000 000 0000 Location: Berlin, Germany GitHub: github.com/alexrivera
Name, Email, and Title are used to populate the resume header across all templates.
Bullet points
Lines starting with - become bullets. They nest under the nearest ## entry, or stand alone in a section (handy for skills).
# Skills - TypeScript, Go, Python - PostgreSQL, Redis, Kafka # Experience ## Engineer @ Acme | 2021–2023 - Shipped features used by 500K+ users - Cut infrastructure cost by 25%
Inline formatting
Works inside any line — bullets, paragraphs, key values, and entry headings.
| Syntax | Result | Example |
|---|---|---|
| *text* | Bold | *Reduced latency by 38%* |
| ~text~ | Italic | ~Open to remote roles~ |
| _text_ | Underline | _Key project_ |
| [text](url) | Link | [GitHub](https://github.com) |
| [Placeholder] | Reminder | [add metric here] |
Bracketed placeholders like [add metric here] show as highlights in the preview and trigger a warning before PDF export — a reminder to fill them in.
Directives
Lines starting with ! control PDF layout. They're invisible in the rendered output. Put them at the top of your document.
!font.size: 11 !line.height: 1.45 !margin.h: 50 !margin.v: 40 !entry.spacing: 7
| Directive | Unit | Default | What it does |
|---|---|---|---|
| !font.size | pt | 11 | Base font size |
| !line.height | ratio | 1.4 | Line spacing |
| !margin.h | pt | 50 | Left & right margins |
| !margin.v | pt | 40 | Top & bottom margins |
| !entry.spacing | pt | 8 | Gap between entries |
The Editor
Split-pane — source on the left, live preview on the right. Autosaves a couple of seconds after you stop typing; the toolbar shows when it last saved.
- Jump to source — double-click any word in the preview to jump to it in the editor.
- Resize panes — drag the divider. On mobile, use the Write / Preview tabs.
- Rename — click the title in the toolbar to edit inline.
Keyboard shortcuts
| Shortcut | Action |
|---|---|
| Ctrl+B | Toggle bold |
| Ctrl+I | Toggle italic |
| Ctrl+U | Toggle underline |
| Ctrl+Z | Undo |
| Ctrl+Shift+Z | Redo |
AI Features
Two tools: Enhance rewrites a selection in place, and Chat lets you have a back-and-forth about the whole resume.
Enhance
Highlight any text in the editor — a text box appears. Type an instruction and press Enter. The AI rewrites just that selection and inserts it directly. Hit Ctrl+Z to undo if you don't like it.
Some things to try:
- make this more concise
- add a metric
- use a stronger action verb
- rewrite for a management role
Chat
The chat panel has your full resume as context. Ask for feedback, request a rewrite of a section, or describe the role you're applying for and ask what's missing.
When the AI wants to change something in your resume, it sends an edit block — the exact text to replace and what to replace it with. You can accept or dismiss each one individually.
Some things to try:
- what's weak about my experience section?
- I'm applying for a staff role — what's missing?
- tighten up my bio
You can swap models using the dropdown in the chat panel header. The choice is saved locally.
Variants
A variant is a version of your resume. The typical workflow: keep one “master” with everything, then clone it per application to trim and tailor.
- Create — click New resume on the dashboard.
- Clone — use the overflow menu on any resume card.
- Delete — also in the overflow menu. Permanent, so export first if needed.
Templates
Templates change the visual design — layout, fonts, colors — without touching your content. Switch via the dropdown in the preview pane, or browse the template gallery.
| Template | Notes |
|---|---|
| Minimal | Clean, works for any field |
| Modern | Two-column layout |
| Technical | Compact, good for tech roles |
| Executive | Senior / leadership positions |
| Creative | Design and creative roles |
Exporting to PDF
Click Export PDF in the toolbar. The file downloads automatically.
If your resume has [bracketed placeholders], a warning appears first — you can still export, it's just a reminder.
If the content overflows a page, tweak the directives:
!font.size: 10 !margin.v: 32 !entry.spacing: 5
Publishing
Public resume sharing is coming soon. You'll be able to publish any variant to get a shareable URL at resmd.app/r/your-slug.
MCP / Automation
resmd exposes a Model Context Protocol server so AI agents and tools like Claude Code can programmatically create, edit, tailor, and export your resumes.
Setup
1. Generate an MCP key — open the dashboard, click your user menu (bottom-left), select MCP Keys, enter a name, and click Generate. Copy the key immediately — it is only shown once.
2. Clone and build the server from resmd-mcp:
git clone https://github.com/attahiruj/resmd-mcp cd resmd-mcp npm install && npm run build
3. Register with Claude Code — point it at the hosted app or your local instance:
# Hosted app claude mcp add resmd \ --env RESMD_API_URL=https://resmd.app \ --env RESMD_MCP_KEY=<your-mcp-key> \ -- node /path/to/resmd-mcp/dist/server.js # Local instance claude mcp add resmd \ --env RESMD_API_URL=http://localhost:3000 \ --env RESMD_MCP_KEY=<your-mcp-key> \ -- node /path/to/resmd-mcp/dist/server.js
To update the key, run claude mcp remove resmd first, then re-add it.
Available tools
| Tool | Description |
|---|---|
| list_resumes | List all your resumes |
| get_resume | Fetch a resume with full content |
| create_resume | Create a new resume |
| update_resume | Update content, title, or template |
| delete_resume | Delete a resume |
| clone_resume | Clone with a new title |
| tailor_resume | Clone + AI-tailor for a job description |
| chat_with_resume | Chat with AI about a resume |
| enhance_text | AI-rewrite a piece of resume text |
| import_resume | Import PDF / DOCX / TXT → resmarkup |
| export_pdf | Export resume as a base64 PDF |
| list_templates | List available templates |
Still stuck? Open a GitHub issue.