Command reference
All commands are invoked as ./jobpilot <command> [flags] from the project root.
Discovery
./jobpilot scan
Run both scanners in parallel. Prompts you to confirm Chrome is closed before starting (India scanner needs the profile).
Writes to: outputs/<date>/jobs-raw.jsonl
./jobpilot scan-ats
Only the ATS scanner (Greenhouse/Ashby/Lever/Workable). No Chrome required.
./jobpilot scan-india
Only the India scanner. Quit Chrome first.
Scoring
./jobpilot score
Loads jobs-raw.jsonl, runs filter + heuristic + semantic scoring, writes review-batch.csv.
| Flag | Effect |
|---|---|
--no-semantic | Skip the ML step (faster — useful if sentence-transformers isn't installed) |
Status
./jobpilot status
Print all pipelines' state for today.
| Flag | Effect |
|---|---|
--date YYYY-MM-DD | Inspect a previous day instead of today |
Apply
./jobpilot apply
Opens each APPROVED URL in your default browser, 1.5s apart.
./jobpilot auto-apply
Launches visible Chromium, autofills name/email/phone/resume on Greenhouse/Ashby/Lever forms. Pauses at submit step.
Contact finder
./jobpilot find-contacts
For each APPROVED row missing Contact_Email, hit Apollo API. Saves results back to the CSV.
| Flag | Effect |
|---|---|
--company "X" | Look up one company without touching CSV |
Email drafting
./jobpilot draft-emails
Generates one draft per APPROVED row that has Contact_Email filled. Drafts saved to outputs/<date>/drafts/draft-<slug>-<date>.txt.
./jobpilot draft-one
Generate one draft outside the CSV:
./jobpilot draft-one \ --company "Razorpay" \ --name "Priya Sharma" \ --email priya@razorpay.com \ --role "SDE-2" \ --project jobpilot # pitches your jobpilot project
Sending
./jobpilot send-emails
Reads outputs/<date>/drafts/draft-*.txt. Shows each draft, asks y/n/q per email. Sends via Gmail API with resume attached.
| Flag | Effect |
|---|---|
--dry-run | Preview only — never actually send |
Inbox tracking
./jobpilot inbox
Scans your Gmail (last 14 days), matches replies to companies in your review CSV, updates the Status column. Writes a detail report to outputs/<date>/inbox-matches.csv.
Everything at once
./jobpilot run-all
Runs scan → score → status. Stops before any side-effects (apply, draft, send). Use this every morning, then review the CSV.
Operating on a different day
Most commands accept --date YYYY-MM-DD to operate on a previous day's data instead of today's:
# Inspect yesterday's pipeline ./jobpilot status --date 2026-06-27 # Re-score yesterday's raw jobs ./jobpilot score --date 2026-06-27
Help
./jobpilot --help ./jobpilot <command> --help