JobPilot

JobsLeaderboardDocsHow it worksGitHub
Sign inGet started
Docs
OverviewGetting startedThe PilotCampaigns & skillsEmail setupCredentialsFAQ

Campaigns & skills

A campaign is one run of the agent against a goal: find jobs, apply to them, or reach the people hiring. Skills are the units of work the agent performs. The Pilot runs all of this for you; everything below is the same work driven by hand.

You don't type skill names. After setup, every skill is dispatched by an action in the dashboard (creating a campaign, applying to a job, scanning your inbox) and the agent carries it out in the dock while you watch.

The four campaign modes

Search. The agent searches a board and scores every role against your resume, but doesn't apply. You review the ranked list on the campaign page and approve the ones worth applying to. Best when you're starting out or picky about targets.

Auto-apply. The agent searches, scores, and applies on its own, one job at a time, skipping weak matches and jobs you already applied to. It stops when the board is exhausted, you pause it, or it hits your application cap. This is what the composer opens on.

Apply. Already found the jobs yourself? Paste the links into the new campaign dialog instead of picking a board - the agent reviews fit, tailors your resume, and applies to each one in turn. No board or base resume needed.

Networking. The agent finds the hiring manager or recruiter behind a role and drafts a personalized email or LinkedIn message. Nothing is sent without your approval.

What each dashboard action runs

In the dashboardWhat the agent does
New campaign → Search (search)Searches a board and ranks every result against your resume.
New campaign → Auto-apply (auto-apply)Searches, then applies one job at a time until done, paused, or capped.
New campaign → Networking (networking)Finds the hiring contact for each role and drafts a personalized message.
New campaign on Upwork (upwork-search)Searches Upwork, filters out low-quality clients, ranks the rest.
New campaign → Apply to links (apply)Applies to each pasted job after a fit review.
Campaign → Resume (resume-campaign)Picks a paused campaign back up on its remaining approved jobs.
Campaign → Rescan skipped (rescan-skipped)Re-scores skipped jobs and promotes the wrongly dropped ones.
Campaign → Retry failed (auto-apply)Re-runs the applications that errored out.
Inbox → Scan pending (scan-inbox)Classifies new mail, matches it to applications, proposes status moves.
Networking → Regenerate (networking)Rewrites a drafted message.
Uploading a resume, or Extract from PDF (extract-resume)Parses the PDF into the structured editor.
Resume → Tailor (tailor-resume)Rewrites a resume variant against one job description.
Upwork → Proposal (upwork-proposal)Drafts a short, targeted proposal for one posting.
Upwork → Profile (upwork-profile)Improves your Upwork overview; writes back only after you approve.
Pilot → Start (pilot)Runs Pilot cycles on a loop until you stop it.

Uploading a PDF during onboarding or from the resumes list starts extraction on its own. Uploading a new PDF onto an existing resume doesn't, so that page has an Extract from PDF button (Re-extract from PDF once there's content).

The rest run on their own, mid-job. tailor-resume picks or creates the right resume variant per application, and cover-letter drafts a letter when a form asks for one. get-code pulls verification codes from your mailbox during logins, and solve-captcha handles captchas. interview drafts availability replies and builds prep sheets, review-resume leaves a suggested rewrite on the resume page after an upload, and humanizer keeps generated text reading naturally.

The one command you run yourself is setup: /jobpilot:setup in Claude Code, $setup in Codex. It installs and starts the local agent terminal, and upgrades it to the latest release when one is already installed.

Statuses

Every application has one of six statuses: applied → screening → interviewing → offer, with rejected and withdrawn as exits. The workspace shows them as a funnel with every application listed beneath it, each application page keeps a full activity timeline, and analytics aggregates the funnel across campaigns.

The inbox loop

With email connected, Sync on the inbox page pulls new mail from Gmail, and Scan pending runs the scan-inbox skill over it. The skill classifies each message (interview request, rejection, offer, and so on) and matches it to an application. Proposed status moves appear in your inbox page; approve one and the application updates. Nothing changes status without you.

Recovering a campaign

Two buttons on the campaign page, for a run that stopped and a run that skipped too much:

  • If a campaign is paused, press Resume (resume-campaign). It picks the apply loop back up on the remaining approved jobs without re-asking anything.
  • If it skipped too much, press Rescan skipped (rescan-skipped). It re-scores the campaign's skipped jobs and promotes the ones dropped for bad reasons, such as a sparse job description or a mislabeled location, back to approved. You can also select individual skipped rows and rescan just those.

Upwork

Upwork has its own three skills, because you're picking clients as much as jobs and nothing is submitted for you:

  • upwork-search filters out clients with poor hire rates, low spend, or bad ratings before ranking what's left against your profile. It saves recommendations; it never submits.
  • upwork-proposal drafts a short proposal for a specific job, written for your review before you send it.
  • upwork-profile reads your live profile, proposes an improved overview and portfolio, and writes it back only after you approve.

Next up: Email setup, so replies land on your pipeline.

JobPilot

The job search, run by your own AI agent.

© 2026 Sukhrob Ilyosbekov

ProductBrowse jobsLeaderboardDocsSign inCreate account
ResourcesGitHubChangelogArchitecture