---
description: Job Description Analyzer — the engine of the filter-don't-spray pattern. Reads a JD URL or pasted text, scores it A-F across 6 axes (archetype/fit/positioning/comp/tailoring/interview), produces a structured fit report and tailoring plan. Skip anything <4.0. Triggered by 'analyze this job', 'is this worth applying to', 'score this JD', or any URL pointing at a job listing.
---

# personal-jd-analyzer

The single most important skill in the job-hunt suite. **Filter, don't spray.** Scoring every JD before deciding whether to apply is what separates effective hunts from "I sent 200 applications and got 3 callbacks."

## Trigger phrases

- "Analyze this job: [URL]"
- "Is this worth applying to?"
- "Score this JD"
- "Should I apply to [role/company]?"
- Pasted JD text + "what's your read?"
- A LinkedIn / Greenhouse / Lever / Workable URL

## Inputs

- JD URL (preferred) OR pasted JD text
- Master CV at `~/.career/master-cv.md`
- Voice profile at `~/.career/voice-profile.md`
- STAR bank at `~/.career/star-bank.json` (if exists)
- Prior application history (`~/.career/applications/`)

## Process

### Step 1 — Fetch and parse (Tier 2 sub-agent, Haiku)

Delegate to `research` sub-agent: fetch JD URL, extract:

- Company name, role title, location, remote/hybrid/onsite
- Salary range (or "not disclosed")
- Required vs nice-to-have skills (count each)
- Years of experience expected
- Tech stack mentioned
- Reporting line / team structure clues
- Application instructions (recruiter email, ATS, special steps)

### Step 2 — Score the 6 axes (Tier 4 main, Opus)

This is the judgement work. Stay in main session.

**Axis 1 — Archetype fit** (1-5)
Does Josh's experience map cleanly to the role's archetype? CSM Director, Solutions Architect, Sales Engineer, DevRel, Founding CSM, Engineering Manager, IC Eng — each archetype rewards different signals. Score 5 = perfect match, 1 = wrong species.

**Axis 2 — Skill fit** (1-5)
Of the required skills, what % does Josh hit? Required + nice-to-have weighted (required = 2x). Score 5 = ≥80% required hit, 1 = <30%.

**Axis 3 — Positioning** (1-5)
Can Josh tell a coherent story for why he's applying? Score 5 = obvious narrative ("Cloudflare CSM with platform/automation depth → senior CSM at infra-platform startup"), 1 = unclear pivot, hard to explain why him.

**Axis 4 — Comp signal** (1-5)
Does the comp band (or signal of band, given Levels.fyi / Glassdoor / company stage) meet Josh's floor? Score 5 = above floor with upside, 1 = clearly below floor.

**Axis 5 — Tailoring effort** (1-5, INVERTED — high score = LOW effort)
How much rework is the resume + cover letter going to take? Score 5 = master CV needs minimal tweaks, 1 = wholesale repositioning needed.

**Axis 6 — Interview-prep effort** (1-5, INVERTED)
How much technical/specialty prep is needed? Score 5 = standard CSM behaviorals + a coffee chat, 1 = system-design rounds + take-home + 5 stages.

**Total: average of 6 scores. Rule: skip anything <4.0 unless Josh manually overrides.**

### Step 3 — If ≥4.0, produce the application package plan

For passing JDs, output a structured tailoring plan:

```markdown
# JD Analysis: [Company] — [Role]

**URL:** [url]
**Date analyzed:** YYYY-MM-DD
**Scoring summary:** [Total/5.0] — RECOMMEND APPLY / RECOMMEND SKIP

## Scores

| Axis | Score | Rationale |
|---|---|---|
| Archetype fit | x/5 | ... |
| Skill fit | x/5 | x/y required, x/y nice-to-have |
| Positioning | x/5 | ... |
| Comp signal | x/5 | ... |
| Tailoring effort | x/5 | ... |
| Interview-prep effort | x/5 | ... |
| **Total** | **x/5** | |

## Positioning narrative

[2-3 sentences: how do we frame Josh for this specific role?]

## Tailoring plan

### Resume changes
- [Specific section] — [what to change, why]
- ...

### Cover letter angle
- [Hook] — [...]
- [Connection to company-specific thing]
- [Close]

### Skills to highlight (top 5, JD-keyword-aligned)
1. ...

### Skills to de-emphasize
- [Things on master CV that don't help here]

## Interview prep needed

- [Round type] — [topics likely covered] — [STAR stories that fit]

## Three sharp questions to ask

1. ...
2. ...
3. ...

## Next step

[One concrete action — usually "run /tailor-resume [slug]" or "skip and document why"]

## Open questions for Josh

- [Anything the AI couldn't determine — e.g., "Are you comfortable with the on-call expectation?"]
```

### Step 4 — Persist

Save the analysis to `~/.career/applications/{company-slug}/01-jd-analysis.md`.

Add tracker item with prefix `JOB-{NNNNN}`:

```json
{
  "id": "JOB-NNNNN",
  "type": "application",
  "company": "...",
  "role": "...",
  "status": "evaluating",
  "score": 4.2,
  "created": "YYYY-MM-DD",
  "url": "...",
  "next_action": "tailor resume",
  "due": "YYYY-MM-DD (+3 business days)"
}
```

## Output discipline

- Em-dash ban applies (this output is internal, but the recommendations propagate to future-employer-content).
- Sources cited for every claim about the company / role.
- "Open questions for Josh" section is mandatory — never invent answers.
- If the score is <4.0, the recommendation is SKIP, full stop. Don't soften it. The whole pattern depends on filter discipline.

## When to override the <4.0 floor

Manual overrides are fine but must be justified. Examples:

- "Strategic dream company even at 3.5" — fine, document why
- "Networking-driven application, not blind apply" — fine, mark as `via_referral: true`
- "Practice round before a higher-stakes interview" — fine, mark as `practice_application: true`

The default is SKIP. Override is the exception.
