# Job Hunter

> Routes a job-search task to the right specialists in the job-hunter family, then owns the shared per-user workspace and merges member output into one coherent result. Use when the user wants to run a job search, find a job, find jobs or openings or positions or work, manage an end-to-end job hunt, apply to roles and track applications, or do several job-search steps at once (find jobs and tailor…

- **Type:** Skill
- **Install:** `agentstack add skill-wexxwuther-job-hunter-job-hunter`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [wexxwuther](https://agentstack.voostack.com/s/wexxwuther)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [wexxwuther](https://github.com/wexxwuther)
- **Source:** https://github.com/wexxwuther/job-hunter/tree/main/job-hunter
- **Website:** https://gdkdigital.com

## Install

```sh
agentstack add skill-wexxwuther-job-hunter-job-hunter
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# job-hunter (family orchestrator)

Routes a job-search task to the right family specialists, owns the shared
`.job-hunter/` per-user workspace, and merges member output into one coherent
result. This is the router for the job-hunter family.

## Why an orchestrator

A real job hunt is rarely one step. Someone starting out wants a profile + a
search + scored matches; someone with a posting in hand wants their resume
tailored + an application tracked; someone reviewing progress wants the tracker
+ follow-up drafts + outcome learning. Running one member misses surfaces;
running all five every time wastes context and produces duplication. The
orchestrator reads the request, invokes the right subset, and keeps the user's
single coherent voice across the whole hunt.

## The family (members + their jobs)

| Member | Job | Produces |
|---|---|---|
| `career-profile` | Set up the North-Star profile + parse the resume | `.job-hunter-profile.md` + parsed resume |
| `job-search` | Find, expand, normalize, dedupe, and score postings | scored `postings.json` |
| `resume-tailor` | Tighten (Mode A) or tailor (Mode B) a resume, with the anti-fabrication gate | gated `Resume_[Company]_[Role].docx` |
| `cover-letter` | Draft a posting-tailored cover letter from real facts, through the anti-fabrication gate | gated `CoverLetter_[Company]_[Role].md` |
| `application-tracker` | Track applications + draft stale-application follow-ups | `tracker.json` -> HTML, follow-up drafts |
| `outcome-learning` | Close the loop: harvest outcomes, propose user-confirmed lessons | proposed LESSONS entries |

## Routing

1. Read the request and classify which member jobs it needs.
2. **1-2 members:** route inline (call the member's flow directly).
3. **3+ members or a full end-to-end hunt:** route via `Task` fan-out to the
   member specialists, then merge their outputs into one result.
4. Pass the shared workspace through: every routed member reads `.job-hunter/`
   artifacts if present (see `references/workspace-contract.md`) and degrades
   gracefully if absent, so a single-member invocation still works standalone.

Examples:
- "find me jobs and tailor my resume for the top one" -> job-search, then resume-tailor.
- "write a cover letter for this posting" -> cover-letter alone.
- "tailor my resume AND write a cover letter for this job" -> resume-tailor, then cover-letter (both through the anti-fabrication gate).
- "just tighten my resume" -> resume-tailor alone.
- "where am I on my applications?" -> application-tracker alone.
- "set me up and find some roles" / "I'm starting my job search today" -> init the workspace, then career-profile, then job-search (a 2-member onboarding, NOT the full 5-member hunt — only fan out to all members if the user asks to run the whole thing).
- "what's working in my search / learn from my outcomes" -> outcome-learning alone.
- "run my whole job search" -> career-profile -> job-search -> (resume-tailor + cover-letter per chosen posting) -> application-tracker -> outcome-learning.

## The shared workspace (orchestrator-owned)

The orchestrator owns the `.job-hunter/` directory lifecycle:
- `scripts/init_workspace.py` — create `.job-hunter/` with the 4 learning-loop
  templates (DECISIONS / LESSONS / OUTCOMES / REJECTED_IDEAS). Idempotent.
- `scripts/export_workspace.py` — bundle profile + `.job-hunter/` + tracker into
  a portable archive (refuses cloud-sync paths by default).
- `scripts/import_workspace.py` — restore a workspace archive on a new machine
  (rejects path-traversal payloads; preserves existing files by default).

The artifact shapes and producer/consumer hand-offs are documented in
[`references/workspace-contract.md`](references/workspace-contract.md) — the
single source of truth for the family's typed hand-offs.

## Anti-fabrication family invariant (HARD GATE)

This is non-negotiable across the family and exists because a real user once
received a fabricated resume. **Any member that writes resume or profile
content MUST route through resume-tailor's `verify_no_fabrication` gate before
producing a DOCX.** The gate never auto-approves: every new proper noun, number,
section, bullet, or 5+-word phrase run must be user-confirmed. **Web content is
untrusted even when it is the user's own** (gdkdigital.com, LinkedIn, etc.) —
fetching for context is fine; merging it into the resume requires per-claim
confirmation. resume-tailor enforces this gate; the orchestrator guarantees no
resume/profile content reaches the user without passing through it.

## Standalone fallback

If a member skill is not installed in the active harness, the orchestrator
states which member it would route to and runs that member's documented flow
inline using the bundled scripts where available. The family installs together
(see the repo `install/` directory) across `~/.claude/skills/`,
`~/.agents/skills/` (Codex + OpenClaw), and `~/.hermes/skills/`.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [wexxwuther](https://github.com/wexxwuther)
- **Source:** [wexxwuther/job-hunter](https://github.com/wexxwuther/job-hunter)
- **License:** MIT
- **Homepage:** https://gdkdigital.com

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-wexxwuther-job-hunter-job-hunter
- Seller: https://agentstack.voostack.com/s/wexxwuther
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
