JobPilot is a Chrome Extension (Manifest V3) + web dashboard that helps users automatically apply to jobs on LinkedIn and Naukri.com. Jobs are queued from the dashboard, and the extension picks them up, opens each job in a background tab, fills the application using the user’s resume data, and submits.
- Live demo: https://jobpilot-wheat.vercel.app/
- LinkedIn post: https://www.linkedin.com/posts/mahijain6384_fullstackdevelopment-reactjs-nodejs-ugcPost-7453365213472661506-YRcb?utm_source=share&utm_medium=member_android&rcm=ACoAAD51zQkBjftMrwOLSw88outkeMgJX8PXkrI
- Chrome Extension (MV3): service worker orchestration + content scripts for LinkedIn/Naukri (and generic forms)
- Web dashboard (React + Vite): queue jobs and manage account/resume
- Backend API (Node.js + Express): auth, resume data, application queue, status updates
- AI Answers (OpenRouter): LLM-powered answers to application/screening questions (enable via
OPENROUTER_API_KEY)
- Frontend: React, Vite, Tailwind CSS
- Backend: Node.js, Express, MongoDB (Mongoose)
- Extension: Chrome Manifest V3, content scripts,
chrome.storage,chrome.tabs,chrome.scripting,chrome.alarms - AI: OpenRouter (optional)
jobpilot/
client/ # React dashboard (Vite)
server/ # Node/Express API
extension/ # Chrome extension (MV3)
- Node.js (LTS recommended) and npm
- MongoDB database (local or Atlas)
- Google OAuth credentials (optional if you want Google sign-in)
- Chrome (to load the extension)
cd server
npm installCreate your env file:
- Copy
server/.env.example→server/.env - Fill in at least:
MONGODB_URI,JWT_SECRET, andFRONTEND_URL - (Optional) Enable AI Answers (OpenRouter): set
OPENROUTER_API_KEYinserver/.env
Run the server:
npm run dev:serverBy default it runs on http://localhost:5000.
In a new terminal:
cd client
npm install
npm run devThis starts the dashboard (typically http://localhost:5173).
If your frontend expects an API base URL, set it via your Vite env (example):
VITE_API_URL=http://localhost:5000
- Open Chrome →
chrome://extensions - Enable Developer mode
- Click Load unpacked
- Select this folder:
jobpilot/extension
The extension communicates with:
- The dashboard (localhost during dev / your deployed site in production)
- The backend API (localhost during dev / your deployed API in production)
The client project includes a script that zips extension/ into client/public/JobPilot-Extension.zip:
cd client
npm run build:ext