Skip to content

mohiwalla/agentic-reactive-resume

Repository files navigation

agentic-reactive-resume

agentic-reactive-resume banner

Build JD-specific resumes with AI, keep everything structured, and export exact PDFs locally using the real Reactive Resume renderer.

This project started from a simple annoyance:

AI can help tailor a resume, but the last mile usually sucks.

  • You get Markdown instead of a real resume format.
  • The PDF looks different every time.
  • You still end up clicking around in some UI to make it usable.
  • "ATS-friendly" usually means "trust me bro".

This repo fixes that flow.

You keep your base resume in Reactive Resume JSON, let an agent rewrite it for a target job description, and then render the final PDF locally using the actual upstream Reactive Resume pipeline.

Requirements

  • Bun
  • git
  • pnpm
  • Docker with docker-compose or docker compose
  • Chrome, Chromium, or Edge installed locally

Install

git clone https://github.com/mohiwalla/agentic-reactive-resume.git
cd agentic-reactive-resume
bun install

Usage

Basic usage:

bun pdf jsons/resume-base.json

By default:

  • if USERNAME exists, the output filename becomes USERNAME (random).pdf
  • otherwise it falls back to <input-basename>.pdf
  • output files are written into pdfs/

Examples:

bun pdf jsons/resume-base.json
bun pdf jsons/resume-base.json -o pdfs/company-role.pdf
bun pdf jsons/resume-base.json --output-dir build/pdfs
bun pdf jsons/resume-base.json --printer-mode browserless

Help:

bun pdf -h

What It Actually Does

  • Takes a structured resume JSON as input
  • Lets an agent or script tailor that resume for a specific job description
  • Preserves the result in machine-editable Reactive Resume JSON
  • Exports an exact PDF locally without depending on a hosted resume builder

So this is not just some prompt taped to an agent to spit out Markdown. It is an end-to-end resume building pipeline.

Why I Built It

Most AI resume workflows break in one of two places:

  1. The content becomes unstructured too early.
  2. The export step is inconsistent or manual.

I wanted a pipeline where:

  1. My base resume stays structured.
  2. An agent can tailor it for a job description.
  3. The output remains editable JSON.
  4. The final PDF comes out clean and predictable.

That makes it really useful for role-specific resumes.

What This Project Is

  • A way to generate JD-specific resumes without going back to a hosted UI
  • A reliable final step for agentic resume generation
  • A local CLI for rendering Reactive Resume JSON to PDF

What This Project Is Not

  • It is not a built-in LLM resume writer
  • It does not scrape job boards for you
  • It does not reimplement Reactive Resume templates

You pair it with any agent, script, or workflow that can edit JSON.

Typical Workflow

  1. Keep a truthful base resume in jsons/resume-base.json
  2. Paste in a target job description
  3. Ask an agent to tailor the resume JSON
  4. Render the result to PDF with this CLI

That is the whole idea.

Example Agent Prompt

You can use any coding agent or LLM workflow that can safely edit JSON.

Take jsons/resume-base.json as the source resume.

Tailor it for this job description:
<paste JD here>

Constraints:
- Keep all claims truthful
- Strengthen wording only when the source supports it
- Add JD-relevant keywords naturally
- Reorder bullets and skills to match the role
- Keep the output valid Reactive Resume JSON
- Write the result to jsons/resume-<job-title>.json

Then export it:

bun pdf "jsons/resume-<job-title>.json"

Or write to a specific file:

bun pdf "jsons/resume-<job-title>.json" -o pdfs/company-role.pdf

Features

  • Exact PDF output using the real Reactive Resume renderer
  • Local CLI that works well for humans, scripts, and coding agents
  • Chrome/Chromium/Edge auto-discovery on macOS, Linux, and Windows
  • Local Chrome printing by default, with browserless fallback support
  • No rxresu.me dependency at runtime

CLI Options

  • -h, --help: show help
  • -V, --version: show version
  • -o, --output <file>: write to an explicit PDF path
  • --output-dir <dir>: write into a custom output directory
  • --keep-resume: keep the imported upstream resume instead of deleting it
  • --printer-mode <auto|chrome|browserless>: choose printer backend
  • --chrome-path <path>: override detected Chrome/Chromium executable

How It Works

This project does not fake the template.

It:

  1. boots a local Reactive Resume runtime
  2. imports your Reactive Resume JSON through the upstream API
  3. asks Reactive Resume to generate the PDF
  4. downloads the generated PDF to your local filesystem

That is why the output matches the real renderer instead of being some close-enough HTML copy.

Notes

  • First run is slower because the upstream Reactive Resume repo is cloned and dependencies are installed under .cache/reactive-resume/
  • Postgres is started locally through Docker
  • Local Chrome is preferred over browserless so you do not need a heavy printer image pull on first run
  • If browser auto-detection fails, set CHROME_EXECUTABLE_PATH=/absolute/path/to/chrome

Development

bun test
bun typecheck

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors