cd /news/ai-products/applyonce-local-first-job-applicatio… · home topics ai-products article
[ARTICLE · art-121310] src=github.com ↗ pub= topic=ai-products verified=true sentiment=· neutral

ApplyOnce – Local-first job application autofill that reads scanned resumes

ApplyOnce, a local-first job application autofill extension formerly codenamed FastApply, released version 0.2 with layout-aware resume parsing, on-device OCR for scanned resumes, resume re-import, and an optional on-device question classifier. The extension, available on the Chrome Web Store and buildable for Firefox, never submits applications automatically, and its launch gates require detection recall above 0.95 and mapping precision above 0.98.

read3 min views1 publishedSep 4, 2026
ApplyOnce – Local-first job application autofill that reads scanned resumes
Image: Michielbdejong (auto-discovered)

Formerly codename FastApply; renamed after ASO research (fastapply.co is an existing competitor — see docs/ASO-REPORT.md). Internal storage keys and the IndexedDB name keep the old identifier for data compatibility.

One-click job application autofill, deterministic-first, local-only. See PLAN.md

for the full design and CLAUDE.md

for agent/contributor rules.

Install: Chrome Web Store · Firefox: build from source (npm run build:firefox

, see "Load in Firefox") until the AMO listing is live. Version 0.2 adds layout-aware resume parsing, on-device OCR for scans, resume re-import, and an optional on-device question classifier (PLAN.md Part 9).

npm install
npm run typecheck   # tsc --noEmit
npm test            # unit tests (vitest + jsdom)
npm run eval        # fixture eval: detection recall + mapping precision gates
npm run build       # production build (Chrome) → dist/
npm run build:firefox   # Firefox build → dist-firefox/
npm run e2e:firefox     # live Firefox e2e (Playwright Firefox + RDP sideload)
npm run release:firefox # dist-firefox + AMO upload zip + source zip → release/

npm run build

chrome://extensions

→ enable Developer mode →Load unpacked→ selectdist/

  • Open the side panel (click the ApplyOnce toolbar icon), complete onboarding (drop your resume, review the extracted profile, set explicit answers).
  • Open a job posting (Greenhouse / Lever / Ashby / generic form) → Scan this page→ review →** Fill**.

The extension never submits an application — you always click submit yourself.

npm run build:firefox

about:debugging#/runtime/this-firefox

→**Load Temporary Add-on…**→ selectdist-firefox/manifest.json

.- Firefox treats MV3 site access as optional: open the ApplyOnce sidebar → Settings→** Allow ApplyOnce on all sites**(or grant it underabout:addons

→ ApplyOnce → Permissions). Auto-detection is silent until then. - Toolbar icon opens the sidebar; the in-page widget's panel button opens the panel in a tab (Firefox only allows opening the sidebar from a direct user gesture).

Differences from Chrome are all runtime feature-detected in src/shared/platform.ts

: no offscreen document (resume parsing runs in the background event page), sidebar_action

instead of side_panel

, and Firefox's install-time data-collection consent gates telemetry. See docs/FIREFOX.md

for the AMO submission steps.

src/content/

— scanner (shadow-DOM aware, radio grouping, widget hints) + filler (native setters, DataTransfer file attach, widget playbook). Only code with page-DOM access; injected on demand viaactiveTab

.src/shared/

— pure logic: zod schemas, canonical field ontology, matching cascade (ATS adapter rules → autocomplete tokens → label lexicon → saved answers exact/fuzzy → abstain), confidence + hard risk gates, CV text parser.src/storage/

— Dexie vault (profile, documents, saved answers, fill log), optional passphrase AES-GCM encryption, JSON export/import.src/background/

— stateless MV3 service worker: routing, job ids inchrome.storage.session

, offscreen lifecycle.src/offscreen/

— PDF.js / Mammoth resume parsing.src/sidepanel/

— React UI: onboarding, profile vault, review-and-fill loop, settings, diagnostics.fixtures/

+evals/

— the eval corpus is the product spec. Launch gates: detection recall > 0.95, mapping precision > 0.98, zero forbidden fills.

  • OCR for scanned PDFs is stubbed (paste-text fallback instead) until Tesseract traineddata can be vendored into the package — no runtime downloads are permitted.
  • Fixture corpus currently holds 4 synthetic pages modeled on real ATS DOM. Replace/extend with SingleFile captures of real postings (PLAN.md Phase 0 target: 40 pages) before trusting the accuracy numbers.
  • Live-browser e2e scripts live in e2e/

(verify-extension.mjs

for Chromium,verify-firefox.mjs

for Firefox); they run against the synthetic fixtures. Filler behavior on real ATS widgets still needs the 10-application live gate (PLAN.md Phase 4) before launch.

── more in #ai-products 4 stories · sorted by recency
── more on @applyonce 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/applyonce-local-firs…] indexed:0 read:3min 2026-09-04 ·