Self-hosted · Open source · REST API

A polished resume for every job.

Keep one profile and turn it into beautiful, professional PDF resumes — then connect an AI agent, n8n, or Zapier to tailor each one to the job you want.

Spin up the full app — API + dashboard — in a single command.

Everything you need to ship great resumes

One canonical profile, unlimited targeted versions — each a pixel-perfect PDF rendered with Typst.

Generate PDFs via API

POST a job description, get a tailored, professionally typeset PDF back in seconds.

One base, many versions

Manage a single source-of-truth profile and spin off targeted resumes per company and role.

Built for AI & automation

A clean REST API with key auth — drop it straight into n8n, Zapier, or an AI agent workflow.

Inject keywords per job

Update skills and experience bullets for each application without rewriting everything.

Self-host in one command

A single Docker image with SQLite and no external dependencies. Bring your own domain.

Built-in dashboard

A web UI to manage resumes, preview PDFs, and create or revoke API keys.

How it works

Set it up once in the dashboard, then drive it from an n8n (or Zapier) workflow that tailors a resume to every job.

1

Create your base resume

Add your profile, experience, and skills once in the dashboard — your single source of truth. It fixes your template and structure so automation can't break it.

2

Read the base in n8n

An HTTP Request node calls GET /api/v1/bases/{id}/content to pull your experience & skills in a clean, AI-ready shape — plus the job description you're targeting.

3

Tailor with an AI agent

An AI Agent node (Claude or GPT) compares your base to the job description, then rewrites bullets and picks the keywords that match the role.

4

Generate the tailored PDF

A final node posts the agent's output to POST /api/v1/resumes — with inject_bullets and keywords overrides — and gets back a pixel-perfect PDF, ready to send.

A simple REST API

Tailor and manage resumes over HTTP — built for AI agents, n8n, and Zapier.

Authentication. Every request to /api/v1/* sends your key in an X-API-Key header. Base URL: https://your-domain/api/v1. With an API key you have full control of child resumes and can read your base. Editing the base resume itself is done in the dashboard — so an agent can tailor freely without ever altering your master profile.

Tailored resumes — the main API surface

POST/resumesCreate a tailored child resume
PATCH/resumes/{id}Update overrides & re-render a new PDF
GET/resumesList & filter tailored resumes
GET/resumes/{id}Get one resume (add ?expand=true for merged content)
GET/resumes/{id}/pdfDownload the rendered PDF
POST/resumes/{id}/regenerateRe-render without changes
POST/resumes/previewPreview a render without saving
DELETE/resumes/{id}Delete a resume

Base resumes — read-only via API

GET/basesList all base resumes
GET/bases/{id}Get a single base
GET/bases/{id}/contentAI-optimised read of tailorable content
Creating & editing a base happens in the dashboard

Templates

GET/templatesList available templates
GET/templates/{id}/thumbnailTemplate preview image

Meta

GET/healthService health & render-pool status
GET/schemaFull machine-readable schema reference

Ready to build a resume for every job?

Free, open source, and self-hosted. Get up and running in minutes.