pocket-resume

PocketResume

AI-powered Chrome extension that generates tailored resumes and cover letters from any job description. Paste your master profile once — PocketResume rewrites it for every application.

Website License: MIT Manifest V3 Chrome Extension

Features

What’s New in v8.8

See CHANGELOG.md for the full history.

Installation

Not on the Chrome Web Store — load unpacked:

git clone https://github.com/Isaac-1555/pocket-resume.git
cd pocket-resume
npm install
  1. Open chrome://extensions
  2. Enable Developer mode
  3. Click Load unpacked → select the PocketResume directory

Setup

  1. Click the extension icon → gear icon (Settings)
  2. Select AI provider → paste API key → “Set as Active Provider”
    • For Custom / Local: pick a preset (Ollama, LM Studio, NVIDIA NIM) or enter any OpenAI-compatible Base URL, optional API key, and model → “Test Connection” → “Save Endpoint” → “Set as Active Provider”
  3. Paste your master resume into the profile text area → Save
  4. (Optional) Enable Cover Letter toggle
  5. (Optional) Create a free account for resume cloud sync, or upgrade to Pro for the Job Tracker + Form Filler — Settings → Account & Cloud Sync

Usage

  1. Navigate to any job posting (LinkedIn, Indeed, company pages)
  2. Click PocketResume icon → choose resume style
  3. Click Generate Resume
  4. PDF downloads automatically
  5. Hit an application form with essay questions? Click Fill Form — PocketResume answers using your resume, then you review and submit
  6. Polish your master resume on the options page: Refine Resume (asks a few grounded questions, then rewrites with before/after ATS scores), Check ATS (instant score + fixes), or Extract JSON (structured profile for generation)

If generation fails, the popup stays red — click the ? button (top right) to see a readable error message with the option to copy the full raw details. The error clears when you close the popup or click Generate Resume again.

Configuration

Resume generation works out of the box and is fully local. One optional integration requires your own credentials.

Plans (Clerk + Convex)

A free account (free_user) includes resume cloud sync. Pro (pocketresume_pro) adds the full Job Tracker and Form Filler. During the launch promo, free-plan subscribers get every Pro feature until Oct 31. Sign-in, plan checks, and the embedded pricing table run through Clerk; synced resumes are stored in your own Convex deployment (convex/resumes.ts):

  1. Fill in CLERK_PUBLISHABLE_KEY, CLERK_FRONTEND_API_URL, and CONVEX_URL in .env.local
  2. Run npm run build:clerk to bundle src/cloud-sync.js → cloud-sync.js with your env vars injected
  3. Sign in from Settings → Account & Cloud Sync; resumes sync both ways automatically while signed in
  4. For backend work: npx convex dev from the repo root

.env.local is gitignored. Never commit cloud-sync.js (it’s a build artifact) or convex/_generated/ (regenerated by the Convex CLI).

Tech Stack

Development

# Install deps
npm ci

# Rebuild cloud-sync.js after editing src/cloud-sync.js
npm run build:clerk

# Update vendored jsPDF
npm install jspdf@latest
cp node_modules/jspdf/dist/jspdf.umd.min.js libs/jspdf.umd.min.js

Edit source files directly, reload the extension in chrome://extensions.

Debug targets:

For the full architecture map, file layout, and prompt/JSON schema reference, see AGENTS.md.

Contributing

Contributions welcome! See CONTRIBUTING.md for the workflow, CODE_OF_CONDUCT.md for community rules, and open an issue for bugs or features.

Security

Report vulnerabilities privately via GitHub Security Advisories. See SECURITY.md.

Acknowledgments

License

MIT © 2026 Isaac Daniel · pocket-resume.xyz