Improve ATS alignment between your resume and a LinkedIn Job Description. Extract a JD from LinkedIn, analyze alignment, rewrite resume bullets to add missing JD skills, generate a cover letter, and proofread it — powered by Chrome’s on-device AI APIs, with an optional Gemini fallback.
- Website: host
Ext_plus_site/website/index.htmlon a static host (Netlify/Vercel/Cloudflare or local athttp://127.0.0.1:5500/). - Extension: load unpacked
Ext_plus_site/extensionin Chrome.
Job seekers struggle to tailor resumes quickly to unique job descriptions, leading to low ATS match rates and recruiter pass-through. This app automates analysis and rewriting so bullets explicitly reflect the JD and improve ATS alignment.
- Chrome Extension Popup
- Analyze Resume vs JD (Prompt API) → readable cards: score, missing skills, strengths, recommendations
- Summarize JD (Summarizer API)
- Rewrite Resume Points (opens website, transfers JD+resume via extension storage)
- Website
- Auto-ingests JD + resume from extension
- Chat using Prompt API; fallback to Gemini if Prompt is unavailable
- Rewrite resume points using two-step plan → Rewriter API (few-shot-style examples)
- Generate cover letter (Writer API)
- Proofread with side-by-side diff (Proofreader API) and resilient Prompt fallback
- Chrome AI APIs:
- Prompt API (
LanguageModel) - Summarizer
- Rewriter
- Writer
- Proofreader
- Prompt API (
- Optional fallback
- Gemini Developer API (
gemini-1.5-flash)
- Gemini Developer API (
extension/
manifest.json
background.js
content.js
popup.html
popup.js
website/
index.html
- Serve the
website/folder through a static server. For local testing, ensure the URL ishttp://127.0.0.1:5500/Ext_plus_site/website/index.htmlso the extension can connect. - The page automatically reads data from the extension when opened with
?src=ext&extId=...and will persist theextIdfor resume handoff.
- Chrome →
chrome://extensions→ enable Developer mode → Load unpacked → selectExt_plus_site/extension. - Open a LinkedIn job page, then click the extension icon.
- On the website, upload your resume (PDF/TXT). It stores a copy in
localStorageand in extension storage so the popup and website stay in sync.
If the Prompt API is unavailable on a machine, the chat will prompt once for a Gemini key.
- Get a key:
https://ai.google.dev/ - When prompted, paste your key (stored as
geminiApiKeyinlocalStorage). - Or set manually:
localStorage.setItem('geminiApiKey', 'YOUR_API_KEY');
- On a LinkedIn job page, open the popup:
- Analyze Resume vs JD → see score, missing skills, strengths, recommendations
- Summarize JD → concise, readable summary
- Rewrite Resume Points → opens the website with JD + resume loaded
- On the website:
- Click “Rewrite Resume Points” → see improved bullets that add missing JD skills/tools
- Generate Cover Letter → then “Proofread” to apply grammar/spelling fixes and view side-by-side diff
- Use chat for guidance; falls back to Gemini when Prompt is unavailable
MIT – see LICENSE in this folder.