jobforge

module
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 17, 2026 License: MIT

README

JobForge

A Windows-first Go CLI for running a real job search end to end — without surrendering control of any account or letting a tool send an application on your behalf.

JobForge pulls listings from public ATS APIs, ranks them against your profile with an LLM, drafts outreach through a multi-agent pipeline, schedules interviews on your Google Calendar, and watches your inbox for replies. Every state change passes a human approval gate.

What it does

  • Aggregates real jobs. Greenhouse, Lever, Ashby, and RSS out of the box; LinkedIn / Indeed / Glassdoor via opt-in headless-Chrome scrapers.
  • Ranks them. jobforge feed scores each posting 0-100 against your profile + active resume via your configured LLM, with a one-sentence rationale per job.
  • Drafts outreach. A researcher → writer → reviewer agent pipeline produces a cover-letter-style draft. You see it, edit it, and gate on y/n/e before anything saves.
  • Tracks the lifecycle. Add interviews and application deadlines to Google Calendar (OAuth Desktop client). Poll an IMAP inbox for confirmations, interview invites, rejections, and offers — JobForge classifies each via LLM and proposes status updates one by one.
  • Stays out of the way otherwise. Bare jobforge drops into an interactive REPL with a live / palette (like Claude Code's). Plain English works too: type what you want and the LLM resolves it to a command, which you confirm before it runs.

Install

Pre-built binaries for Windows / Linux / macOS on amd64 / arm64.

Windows:

iwr https://raw.githubusercontent.com/0xcryptj/jobforge/master/install.ps1 -useb | iex

Linux + macOS:

curl -fsSL https://raw.githubusercontent.com/0xcryptj/jobforge/master/install.sh | bash

Both installers download the matching binary from the latest GitHub release and put it on your PATH (%LOCALAPPDATA%\Programs\jobforge on Windows; /usr/local/bin on Unix, override with PREFIX=...).

Other paths (go install, winget, scoop, direct download, build from source): see USAGE.md → Install.

Quickstart

# one-time wizard: identity, work auth, education, job prefs, Google creds
jobforge profile setup

# pull thousands of real jobs from a curated default board list
jobforge sources seed
jobforge jobs import --all

# rank them against your profile + resume
jobforge feed

# draft outreach for the top match (id from `jobs list`)
jobforge apply --llm <id>

# (after `calendar auth`) schedule an interview
jobforge calendar add-interview <id> --when "2025-06-10 14:00" --duration 45m

# poll the inbox for replies and propose status updates
jobforge inbox poll

# or just type `jobforge` for the interactive REPL
jobforge

See USAGE.md for the full command reference, OAuth and IMAP setup, scraper-source caveats, troubleshooting, and the data-on-disk layout.

Privacy posture

JobForge is built around an explicit promise:

It never submits an application on your behalf, never sends a message from your account, and never marks remote state as read or modified behind your back.

Concretely: the apply flow saves a .txt you copy and send yourself. IMAP reads use BodyPeek so the server never sees Seen flags. Google Calendar gets only the calendar.events scope. Every state change — locally on disk, on your calendar, or in your job tracker — runs through a default-deny [Y/n] gate.

Secrets stay local: the Google refresh token and the IMAP password each live in their own file under %APPDATA%\jobforge with restrictive permissions, never logged or transmitted anywhere except the corresponding service.

The scraper-backed sources (LinkedIn / Indeed / Glassdoor) are opt-in and violate those sites' Terms of Service. JobForge stores no credentials for them; LinkedIn is scraped in guest mode only. The trade-off is real: heavy use can get your IP rate-limited or your account flagged. You own the consequences.

Status

v0.6. Builds and tests green on Go 1.23+ and Windows 10/11. The official-API source paths (Greenhouse / Lever / Ashby / RSS) are production-ready; the scraper paths are working but inherently fragile to host-site HTML changes.

License

MIT — see LICENSE.

Directories

Path Synopsis
cmd
jobforge command
internal
agents
Package agents defines the multi-agent pipeline that turns a raw job posting into a human-approvable application draft.
Package agents defines the multi-agent pipeline that turns a raw job posting into a human-approvable application draft.
approval
Package approval implements JobForge's human-in-the-loop gate.
Package approval implements JobForge's human-in-the-loop gate.
calendar
Package calendar wraps Google Calendar event creation behind a small interface so the rest of JobForge stays vendor-agnostic.
Package calendar wraps Google Calendar event creation behind a small interface so the rest of JobForge stays vendor-agnostic.
cli
Package cli wires subcommands to the underlying packages.
Package cli wires subcommands to the underlying packages.
config
Package config resolves and manages JobForge's on-disk locations.
Package config resolves and manages JobForge's on-disk locations.
inbox
Package inbox watches an IMAP mailbox for job-application updates (confirmations, interview invites, rejections, offers) and proposes status changes the user confirms before they land.
Package inbox watches an IMAP mailbox for job-application updates (confirmations, interview invites, rejections, offers) and proposes status changes the user confirms before they land.
intelligence
Package intelligence extracts lightweight skill and role signals from resumes and job descriptions.
Package intelligence extracts lightweight skill and role signals from resumes and job descriptions.
job
Package job defines the job-posting data model that the rest of the system reads, writes, and operates on.
Package job defines the job-posting data model that the rest of the system reads, writes, and operates on.
llm
Package llm is the provider-agnostic LLM abstraction the writer agent calls into.
Package llm is the provider-agnostic LLM abstraction the writer agent calls into.
profile
Package profile holds the user's personal job-search profile: who they are, what they want, and what they'll let the agents say on their behalf.
Package profile holds the user's personal job-search profile: who they are, what they want, and what they'll let the agents say on their behalf.
resume
Package resume defines the imported-resume data model.
Package resume defines the imported-resume data model.
source
Package source defines public job source configuration.
Package source defines public job source configuration.
sources
Package sources imports jobs from configured public job sources.
Package sources imports jobs from configured public job sources.
sources/scraper
Package scraper drives headless Chrome (via chromedp) to pull job listings from sites that don't expose an official API.
Package scraper drives headless Chrome (via chromedp) to pull job listings from sites that don't expose an official API.
storage
Package storage persists JobForge state as plain JSON files.
Package storage persists JobForge state as plain JSON files.
ui
Package ui provides small terminal output helpers with an optional baby-blue color theme.
Package ui provides small terminal output helpers with an optional baby-blue color theme.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL