ShortApply

Client
Personal project · Open Source
Role
Creator · Designer · Builder
Company
Open Source
Year
2026
ShortApply — AI-powered job application Chrome extension logo

Overview

ShortApply is a Chrome Extension (MV3) that uses Claude AI to automatically fill job application forms based on the user's resume — reducing the time spent on repetitive applications from minutes to seconds.

The Problem

Applying to multiple jobs means filling the same fields over and over: name, email, work experience, cover letter variations, salary expectations. The friction is real, and it compounds fast across dozens of applications.

What It Does

• Cmd+Shift+F — scans all visible form fields on the page and fills them in a single API call. • Cmd+Shift+U — fills a single focused field for more targeted control. • Supports text inputs, textareas, and dropdowns (Claude picks the closest matching option). • Optimistic UI: fields are filled immediately with a confirmation bar that lets you undo or edit any response before committing. • Works on any job platform — LinkedIn, Greenhouse, Lever, Workday, and others.

Technical Execution

Stack: Chrome Extension Manifest V3 · Vanilla JS · Anthropic API (Claude Haiku). Key decisions: • Service worker architecture — the API key and CV text are read exclusively inside the background service worker, never exposed to content scripts. This prevents key leakage through page-level JavaScript or XSS. • Prompt caching — the CV block in the system prompt uses cache_control: ephemeral, so repeated calls within a 5-minute window only charge ~10% of the input token cost. Meaningful savings during an active job search session. • Single API call for bulk fill — instead of one request per field, the extension sends all visible fields in a single structured prompt and receives a JSON array back. Claude returns numeric indices for dropdowns and null for fields it can't answer with confidence. • Prompt injection guard — a security constant is appended to every system prompt instructing the model to ignore any instructions embedded in field labels or page content. • SPA compatibility — field values are set via the native prototype setter (Object.getOwnPropertyDescriptor) and paired with synthetic input and change events, ensuring React, Vue, and Angular forms register the change correctly. • i18n — supports Portuguese, English, and Spanish with runtime language switching, loading locale files dynamically via fetch(chrome.runtime.getURL(...)) since chrome.i18n.getMessage() can't be overridden at runtime.

What I Learned

Building a browser extension that interacts with arbitrary third-party form structures pushed me to think carefully about reliability across wildly different DOM patterns. Label detection alone required a multi-strategy fallback: <label for>, aria-label, aria-labelledby, closest ancestor label, and nearby sibling text — in that order. Getting AI to reliably pick dropdown options required restructuring the prompt to present numbered options and ask for only the number back, not free text. The security model of MV3 service workers — which terminate between events — turned out to be an asset: there's no persistent state to leak, and sensitive data is read fresh from storage on each request.

ShortApply popup — empty state asking for Anthropic API key, resume PDF, and additional instructions
ShortApply popup — fully configured with API key, resume, and form-fill instructions loaded
README.md
GitHub

ShortApply ✦

Fill job application forms with AI — so you can spend less time copy-pasting and more time actually getting hired.

Buy me a coffee ☕


What is this?

ShortApply is a Chrome Extension that reads your CV and uses Claude AI to fill out job application forms for you. You hit a shortcut, it fills all the fields. Done.

It handles text inputs, textareas, and dropdowns. It works on most ATS platforms — Greenhouse, Lever, Gupy, Workday, LinkedIn Easy Apply, and plenty more. It even reaches inside iframes, which is where a lot of those modal-based forms hide.


Why I built this

Applying for jobs is mostly the same 15 questions over and over. Name, email, phone, LinkedIn, years of experience, cover letter, salary expectation — repeated across dozens of platforms with slightly different layouts. It's tedious, and that tedium shouldn't stand between good candidates and good jobs.

I wanted something that understood my CV and answered those questions the way I would — not a generic autofill that just pastes stored values into fields.


