JobPilot
One-click auto-apply across LinkedIn, Naukri, Workday and more.

Solo build: extension, backend and automation
Applying to jobs is soul-crushing repetition: the same resume fields, typed into a hundred slightly-different forms across LinkedIn, Naukri, Workday, Greenhouse and Lever.
Queue jobs from a dashboard; a Manifest V3 service worker picks them up, opens each in a background tab, injects platform-aware content scripts, maps the form to your resume data, and submits, while the server harvests fresh listings on a schedule.
Under the hood
Panel Automation Kernel
A shared automation core that does deep Shadow-DOM traversal (deepQuerySelectorAll), heuristic apply-surface scoring, and MutationObserver-based stability gating, so it waits for the real form to settle instead of racing it.
React-safe form filling
Fields are matched to resume data by regex maps, then set with native value setters and synthetic React events so controlled inputs actually register the change. LinkedIn Easy Apply is driven through its Shadow-DOM modal stepper; Naukri falls back to a contenteditable chatbot flow.
Scheduled scraping with Playwright
A server-side Playwright (chromium) service harvests LinkedIn and Naukri listings on a node-cron schedule and via a GitHub Actions workflow, persisting sessions so the queue always has fresh jobs.
AI-answered screening questions
Free-text screening questions are answered through OpenRouter (OpenAI-compatible) using the candidate's profile as context, with a graceful fallback.