Remote Job Search Starter is a Chrome extension for profile-based job search and application assistance across major job boards and curated career sites.
It can:
- collect job results from supported search pages
- open job detail or application flows one job at a time
- autofill blank application fields with saved profile data
- upload a saved resume when supported
- remember answers from previous applications and reuse them later
- pause when human verification or final review is required
- continue into supported company-site and ATS handoff flows when a board redirects externally
Important: the extension can advance and submit supported flows when a page is clearly ready, but it still pauses for human verification, missing required answers, or ambiguous review states.
Use the active tab on one of these supported sites:
- Indeed
- ZipRecruiter
- Dice
- Monster
- Glassdoor
- Greenhouse
- Built In
Opens curated startup career pages by region:
- US
- UK
- EU
Builds keyword searches for curated external sites:
- Built In
- The Muse
- Work at a Startup
- Reed
- CWJobs
- Totaljobs
- Welcome to the Jungle
- Berlin Startup Jobs
- Multiple named profiles with isolated candidate data, resume, answers, and preferences
- Search keywords entered as comma-separated or newline-separated terms
- Date-posted filtering where the target site supports it
- Resume upload support for
.pdf,.doc,.docx,.txt,.md, and.rtf - Remembered answer capture plus editable saved question-and-answer entries
- Applied-state detection to avoid retrying jobs that already look submitted
- Cross-site handoff support for direct-apply flows that move into another supported surface
- Manual-review and human-verification pauses so the run can safely resume
At a high level, the extension runs through these stages:
bootstrapcollect-resultsopen-applyautofill-form
The background service worker manages tabs, session state, and spawn limits. The content script handles page detection, result collection, apply-flow discovery, autofill, resume upload, answer memory, and manual-review pauses.
- Node.js 18+
- npm
- Chrome or another Chromium-based browser
git clone https://github.com/swan07222/Auto-apply.git
cd Auto-apply
npm installnpm run build- Open
chrome://extensions - Enable Developer mode
- Click
Load unpacked - Select the project folder
The manifest points Chrome at the built files in dist/, so run npm run build before loading or reloading the extension.
In the popup you can:
- create, rename, and delete profiles
- enter candidate basics like name, email, phone, city, state, and country
- save optional data like LinkedIn, portfolio URL, current company, and work preferences
- upload a resume
- manage saved answers and preferences
The popup lets you set:
- search mode
- date posted window
- search keywords
Keywords can be entered as a comma-separated list or one per line.
For Job Boards mode, open a supported job board in the active tab first.
For Startup Careers and Other Job Sites mode, you can start from any page. The extension opens the generated targets for the configured region and keywords.
The extension can fill fields, upload resumes, move through supported steps, and submit some flows when the page is clearly ready. If a site requires CAPTCHA, additional verification, manual answers, or a risky review state, the run pauses and lets you take over.
npm run clean
npm run build
npm run rebuild
npm run typecheck
npm run typecheck:tools
npm run typecheck:all
npm run test:unit
npm run test:unit:verbose
npm run test:coverage
npm run test:features
npm run test:ciLive Playwright smoke tests are opt-in because they hit real sites and can trigger verification pages or rate limits.
Run the default live suite:
npm run test:liveRun a filtered live suite directly:
npx playwright test tests/live.search.spec.ts --grep "Monster"The helper script sets ENABLE_LIVE_TESTS=1 automatically for npm run test:live.
src/
background.ts Main background service worker
content.ts Main content script
popup.ts Popup controller
popupDialog.ts Popup dialog controller
popupState.ts Popup state helpers
content/ Apply, autofill, DOM, search, upload, and answer helpers
shared/ Types, storage, targets, catalog, and shared utilities
public/
popup.html Popup markup
popup.css Popup styling
scripts/
build.mjs Build pipeline
run-live-tests.mjs Live Playwright wrapper
tests/
*.test.ts Vitest coverage for extension logic
live.search.spec.ts Opt-in Playwright live smoke tests
data/
startup-companies.json Curated startup company list
The extension currently requests:
storagetabsscriptingclipboardWritealarms- broad
http://*/*andhttps://*/*host permissions
Those host permissions are required because the content script needs to inspect and assist across many job boards, ATS flows, and external career sites.
Data is stored locally through the extension's storage layer and includes:
- profiles
- candidate details
- resumes
- remembered answers
- saved preferences
- automation settings
- session state
- Site layouts and application flows change frequently, so behavior is heuristic-based
- Some sites block automation with verification pages or rate limits
- Resume upload and autofill depend on the target form exposing standard controls
- Some flows still require manual answers or manual verification before submit can continue
GitHub Actions runs npm run test:ci on pushes, pull requests, and manual dispatches. Dependabot is configured to keep npm packages and GitHub Actions dependencies up to date weekly.
- Create a branch
- Make your changes
- Run
npm run test:unit,npm run typecheck, andnpm run build - Open a pull request
MIT. See LICENSE if the file is present in your branch or release packaging.