A Chrome extension that tracks your job applications, auto-reads Gmail to update statuses, and uses AI to prepare you for every interview.
All data stays in your browser. No server. No sign-up.
git clone https://github.com/YOUR_USERNAME/jobtracker.git
cd jobtracker
npm install # downloads PDF/Word resume parsing libs (optional)Then in Chrome:
- Open
chrome://extensions→ enable Developer mode - Click Load unpacked → select the
jobtrackerfolder - Open Settings → paste your Claude API key
npm installis optional — it downloads the libraries needed for PDF and Word resume upload.
If you skip it, you can still paste resume text manually in Settings.
- One-click save from LinkedIn, Indeed, Glassdoor, Greenhouse, Lever, Workday, eFinancialCareers
- Status pipeline: Saved → Applied → Interviewing → Offer / Rejected
- AI-generated job summaries on each card
- Connect your Gmail to auto-scan application confirmation emails
- Auto-updates statuses (applied, interview scheduled, rejection)
- Detects new applications and adds them to your list
- Incremental scanning — only reads new emails since last sync
Pass 1 — JD Analysis
- Role category, seniority, required vs. nice-to-have skills
- Culture signals, interview focus areas
Pass 2 — Interview Structure Prediction
- Predicted round count, format, timeline, and focus per round
- OA likelihood detection
Pass 3 — Question Bank (5 parallel AI calls)
- HR Round: self-intro framework, motivation & logistics questions
- Behavioral: 6 STAR-framework questions mapped to JD competencies
- Technical: 8 questions across 3+ categories, mixed difficulty
- Questions to Ask: tailored for recruiter, hiring manager, and team
Pass 4 — Resume Match Analysis (if resume uploaded)
- Match score, strengths, gaps
- Per-question STAR hints drawn from your own experience
- Topic priority weights ranked for this specific role
- 10 curated LeetCode problem recommendations with pattern tags
- 3 AI-generated original practice problems (expandable with hints)
- Time strategy and common mistakes
- Supports PDF, Word (.docx), and plain text paste
- Extracted text is editable before saving
- Auto-detects Chinese/English from JD
- All AI output matches the JD language
git clone https://github.com/YOUR_USERNAME/jobtracker.git
cd jobtrackernpm installRuns
setup-libs.shautomatically via postinstall. You can also runbash setup-libs.shdirectly if you prefer not to use npm.
- Open
chrome://extensions - Enable Developer mode (top right)
- Click Load unpacked → select the
jobtrackerfolder - Pin the extension to your toolbar
- Go to console.anthropic.com and create an API key
- Open extension → Settings → paste your key and click Save
- Cost: Claude Haiku is very cheap (~$0.25/MTok). Typical usage is a few cents per interview prep run.
- Go to Google Cloud Console
- Create a new project → enable Gmail API
- Create OAuth 2.0 credentials (type: Web Application)
- Add the redirect URI shown in extension Settings (click the code block to copy)
- Copy the Client ID → paste into extension Settings → Save
- Click "Sync Gmail" in the popup to authorize and start scanning
Navigate to any supported job listing page and click the JobTracker popup → Save Job. The extension scrapes the JD automatically.
Click any job card in the popup → select the new status from the dropdown.
Open any saved job → click Interview Prep. The analysis runs automatically (30–60 seconds). Results are cached — reopen instantly next time.
To regenerate with fresh AI output, click ↺ Regenerate in the prep page header.
Settings → Resume section → drag & drop or click to upload PDF/Word, or paste text directly.
- All job data is stored in
chrome.storage.localon your device - Gmail token is stored locally and never sent to any third-party server
- AI calls go directly from your browser to Anthropic's API using your own key
- Resume text is stored locally only
- Removing the extension deletes all data
| Layer | Choice |
|---|---|
| Extension | Chrome MV3, ES Modules (no build step) |
| AI | Claude Haiku (claude-haiku-4-5-20251001) |
| Gmail | Gmail REST API v1 + OAuth via chrome.identity |
| PDF parsing | pdf.js 3.x |
| Word parsing | mammoth.js |
| Storage | chrome.storage.local |
| Site | Auto-scrape |
|---|---|
| LinkedIn Jobs | ✓ |
| Indeed | ✓ |
| Glassdoor | ✓ |
| Greenhouse | ✓ |
| Lever | ✓ |
| Workday / myWorkdayJobs | ✓ |
| eFinancialCareers | ✓ |
| Other sites | Generic fallback |
- Export to CSV / Notion
- Follow-up reminder notifications
- Notes field per application
- Chrome Web Store release
- Firefox support
PRs welcome. For large changes, open an issue first to discuss the approach.
src/
popup/ # Main popup UI
settings/ # Settings page (API keys, resume)
interview-prep/ # Interview prep full-page view
utils/
ai.js # All Claude API calls
gmail.js # Gmail OAuth + email parsing
storage.js # chrome.storage wrappers
scraper.js # Job page scraper (injected)
i18n.js # UI strings (zh/en)
lib/ # Optional vendor libs (see setup-libs.sh)
MIT — see LICENSE