Skip to content

ResumeAgent are Purpose-built AI agents for the modern job search. Tailor to any role, transform to a polished PDF, and analyze your fit.

License

Notifications You must be signed in to change notification settings

ApplyU-ai/ResumeAgent

Repository files navigation

ResumeAgent

An open-source, agentic resume toolkit.

Grab a coffee ☕️ and let the agents handle your resume.

CI License Stars Node pnpm TypeScript

Quick StartDocker DeployFeaturesArchitectureDockerUpdating

ResumeAgent homepage


Why ResumeAgent?

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.


Features

📄 Resume Transformer

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

✂️ Resume Tailor

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

🔥 Resume Heatmap

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

🔍 Resume Parser

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

🎨 Template Gallery

Browse and preview all available resume templates with live PDF previews and one-click download.


Quick Start

One-command setup (recommended for development)

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.sh

Then choose a mode:

# Development — hot-reload, instant feedback
pnpm dev

# Production — compile once, then serve
pnpm build
pnpm start

Open http://localhost:3000 in your browser.

Docker Deployment

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 resumeagent

Open http://localhost:3000.

Manual setup

Click to expand manual steps

Prerequisites

  • Node.js >= 20
  • pnpm >= 10 (npm install -g pnpm)
  • Docker — installed and running

Steps

# 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

Environment variables

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.

Supported LLM providers & models

  • 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

Tech Stack

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

Architecture

┌──────────────────────────────────────────────────────────────────────┐
│                        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)   │                         │
│                    └───────────────────────┘                         │
└──────────────────────────────────────────────────────────────────────┘

Agent Skills

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

Docker LaTeX Sandbox

ResumeAgent compiles LaTeX inside a sandboxed Docker container with strict security constraints:

Pull pre-built image (recommended)

docker pull ghcr.io/applyu-ai/resumeagent/resumeagent-latex:latest
docker tag ghcr.io/applyu-ai/resumeagent/resumeagent-latex:latest resumeagent-latex

Build locally

cd sandbox
docker build -t resumeagent-latex .

The image includes TeX Live (XeLaTeX + pdflatex), CJK fonts (Noto CJK), and pdf2docx for optional DOCX generation.

Sandbox security

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)

Updating

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 start

To 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

Individual Package Commands

# ── 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)

Acknowledgements


License

Apache-2.0


Connect

For more information or questions, please contact zijian.ling@applyu.ai

About

ResumeAgent are Purpose-built AI agents for the modern job search. Tailor to any role, transform to a polished PDF, and analyze your fit.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors