Quick Start • Docker Deploy • Features • Architecture • Docker • Updating
ResumeAgent is an open-source project that leverages a coding agent plus a library of composable Skills to make resume workflows agentic and dramatically more efficient. Instead of a black-box “rewrite my resume”, it decomposes parsing, tailoring, scoring, and heatmapping into transparent, inspectable steps — so you can customize prompts/strategies, plug in new skills, and automate end-to-end resume work with confidence.
BYOK (Bring Your Own Key) — no vendor lock-in, no subscriptions. Plug in your LLM API key and own your entire workflow.
Convert any PDF/DOCX resume into a beautifully formatted LaTeX PDF. AI-powered parsing extracts structured data, then fills your chosen template with intelligent section mapping.
🎬 Watch Demo
resume_transformer.mp4
- Upload PDF, DOCX, or images (OCR via Tesseract.js)
- 4 LaTeX templates: Basic, Modern, Classic, Academic
- Live TeX editor with instant PDF re-render
- Full CJK / multilingual support
Optimize your resume for a specific job description through block-by-block AI improvements. Zero-fabrication policy — only reframes your existing experience.
🎬 Watch Demo
resume_tailor.mp4
- JD analysis → match scoring → targeted optimization
- Strategies: keyword alignment, gap bridging, quantification, reordering, pruning
- Real-time streaming progress with per-block diffs
- LaTeX-rendered PDF + DOCX output
Visually analyze how well a resume aligns with a job description. Character-level colorization shows exactly what matters.
🎬 Watch Demo
resume_heatmap.mp4
- Three-level analysis: block → element → phrase
- Color-coded relevance: 🔴 high match · 🟠 partial · 🟢 irrelevant
- Employer-facing candidate evaluation tool
- Rendered as a colorized LaTeX PDF overlay
Extract structured data from any resume using custom schemas. Define exactly what you want to extract with a visual builder or raw JSON editor.
🎬 Watch Demo
resume_parser.mp4
Browse and preview all available resume templates with live PDF previews and one-click download.
The setup script checks your environment (Node.js, pnpm, Docker), installs missing tools, pulls the LaTeX Docker image, installs dependencies, and creates the .env file — all in one go.
git clone https://github.com/ApplyU-ai/ResumeAgent.git
cd ResumeAgent
./setup.shThen choose a mode:
# Development — hot-reload, instant feedback
pnpm dev
# Production — compile once, then serve
pnpm build
pnpm startOpen http://localhost:3000 in your browser.
Deploy ResumeAgent as a single Docker container
# Pull pre-built image and run (fastest)
docker run -p 3000:3000 ghcr.io/applyu-ai/resumeagent/resumeagent:latest
# Or build locally with docker compose
docker compose up -d
# Or build and run manually
docker build -t resumeagent .
docker run -p 3000:3000 resumeagentOpen http://localhost:3000.
Click to expand manual steps
- Node.js >= 20
- pnpm >= 10 (
npm install -g pnpm) - Docker — installed and running
# 1. Clone & install
git clone https://github.com/ApplyU-ai/ResumeAgent.git
cd ResumeAgent
pnpm install
# 2. Pull LaTeX Docker image
docker pull ghcr.io/applyu-ai/resumeagent/resumeagent-latex:latest
docker tag ghcr.io/applyu-ai/resumeagent/resumeagent-latex:latest resumeagent-latex
# 3. Configure environment
cp packages/backend/.env.example packages/backend/.env
# 4a. Development (hot-reload)
pnpm dev
# 4b. Production (build then serve)
pnpm build
pnpm start| Variable | Default | Description |
|---|---|---|
PORT |
3001 |
Backend server port |
CORS_ORIGINS |
http://localhost:3000 |
Comma-separated allowed origins |
FILE_STORE_PATH |
./tmp/files |
Uploaded file storage path |
SANDBOX_MODE |
auto |
auto (detect), docker (sandbox), or direct (host TeX Live) |
Note: LLM API keys are provided per-request via the UI — no server-side API key configuration needed.
- Anthropic:
claude-opus-4-5,claude-opus-4-6,claude-sonnet-4-6 - OpenAI:
gpt-5.2,gpt-5.1,gpt-5 - Azure OpenAI:
gpt-5.1,gpt-5.2 - Google:
gemini-3-flash-preview,gemini-3-pro-preview,gemini-3.1-pro-preview
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, Tailwind CSS v4, Vercel AI SDK |
| Backend | Hono, Node.js, pi-mono agent framework |
| Shared | TypeBox runtime schemas, shared between frontend & backend |
| LaTeX Sandbox | Docker (TeX Live + XeLaTeX), sandboxed with security constraints |
| Monorepo | pnpm workspaces + Turborepo |
| Linting | Biome |
| Testing | Vitest |
| CI/CD | GitHub Actions |
┌──────────────────────────────────────────────────────────────────────┐
│ Next.js Frontend │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ Transformer │ │ Tailor │ │ Heatmap │ │ Parser │ │
│ │ /transformer │ │ /resume- │ │ /resume- │ │ /resume- │ │
│ │ │ │ tailor │ │ heatmap │ │ parser │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └─────┬──────┘ │
│ └────────────────┼────────────────┼────────────────┘ │
│ │ SSE / REST │
└──────────────────────────┼───────────────────────────────────────────┘
│
┌──────────────────────────┼───────────────────────────────────────────┐
│ Hono Backend (port 3001) │
│ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Agent Orchestrator │ │
│ │ (pi-mono / pi-agent-core) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │ │
│ │ │ resume-parse│ │ jd-analyze │ │ template-fill │ │ │
│ │ ├─────────────┤ ├─────────────┤ ├─────────────────────────┤ │ │
│ │ │ match-score │ │ block- │ │ identify-optimization- │ │ │
│ │ │ │ │ optimize │ │ targets │ │ │
│ │ ├─────────────┤ ├─────────────┤ ├─────────────────────────┤ │ │
│ │ │ heatmap- │ │ tex-heatmap-│ │ latex-compile │ │ │
│ │ │ analyze │ │ colorize │ │ (Docker sandbox) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────┴───────────┐ │
│ │ Docker Sandbox │ │
│ │ (resumeagent-latex) │ │
│ └───────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
ResumeAgent uses a modular Skill architecture. Each skill is a self-contained unit with its own prompt, I/O schema, and optional scripts:
| Skill | Type | Description |
|---|---|---|
resume-parse |
LLM | Extract structured ResumeData from PDF/DOCX |
jd-analyze |
LLM | Analyze job descriptions into structured requirements |
match-score |
LLM | Score resume-JD alignment (0–100) with per-category breakdown |
identify-optimization-targets |
LLM | Prioritize which resume blocks to optimize |
block-optimize |
LLM | Optimize a single block (keyword, quantification, reorder, prune) |
template-fill |
LLM | Fill LaTeX templates with parsed resume data |
heatmap-analyze |
LLM | Per-block relevance analysis at phrase level |
tex-heatmap-colorize |
Deterministic | Inject xcolor highlights into LaTeX source |
latex-compile |
Deterministic | Compile TeX → PDF (+ optional DOCX) via Docker sandbox |
schema-parse |
LLM | Custom-schema extraction from resumes |
ResumeAgent compiles LaTeX inside a sandboxed Docker container with strict security constraints:
docker pull ghcr.io/applyu-ai/resumeagent/resumeagent-latex:latest
docker tag ghcr.io/applyu-ai/resumeagent/resumeagent-latex:latest resumeagent-latexcd sandbox
docker build -t resumeagent-latex .The image includes TeX Live (XeLaTeX + pdflatex), CJK fonts (Noto CJK), and pdf2docx for optional DOCX generation.
The Docker sandbox runs with strict isolation:
--network=none— no network access--read-only— read-only root filesystem--memory=256m— 256 MB memory cap--cpus=1— single CPU--pids-limit=50— process limit- Non-root user (
latex)
When a new version of ResumeAgent is released:
# 1. Pull latest code
git pull origin main
# 2. Re-run setup (installs new deps, updates Docker image if needed)
./setup.sh
# 3a. Development
pnpm dev
# 3b. Production
pnpm build
pnpm startTo update only the LaTeX Docker image:
docker pull ghcr.io/applyu-ai/resumeagent/resumeagent-latex:latest
docker tag ghcr.io/applyu-ai/resumeagent/resumeagent-latex:latest resumeagent-latex# ── Development (hot-reload) ──────────────────────────────
pnpm dev # all packages
pnpm --filter @resumeagent/frontend dev # frontend only
pnpm --filter @resumeagent/backend dev # backend only
# ── Production ───────────────────────────────────────────
pnpm build # compile all packages
pnpm start # serve built output
# ── Quality ──────────────────────────────────────────────
pnpm check # TypeScript type-check
pnpm test # Vitest unit tests
npx @biomejs/biome check --write . # lint & format (Biome)For more information or questions, please contact zijian.ling@applyu.ai
