A Manifest V3 Chrome extension that makes job hunting seamless: track every application on a pipeline, capture any job posting in one click, and autofill applications — résumé included — from a profile you fill out once.
- 📋 Pipeline tracker — every job lives in one of five stages (Saved → Applied → Interview → Offer → Rejected). Move a job with a single dropdown; live counts at the top.
- ⚡ One-click capture — grab the title, company, location, and description of the job posting
you're viewing. Reads structured
JobPosting(JSON-LD) data when available and falls back to smart DOM/heuristic scraping. Also available via right-click menu and⌘⇧J/Ctrl+Shift+J. - ✍️ Smart autofill — a floating Autofill pill appears on application forms. It matches
fields by label, name, placeholder, and
aria-label, then fills them from your saved profile without overwriting anything you've already typed. Shortcut:⌘⇧U/Ctrl+Shift+U. - 📎 Résumé auto-attach — upload your résumé once; ApplyPilot attaches it to matching file-upload
fields during autofill using the browser-approved
DataTransferAPI (no manual re-picking). - 🖼️ Works inside iframes — the content script runs in every frame (
all_frames), so embedded application forms and their résumé fields get filled too. Results from all frames are aggregated into a single confirmation toast. - 👤 Profile page — one place for your basics, links, experience, work authorization, a reusable cover letter, and your résumé. Autosaves as you type. Export everything (including the résumé) to JSON.
- 🔎 Search & filter, dark-mode support, and a badge showing your active application count.
- Open
chrome://extensions - Toggle Developer mode (top-right)
- Click Load unpacked and select this folder (
job-apply/) - Pin ApplyPilot to your toolbar
After pulling changes that touch
manifest.json, click the refresh icon on the ApplyPilot card to reload it (Chrome may re-confirm new permissions).
- Click the ⚙ icon in the popup (or open the extension's options) and fill out your profile and upload your résumé.
- On any job posting, click Capture current page (or press
⌘⇧J). - On an application form, click the Autofill pill (or press
⌘⇧U) — text fields fill and your résumé attaches. Always review before submitting. - As you progress, move each job through the pipeline stages.
Privacy: all data (profile, jobs, and résumé) is stored locally via
chrome.storage.local. Nothing is sent anywhere. Autofill runs entirely in your browser and never submits a form for you.
ApplyPilot does one thing: it helps you track and apply to jobs by saving job postings and autofilling application forms with data you provide. All data stays on your device — none is collected, sold, or transmitted, and no browsing activity is monitored.
| Permission | Why |
|---|---|
storage, unlimitedStorage |
Save jobs, profile, and the résumé file locally |
activeTab, scripting |
Read the current page to capture a job posting |
contextMenus |
Right-click → "Save this job" |
webNavigation |
Enumerate a tab's frames so autofill reaches iframe forms |
host_permissions: <all_urls> |
Show the Autofill pill and fill forms on any career site |
| File | Purpose |
|---|---|
manifest.json |
MV3 configuration, permissions, commands |
background.js |
Service worker: capture, context menu, shortcuts, badge, frame-aware autofill |
content.js / content.css |
Autofill + résumé engine and floating pill injected into every frame |
popup.html/.css/.js |
Main UI — pipeline, stats, search, add/edit |
options.html/.css/.js |
Profile + résumé editor, JSON export |
icons/ |
Generated brand icons |
The matcher is heuristic and conservative:
- Only fills empty fields; never overwrites what you typed.
- Skips checkboxes, radios, and
<select>dropdowns (answered deliberately by you). - Attaches the résumé only to file inputs that look like a résumé field (label/name contains
resume, cv, curriculum, upload, attach) or that explicitly
acceptdocument types — avatar/photo uploads are left alone. - Every filled field and attached résumé flashes green so you can see exactly what changed.
- Custom drag-and-drop uploaders that hide the real
<input type=file>(or expose no input at all) still need a manual click. - Some heavily-scripted ATSes (e.g. Workday) use custom widgets instead of standard inputs; those fill only partially.