---
description: Application Tracker — manages JOB-* prefixed items in ~/.personal/tracker.json. Aggregates application status, surfaces stale items, generates weekly hunt reports, integrates with the dashboard. Triggered by 'where am I on the hunt', '/hunt-status', 'weekly summary', or auto-runs Sunday evenings.
---

# personal-application-tracker

The status board for the active job hunt. Operates on `~/.personal/tracker.json` with `JOB-*` and `OUTREACH-*` prefixes.

## Trigger phrases

- "Where am I on the hunt?"
- "What applications are open?"
- "What's stale?"
- "Weekly hunt summary"
- `/hunt-status`
- `/hunt-week` (weekly digest)

## Tracker schema (JOB-* items)

```json
{
  "id": "JOB-00012",
  "type": "application",
  "company": "Acme Corp",
  "company_slug": "acme",
  "role": "Senior CSM",
  "role_archetype": "csm-leadership",
  "url": "https://...",
  "score": 4.2,
  "status": "evaluating | ready_to_send | sent | screening | onsite | offer | rejected | withdrew",
  "via": "direct | referral | recruiter-inbound | recruiter-outbound",
  "referral_from": "[name] or null",
  "created": "YYYY-MM-DD",
  "applied": "YYYY-MM-DD or null",
  "last_action": "YYYY-MM-DD",
  "next_action": "...",
  "next_action_due": "YYYY-MM-DD",
  "stages_completed": ["jd-analysis", "resume", "cover-letter", "applied", "phone-screen", ...],
  "artefacts": ["~/.career/applications/acme/01-jd-analysis.md", ...],
  "linked_outreach": ["OUTREACH-00034"],
  "notes": "..."
}
```

## Process — daily check

When triggered with "where am I" or `/hunt-status`:

### Phase 1 — Scan tracker

Read `~/.personal/tracker.json`. Filter to `JOB-*` items where `status not in ['rejected', 'withdrew', 'offer-accepted']`.

### Phase 2 — Categorize

```markdown
# Hunt Status — YYYY-MM-DD

## In flight ([N] active)

### Hot — action this week
[items where next_action_due is within 5 business days]

| ID | Company | Role | Status | Next action | Due |
|---|---|---|---|---|---|
| JOB-00012 | Acme | Sr CSM | onsite-scheduled | prep round 3 | 2026-05-12 (Tue) |

### Warm — in process
[items in screening/onsite without urgent due dates]

### Cool — applied, awaiting response
[applied >5 business days ago, no movement]

### Drafted but not sent
[ready_to_send for >2 days — surface as friction]

## Stale items (action recommended)

[items with no last_action update in >7 days]

For each stale item, suggest: chase / withdraw / re-evaluate

## Pipeline shape

- Total in flight: [N]
- Avg JD score (in flight): [N]
- Conversion rate so far this hunt:
  - Apply → screen: [N]/[M] = [%]
  - Screen → onsite: [N]/[M] = [%]
  - Onsite → offer: [N]/[M] = [%]

## This week's score

- New JDs evaluated: [N]
- Applications sent: [N]
- Outreach sent: [N]
- Mock interviews completed: [N]
```

### Phase 3 — Surface to Josh

Output the report in chat. If the report runs as a Sunday-evening auto-job (per the launchd plist), also save HTML version with print button to `~/.career/reports/hunt-status-{date}.html`.

## Process — weekly digest

`/hunt-week` produces the same as daily status PLUS:

```markdown
## Week-over-week trend

|  | This week | Last week | Δ |
|---|---|---|---|
| New JDs evaluated | 8 | 6 | +2 |
| Applications sent | 2 | 3 | -1 |
| Outreach sent | 5 | 2 | +3 |
| Mocks completed | 1 | 0 | +1 |
| Interviews attended | 2 | 1 | +1 |

## What worked this week

- [Pattern]
- [Pattern]

## What to do different next week

- [Specific adjustment]

## Energy / focus check

- [Any signs Josh is fatiguing — too many applications without response, mock-score plateau, etc.]
- [Recommended adjustment — fewer better applications, more outreach, take a day off]
```

## Stale-item handling

For items stale >7 days, suggest in the report:

```
JOB-00007 (Acme Inc, Sr CSM) — applied 2026-04-18, no response in 14 business days
SUGGEST: 
  - Send polite status check (use personal-networking-outreach with type=status-check)
  - OR mark as effective_no_response and move to cool storage
```

After 21 business days no response: auto-status to `effective_no_response`. Stops cluttering the active board.

## Integration with dashboard

If the personal CSM Hub Dashboard is set up locally (sync-daemon mirrors tracker.json to D1), the JOB-* items render in a dedicated "Hunt" tab.

If the dashboard isn't set up, the tracker.json + HTML reports are sufficient.

## Privacy rule

The tracker.json file may contain salary expectations, comp negotiations, recruiter contacts. NEVER commit this file to a public repo. The defensive .gitignore covers `.career/`, but verify before any public push.

## Failure modes to watch for

- **"Drafted but not sent" piling up.** If >3 items in this state, that's a friction signal — surface it as: "You have 4 applications drafted but not sent. Common cause: revising-anxiety. Suggest: send the oldest one within 24 hours or kill it."
- **Score floor drift.** If the average score of items in flight drifts below 4.0, that means Josh is applying to weaker roles than the analyzer recommended. Surface: "Average in-flight score is 3.7. Filter discipline slipping — review."
- **Pipeline starvation.** If new-JDs-evaluated drops to 0 for 7+ days during active hunt, surface: "No new JDs evaluated this week. The pipeline empties from the top — block 30 minutes for JD analysis."
