Help

resmd is a plain-text resume editor. You write in ResMarkup, pick a template, and export to PDF.

Quick Start

  1. Sign in — free, no credit card.
  2. Click New resume on the dashboard. A sample resume is pre-filled.
  3. Edit the left pane. The preview on the right updates as you type.
  4. Use the template picker in the preview pane to change the design.
  5. 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.

SyntaxResultExample
*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
DirectiveUnitDefaultWhat it does
!font.sizept11Base font size
!line.heightratio1.4Line spacing
!margin.hpt50Left & right margins
!margin.vpt40Top & bottom margins
!entry.spacingpt8Gap 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

ShortcutAction
Ctrl+BToggle bold
Ctrl+IToggle italic
Ctrl+UToggle underline
Ctrl+ZUndo
Ctrl+Shift+ZRedo

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.

TemplateNotes
MinimalClean, works for any field
ModernTwo-column layout
TechnicalCompact, good for tech roles
ExecutiveSenior / leadership positions
CreativeDesign 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

ToolDescription
list_resumesList all your resumes
get_resumeFetch a resume with full content
create_resumeCreate a new resume
update_resumeUpdate content, title, or template
delete_resumeDelete a resume
clone_resumeClone with a new title
tailor_resumeClone + AI-tailor for a job description
chat_with_resumeChat with AI about a resume
enhance_textAI-rewrite a piece of resume text
import_resumeImport PDF / DOCX / TXT → resmarkup
export_pdfExport resume as a base64 PDF
list_templatesList available templates

Still stuck? Open a GitHub issue.