ATS Copilot · Chrome extension

Application help that reads the right tab and never hits Submit

ATS Copilot is a side-panel Chrome extension for job seekers: scan the posting you choose, see how your resume's keywords line up, draft editable text, and fill the routine fields — while salary, visa, and demographic questions stay yours, and submitting stays a human click.

The problem

What kept going wrong

Applying to jobs means retyping the same contact details into slightly different forms, tab after tab. Generic autofill tools make it worse in two ways: they guess at the wrong page when your focus moves, and they push values into fields that deserve thought — salary expectations, work authorization, demographic questions.

The technical root of the first problem is real: between clicking an extension's icon and pressing its Scan button, browser focus can change, so "the active tab" may no longer be the job you meant.

Who it's for

Who would use this

Job seekers running repetitive application sessions — especially anyone who wants drafting and form help but refuses to let a tool answer sensitive questions or submit on their behalf.

The build

What I built

A side-panel extension that captures the exact tab you clicked it on, at the moment of the click — the browser gesture Chrome already trusts. When you later press Scan, it reads that saved target first, so a decoy tab stealing focus doesn't redirect the scan.

Scanning extracts structured job details (structured JobPosting data first, then known ATS patterns, then a generic fallback) and computes a plain keyword overlap against your resume — presented as "a guide, not a verdict." Drafting through an AI provider is user-triggered and always editable. Field filling is allowlist-based: recognized, non-sensitive fields only.

The workflow

How a run actually goes

The verified user journey, in the order it actually happens — every consequential step is a click you make.

  1. Click the extension on the job tab

    That click captures the exact tab, window, and origin into session state, and opens the side panel. No background browsing, no always-on permissions.

  2. Scan the page — explicitly

    Scan resolves the saved target first, then extracts title, company, location, and description. In the verified test, a decoy tab took focus after the click and the scan still read the original job page.

  3. Review the keyword comparison

    A plain overlap count between the posting's top keywords and your resume — the same inputs always score the same, and the panel calls it a guide, not a verdict.

  4. Draft where it helps (optional)

    Generate cover-letter or answer drafts through the AI provider you configure. Output lands in an editable box; nothing is pasted anywhere without you.

  5. Detect fields, review the plan, fill the safe ones

    Detect lists every field it found with the value it would fill. Salary, work authorization, visa, demographic, unknown, and custom fields are marked 'skipped — never auto-filled.' Fill selected dispatches real input events the page can see.

  6. Submit yourself — always

    The fill code has no submit, click, or form-request path at all. The banner in the panel says it plainly: review every field, then click the site's own submit button.

Worth a closer look

The most useful parts

  • Target capture at the gestureTab identity is recorded when Chrome grants temporary access — the moment you click — instead of being guessed later. Closed tabs clear their record automatically.
  • Minimum-permission modelNo permanent all-sites access. If the temporary grant expires, the extension asks for one origin, once, when needed.
  • Fail-closed fill boundaryBoth the panel and the content script enforce the safe-field allowlist independently. Unknown controls and custom dropdowns fail closed to manual.
  • Redacted diagnosticsDebug exports strip URLs' query strings, email addresses, local paths, and credential-shaped values. Page diagnostics use counts and booleans, not page text.

The real screens

What it looks like in use

Five views from the packaged release show the journey from scanning a chosen job page to filling recognized fields. All data shown is invented, and Submit remains untouched.

Technical verification

What I tested

Verified against the packaged release — a browser-boundary test, not just unit tests.

61tests passed with strict TypeScript checks
7 + 3safe fields filled, sensitive fields left empty in the verified flow
0known npm vulnerabilities at release
Neversubmits — the fill path contains no submit code

The v0.2.1 release verification covered the decoy-tab flow (the scan used the captured target even after another tab became active), safe-field filling with sensitive exclusions on the synthetic fixture, and a dated read-only scan of one public Greenhouse posting. The release scan found no remote scripts, eval, or source maps in the packaged files. The screenshots above were captured fresh from that same packaged release for this page.

Current scope

  • Available today as a local Chrome extension build. A Chrome Web Store release would be a separate publication step.
  • Structured extraction is strongest on supported job pages; other sites use a fallback and may need site-specific tuning.
  • AI drafting is optional and uses the provider the user configures. Every draft remains editable and should be reviewed.
  • The extension fills recognized text fields only. Salary, authorization, demographic questions, file uploads, and unfamiliar controls stay manual.