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.

Features
- 4 Resume Layouts — Professional, FAANG, Deedy (double-sided, dense two-column), Academic CV
- 5 AI Providers — Google Gemini, OpenAI, Anthropic, OpenRouter, plus any custom/local OpenAI-compatible endpoint (Ollama, LM Studio, NVIDIA NIM, Groq, …)
- AI Form Filler — One click fills application form questions (“Why are you a great fit?”) in your voice: first person, plain words, no AI tells, resume as the only source of facts. Never submits or overwrites — you review and hit submit
- Model Selection — Override the model per provider; fetch the live model list from each provider
- Cover Letters — Optional, single-page cover letter generated alongside your resume
- Clear Error Reporting — Generation failures keep the popup red until you close it or retry; a “?” button opens a human-readable error message with copyable raw details
- PDF Export — Clean, print-ready PDFs via jsPDF for every layout
- Check ATS — On-demand ATS-readiness scan: animated score gauge, critical issues with why an ATS trips on them, and AI-suggested fixes
- Refine Resume — AI polishes your master resume with a grounded question pass first, before/after ATS scores, change summary + warnings, and side-by-side review before applying
- Guided Onboarding — New users get a setup checklist card in the popup plus a spotlight tour that walks the Settings page; Form Filler has its own one-time questionnaire
- Extract JSON — Converts freeform resume text into structured JSON profile
- Multi-Profile — Save up to 3 master profiles and switch between them
- Free & Pro Plans — A free account syncs your resumes across devices; Pro adds the full Job Tracker and Form Filler (sign in from Settings → Account & Cloud Sync). During the launch promo every Pro feature is free until Oct 31
- Privacy First — API keys and profile data stored locally
What’s New in v8.8
- Automatic cloud sync — Signed-in resumes sync both ways with no Push or Restore buttons. Edits save to the cloud and newer versions restore automatically.
- Deletes propagate — Deleting a resume removes it from the cloud too.
- Conflict handling — When the same resume changed in two places, the most recent edit wins.
- Launch offer — Every Pro feature stays free until Oct 31.
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
- Open
chrome://extensions
- Enable Developer mode
- Click Load unpacked → select the
PocketResume directory
Setup
- Click the extension icon → gear icon (Settings)
- 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”
- Paste your master resume into the profile text area → Save
- (Optional) Enable Cover Letter toggle
- (Optional) Create a free account for resume cloud sync, or upgrade to Pro for the Job Tracker + Form Filler — Settings → Account & Cloud Sync
Usage
- Navigate to any job posting (LinkedIn, Indeed, company pages)
- Click PocketResume icon → choose resume style
- Click Generate Resume
- PDF downloads automatically
- Hit an application form with essay questions? Click Fill Form — PocketResume answers using your resume, then you review and submit
- 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):
- Fill in
CLERK_PUBLISHABLE_KEY, CLERK_FRONTEND_API_URL, and CONVEX_URL in .env.local
- Run
npm run build:clerk to bundle src/cloud-sync.js → cloud-sync.js with your env vars injected
- Sign in from Settings → Account & Cloud Sync; resumes sync both ways automatically while signed in
- 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
- Runtime: Vanilla HTML/CSS/JS, Manifest V3
- PDF: jsPDF (vendored)
- AI: Gemini, GPT-4o-mini, Claude 3.5 Haiku, OpenRouter, plus any custom/local OpenAI-compatible endpoint
- Cloud (optional): Clerk auth + pricing (Pro), Convex resume sync
- Build: esbuild (only for
cloud-sync.js bundle); no bundler for app code
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:
- Service Worker: extension card → “Service Worker” (Inspect)
- Popup: right-click popup → Inspect
- Content Script: target page’s DevTools
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