AI-powered job search pipeline built on opencode. Evaluate offers, generate tailored CVs, scan portals, negotiate offers, and track everything -- powered by AI agents.
Paste a job URL. Get a scored evaluation, tailored CV, and tracked application โ in seconds.
npx --package=job-forge create-job-forge my-job-search
cd my-job-search
npm install
opencodeThe scaffolded opencode.json already has the Geometra MCP (browser automation + PDF) and Gmail MCP (reading replies) wired up โ they launch automatically the first time opencode starts. npm install also materializes symlinks for every supported agent harness โ OpenCode, Cursor, Claude Code, and Codex โ so you can run opencode, cursor, claude, or codex in the same project and each picks up the shared MCP config and instructions.
Then fill in cv.md, config/profile.yml, and portals.yml with your personal data, paste a job URL into opencode, and JobForge evaluates + tracks it.
Upgrade later: npm run update-harness (pulls latest job-forge from npm, re-syncs symlinks, prints the resolved version)
Full setup guide and alternative install paths (including contributing to the harness itself): docs/SETUP.md.
JobForge turns opencode into a full job search command center. Instead of manually tracking applications in a spreadsheet, you get an AI-powered pipeline that:
- Evaluates offers with a unified 10-dimension weighted scoring system
- Generates tailored PDFs -- ATS-optimized CVs with anti-AI-detection writing rules
- Scans portals with fuzzy dedup (catches reposts with new URLs)
- Processes in batch -- evaluate 10+ offers in parallel with sub-agents
- Tracks everything with pipeline integrity checks and canonical state management
- Manages follow-ups -- timing-based nudges so you never miss a window
- Learns from rejections -- pattern analysis across all rejections by stage, archetype, and score
- Negotiates offers -- structured comp breakdown, leverage assessment, counter-offer strategy
Important: This is NOT a spray-and-pray tool. The whole point is to apply only where there's a real match. The scoring system helps you focus on high-fit opportunities instead of wasting everyone's time. Always review before submitting.
| Feature | Description |
|---|---|
| Auto-Pipeline | Paste a URL, get a full evaluation + PDF + tracker entry |
| Unified Scoring | 10 weighted dimensions, consistent across all modes, with calibration anchors |
| Anti-AI-Detection CVs | Writing rules that avoid ATS filters on Indeed, LinkedIn, Workday |
| 6-Block Evaluation | Role summary, CV match, level strategy, comp research, personalization, interview prep (STAR+R) |
| Interview Story Bank | Curated bank of 10-12 stories with match counts, archetype tags, and automatic pruning |
| Follow-Up System | Timing-based nudges: Applied 7+ days ago nudge, Interviewed 1 day ago thank-you note, email scanning via Gmail MCP |
| Gmail Integration | MCP server configured to retrieve emails for interview callbacks, offer responses, and application status updates |
| Rejection Analysis | Captures stage + reason, surfaces patterns (archetype gaps, scoring miscalibration) |
| Offer Negotiation | Total comp breakdown, equity valuation, leverage from pipeline, counter-offer scripts |
| Deep Research | Company research that feeds back into scores and interview prep |
| Smart LinkedIn Outreach | Reads evaluation reports to craft targeted messages using top proof points |
| Portal Scanner | 45+ companies pre-configured with fuzzy dedup for reposts |
| Batch Processing | Parallel evaluation with opencode run workers, with honest verification flagging |
| Pipeline Integrity | Automated merge, dedup, status normalization, health checks |
| Cost-Aware Agent Routing | Three subagents (@general-free, @general-paid, @glm-minimal) with per-task model tiers. On OpenCode, JobForge mixes native free models with free OpenRouter routes so the harness stays no-cost without forcing every task through the same provider. See Subagent Routing in AGENTS.md for the task-to-agent mapping. |
| Automatic Model Fallback | When a model rate-limits or 5xx's, @razroo/opencode-model-fallback rotates the agent through a configured fallback_models chain and replays the request. JobForge's OpenCode defaults stay on free models for both primaries and fallbacks. |
| Token Cost Visibility | job-forge tokens --days 1 for per-session breakdown; job-forge session-report --since-minutes 60 --log to flag sessions over budget and append history to data/token-usage.tsv. Auto-logged after every batch run. |
/job-forge โ Show all available commands
/job-forge {paste a JD} โ Full auto-pipeline (evaluate + PDF + tracker)
/job-forge scan โ Scan portals for new offers
/job-forge pdf โ Generate ATS-optimized CV
/job-forge batch โ Batch evaluate multiple offers
/job-forge tracker โ View application status
/job-forge apply โ Fill application forms with AI
/job-forge pipeline โ Process pending URLs
/job-forge contact โ LinkedIn outreach (uses evaluation report)
/job-forge deep โ Deep company research (feeds back into scores)
/job-forge followup โ Check what needs follow-up action
/job-forge rejection โ Record/analyze rejection patterns
/job-forge negotiation โ Structured offer negotiation
/job-forge training โ Evaluate a course/cert
/job-forge project โ Evaluate a portfolio project
Or just paste a job URL or description directly -- JobForge auto-detects it and runs the full pipeline.
The system is designed to be customized by opencode itself. Modes, archetypes, scoring weights, negotiation scripts -- just ask opencode to change them: "Change the archetypes to backend engineering roles", "Add these 5 companies to portals.yml", "Update my profile with this CV I'm pasting".
You paste a job URL or description
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ Archetype โ Classifies: LLMOps / Agentic / PM / SA / FDE / Transformation
โ Detection โ
โโโโโโโโโโฌโโโโโโโโโโ
โ
โโโโโโโโโโผโโโโโโโโโโ
โ A-F Evaluation โ Match, gaps, comp research, STAR stories
โ (reads cv.md) โ Unified 10-dimension scoring model
โโโโโโโโโโฌโโโโโโโโโโ
โ
โโโโโโผโโโโโ
โผ โผ โผ
Report PDF Tracker
.md .pdf .tsv
โ
โโโโโโผโโโโโ
โผ โผ โผ
Apply Follow Negotiate
up (if offer)
Your personal project (after npx --package=job-forge create-job-forge my-search):
my-search/
โโโ package.json # depends on "job-forge": "^2.0.0" (npm registry)
โโโ opencode.json # thin config โ enables MCPs + states.yml
โโโ cv.md # your CV (personal)
โโโ article-digest.md # your proof points (optional, personal)
โโโ portals.yml # companies to scan (personal)
โโโ config/profile.yml # your identity, target roles (personal)
โโโ data/ # applications, pipeline, scan history (personal, gitignored)
โโโ reports/ # generated evaluation reports (personal, gitignored)
โโโ batch/{batch-input,batch-state}.tsv, tracker-additions/, logs/ # personal
โโโ AGENTS.md # personal overrides (opencode + codex)
โโโ CLAUDE.md # personal overrides (Claude Code), @-imports CLAUDE.harness.md
โ
โ # โ symlinks into node_modules/job-forge/, regenerated by postinstall sync.mjs
โโโ AGENTS.harness.md # โ harness instructions (loaded via opencode.json)
โโโ CLAUDE.harness.md # โ harness instructions (imported from personal CLAUDE.md)
โโโ .mcp.json # โ Claude Code MCP config
โโโ .codex/config.toml # โ Codex MCP config
โโโ .cursor/mcp.json # โ Cursor MCP config
โโโ .cursor/rules/main.mdc # โ Cursor always-apply rule
โโโ .opencode/skills/job-forge.md # โ skill router
โโโ .opencode/agents/ # โ @general-free, @general-paid, @glm-minimal
โโโ modes/ # โ _shared.md + skill modes
โโโ templates/ # โ states.yml, portals.example.yml, cv-template.html
โโโ batch/batch-prompt.md # โ batch worker prompt
โโโ batch/batch-runner.sh # โ parallel orchestrator
โ
โโโ node_modules/job-forge/ # the harness (from npm: `job-forge@2.x`)
Symlinks are regenerated on every npm install via the package's postinstall hook. You never have to know about harness internals โ just edit cv.md, portals.yml, and config/profile.yml.
The harness itself (this repo, what gets published as job-forge on npm):
JobForge/
โโโ iso/ # โ SOURCE OF TRUTH for harness configuration
โ โโโ instructions.md # โ AGENTS.md + CLAUDE.md (Claude Code / Codex / Cursor)
โ โโโ mcp.json # โ .mcp.json + .cursor/mcp.json + .codex/config.toml + opencode.json
โ โโโ agents/*.md # โ .opencode/agents/*.md (general-free, general-paid, glm-minimal)
โ โโโ commands/job-forge.md # โ .opencode/skills/job-forge.md
โ โโโ config.json # per-harness top-level extras (e.g. opencode `instructions` array)
โ
โโโ package.json # bin: job-forge, create-job-forge; prepack runs iso-harness
โโโ bin/
โ โโโ job-forge.mjs # CLI dispatcher (merge/verify/pdf/tokens/sync/...)
โ โโโ sync.mjs # postinstall: creates symlinks in consumer project
โ โโโ create-job-forge.mjs # scaffolder
โโโ modes/ # _shared.md + 16 skill modes
โโโ templates/ # cv-template.html, portals.example.yml, states.yml
โโโ config/profile.example.yml # template for consumer's profile.yml
โโโ batch/{batch-prompt.md,batch-runner.sh} # batch orchestrator
โโโ scripts/
โ โโโ token-usage-report.mjs # opencode cost analyzer
โ โโโ release/check-source.mjs # version gate for npm publish
โโโ tracker-lib.mjs / merge-tracker.mjs / dedup-tracker.mjs / verify-pipeline.mjs
โโโ normalize-statuses.mjs / generate-pdf.mjs / cv-sync-check.mjs
โโโ dashboard/ # optional Go TUI
โโโ fonts/ # Space Grotesk + DM Sans (for PDF)
โโโ docs/ # architecture, setup, customization
โโโ .github/workflows/ # quality.yml + release.yml (CI publish to npm)
All per-harness config trees (.opencode/, .cursor/, .claude/, .codex/, CLAUDE.md, AGENTS.md, .mcp.json, opencode.json) are generated from iso/ by @razroo/iso-harness and gitignored in this repo. npm run build:config regenerates them locally; prepack regenerates them into the tarball at publish time so consumers get everything pre-baked.
Index and cross-links: docs/README.md.
- Setup โ both install paths, profile, CV, portals, verify, token tracking, troubleshooting
- Architecture โ package architecture, modes, evaluation flow, batch runner, pipeline scripts
- Customization โ archetypes, scanner keywords, CV template, states, customizing symlinked modes
- Model Routing โ the three cost-tiered subagents, why the architecture exists, and how to swap models or add your own
- Contributing โ branch workflow, quality gate, and ideas for PRs
MIT