How it works

  1. You upload your CV as a PDF. The extension extracts the text client-side using PDF.js.
  2. You press ⌘⇧F (or Ctrl+Shift+F on Windows/Linux) on any job application page.
  3. ShortApply scans the visible form fields, sends their labels + your CV to Claude (Anthropic's API), and gets back answers for each field.
  4. The fields get filled instantly with a green flash. A confirmation bar appears at the bottom — you have 20 seconds to undo everything if something looks off.

For a single focused field, ⌘⇧U fills just that one — useful for tricky textarea questions where you want to review the answer before moving on.


Features

  • Bulk fill — fills all visible form fields in one shot (⌘⇧F)
  • Single field fill — fill just the focused field (⌘⇧U)
  • Undo bar — optimistic UI with a 20s window to revert everything
  • Expandable field summary — see exactly what was filled and what was skipped
  • Edit modal — tweak the AI's answer before inserting it
  • iframe support — works inside modal forms (Gupy, V8.Tech, etc.)
  • Additional instructions — paste a .md file or write freeform instructions for Claude (salary expectation, preferred language, things not in the CV)
  • Application history — keeps a log of which pages you've filled and how many fields
  • Language detection — detects the page language and instructs Claude to respond accordingly
  • Prompt caching — your CV is cached on Anthropic's side, so repeat calls are ~10x cheaper on the CV tokens
  • i18n — Portuguese 🇧🇷, English 🇺🇸, and Spanish 🇪🇸

Setup

  1. Clone the repo
  2. Go to chrome://extensions, enable Developer mode
  3. Click Load unpacked and select the shortapply/ folder
  4. Click the extension icon and paste your Anthropic API key
  5. Upload your CV as a PDF
  6. Navigate to any job application and press ⌘⇧F

Cost: Claude Haiku is extremely cheap — roughly $0.001 per field without caching, less with it. A full application with 10 fields costs about a cent.


Tech stack

ThingWhat it does
Chrome Extension MV3Manifest version 3, service worker architecture
Claude Haiku (claude-haiku-4-5)The AI model doing the actual reasoning
Anthropic Prompt CachingCaches the CV block between calls
PDF.js (bundled)Extracts text from the uploaded CV locally
Vanilla JSNo frameworks — the whole extension is plain JS + CSS

No backend. No servers. Your CV and API key stay in Chrome's local storage. The only external call is to api.anthropic.com.


Project structure

shortapply/
├── manifest.json       # MV3 config — permissions, commands, content scripts
├── background.js       # Service worker — calls Anthropic API, handles commands
├── content.js          # Injected into every page — finds fields, fills them
├── content.css         # Confirm bar, toast, overlay, flash animation
├── popup.html          # Extension popup UI
├── popup.js            # Popup logic — CV upload, instructions, history
├── popup.css           # Popup styles
├── _locales/           # i18n strings (pt_BR, en, es)
├── lib/                # Bundled PDF.js
├── icons/              # Extension icons
└── brand/              # Logo assets

Keyboard shortcuts

ShortcutAction
⌘⇧F / Ctrl+Shift+FFill all visible fields
⌘⇧U / Ctrl+Shift+UFill the currently focused field

Shortcuts can be reconfigured at chrome://extensions/shortcuts.


Security

  • Your API key is stored in chrome.storage.local — never sent anywhere except api.anthropic.com
  • CV text is sent directly from the service worker to Anthropic — the content script never touches your key or your CV
  • All prompts include an injection guard to prevent adversarial content in form labels from hijacking the AI's behavior
  • No analytics, no telemetry, no external servers

Limitations

  • Only works on pages where Chrome's content scripts can run (not chrome:// pages, PDFs opened in the browser, etc.)
  • Quality of answers depends on how well-structured your CV is — the better the CV, the better the fill
  • Some platforms with aggressive anti-bot measures may block the field value events

Privacy

ShortApply runs entirely on your machine. There are no servers, no databases, no accounts, and no analytics.

The only data that leaves your device is what's strictly necessary to generate answers: your CV text and the form field labels are sent directly to Anthropic's API when you trigger a fill. Your API key is stored locally in Chrome's storage and is never transmitted anywhere else.

You are responsible for the data you choose to process with this extension. Do not use it with sensitive documents you wouldn't be comfortable sending to a third-party AI provider. By using ShortApply, you agree that the author bears no liability for any data exposure resulting from your own use of the tool, misconfiguration of your environment, or Anthropic's handling of API requests.

For details on how Anthropic handles API data, refer to their Privacy Policy.


License

MIT

Next project
Mercado Libre Brasil
Get in touch
mathevssa@gmail.com
Connect
lkdn.com/matheus-sa-almeida