A crew of AI agents that runs your job search while you sleep.
Seven Claude agents hunt roles, score fit, draft tailored CVs, and fill applications, then stop and wait for your approval. Self-hosted on your Firebase and your Claude. Your data never leaves your project.
π Setup guide Β· π Deploy guide Β· π€ The agents Β· ποΈ Architecture Β· β FAQ
Job searching is a full-time job: scanning boards daily, tailoring a CV per role, writing cover letters, tracking follow-ups. JobPilot turns that into a pipeline run by agents with you as the approver. The agents do the hours; you make the decisions. Nothing irreversible (submitting an application, sending a connection note) ever happens without your explicit tap in the dashboard.
| Agent | Cadence | Job |
|---|---|---|
| π§ Setup | once | Interviews you β generates your profile, market playbook, and a CV design unique to you |
| π Job Search | every 5h | Finds fresh roles on your platforms, filters against your real profile |
| π Job Analysis | every 5h | Scores fit 0β100, researches the company, writes a PDF report |
| π CV Creation | every 5h | Drafts a tailored one-page CV, asks you questions instead of inventing facts |
| βοΈ Application Writer | every 5h | Fills the whole form, screenshots it, stops before Submit |
| π€ Connection Builder | 2-hourly | Grows your LinkedIn network within strict limits; notes always approval-gated |
| π Career Advisor | daily | Mines market data for the skill gaps actually costing you matches |
| π§ Manager | 8 AM + 8 PM | Health checks, quality review, coaches the other agents |
flowchart LR
subgraph YC["Your Claude"]
A[8 agents<br/>markdown skills]
end
subgraph YF["Your Firebase"]
F[(Firestore)]
end
subgraph YB["Your browser"]
W[React dashboard]
end
A -- "MCP server<br/>(service account)" --> F
F -- "live snapshots" --> W
W -- "approvals & instructions" --> F
A -- "Claude in Chrome" --> J[Job boards & ATS forms]
A -- "Google Drive" --> D[CVs, reports,<br/>screenshots on your phone]
The repo is a monorepo:
app/ the dashboard (React 19 + Vite + Tailwind 4 + Firebase), has a zero-config demo mode
agents/ the 8 Claude agents: SKILL.md + knowledge + shared _system contracts
mcp-server/ a tiny MCP server that bridges your Claude β your Firestore
landing/ the marketing site you're probably coming from
docs/ setup guide, architecture, per-agent reference
git clone https://github.com/Mo7j/JobPilot.git
cd JobPilot
npm install
npm run dev:app # β http://localhost:5173 in demo mode (sample data, no Firebase needed)That's the demo. To run it for real (your own Firebase, your own Claude, the crew on a schedule) follow docs/SETUP.md. It's eleven steps, each with a "you know it worked whenβ¦" checkpoint, and takes about an evening.
- Approval-gated by design. Agents prepare; the owner presses the button.
APPROVAL_NEXT_STATUSin the app and theapprovalQueuecontract in the agents are two halves of the same gate. - Honesty is enforced, not hoped for. Your skills live in three tiers (strong / basic / never-claim). The never-claim tier can't appear on a CV or in an answer; any agent that's unsure has to ask you first.
- Your data is yours. No JobPilot server, no telemetry. The app and agents talk only to the Firebase project you create. See SECURITY.md.
- Unique per user. The setup agent generates your profile, your market playbook, and one of 1,000+ CV designs. No two users ship the same resume template.
- It learns. Every reject-with-reason teaches an agent. The manager coaches the crew nightly from your actual decisions.
Overview β your morning glance: pending approvals, active cases, what the crew did overnight, and where the pipeline is stuck. Light and dark themes.
| Light | Dark |
|---|---|
![]() |
![]() |
Approvals β the gate. Every drafted CV, filled application, and connection note waits here for an approve or a reject-with-reason (the reason is what the agents learn from). Applications β the pipeline as a kanban board, with a detail drawer per role.
| Approvals | Applications board | Job detail |
|---|---|---|
![]() |
![]() |
![]() |
Agents β your crew at a glance: status, cadence, run counts. Pause any agent or leave it standing orders. Insights β run reports, market trends, and the advisor's skill-gap advice. Tracker β a manual job tracker plus an offline ATS keyword checker.
| Agents | Insights | Tracker Β· ATS check |
|---|---|---|
![]() |
![]() |
Installable PWA with phone push. Add JobPilot to your home screen and turn on push, then your phone buzzes the moment an agent needs you (via Firebase Cloud Messaging, no third-party service). Setup in docs/SETUP.md Β§ 6a.
Actively maintained. Issues and PRs welcome, see CONTRIBUTING.md
(short version: npm run audit:secrets must pass, demo mode must still work).
Built by Mohammed Hijazi. It started as my own job-search automation and got rebuilt for everyone. Powered by Claude. Mascot illustrations are AI-generated for this project.
MIT, see LICENSE.






