Files
command-center/agent/managed-skills/frank-job-hunt-grilling-state/SKILL.md
T

2.8 KiB

name, description
name description
frank-job-hunt-grilling-state Resume frank-job-hunt: repo is BUILT and deployed (agents live on Dankserver, ntfy on Dankclaw); grilling closed, design v2 shipped; lists pending ops items and invariants.

Status (2026-10-11): design grilling CLOSED (design v2 signed); repo built, deployed, self-verifying.

Repo: ~/Projects/frank-job-hunt (workstation) — Gitea dank/frank-job-hunt on Dankclaw; Dankserver clone runs timers (sweep 07:30, digest 08:15, Linger=yes). Pre-commit hooks: bun test + tsc + docs-link + secret scan. Tests: 69, strict TS (no any; Records for static tables; named contract types).

Machine

  • agents/sweep.ts: registry → greenhouse/lever/ashby/workday public APIs → gates → frank-zealot score → jobs/*/inbox.json|gated.json; --dry --ats= flags; per-site fetch dedupe; per-entry error census.
  • agents/digest.ts → ntfy (ntfy.franksdank.cloud, LAN; topic secret in ~/.config/frank-job-hunt.env 600); degrades to file + exit 1.
  • agents/review.ts: funnel metrics (weekly rate 8-10, callback floor 4%).
  • agents/verify-registry.ts --write: monthly ATS-locator probe/re-attribute (14 scout mis-attributions repaired).

Truths earned in build

  • Registry truth: 21 live API sites, ~169 manual lane (vanity Workdays, self-built ATS incl. majors, neogov). Scouts' ats attribution ≈ guess — verify before trusting counts.
  • Gates do the discriminating; zealot only ranks survivors (9B inflates everything: recruiters scored 91 before family gate).
  • Gate law: role FAMILY gates unconditionally (recruiter/sales/people-ops/TPM/solutions, no infra override); topic negatives get infra-token precedence ("full-stack platform engineer" passes). Comp NEVER gated; unstated location passes to human.
  • Metro regex = Puget Sound list only (Tuolumne CA leak fixed — WA localities, no CA decoys).
  • ATS tokens: first DNS label (greenhouse.harpereng.com→harpereng); vanity workday URLs are NOT CXS-resolvable → manual lane.
  • Zealot (llama.cpp thinking model): send chat_template_kwargs:{enable_thinking:false} + max_tokens ~600; verdict in content then; reasoning_content fallback kept.

Pending (user-side / next session)

  1. Porkbun API 503'd: public A record ntfy → 71.227.227.172 still missing (LAN works; add via UI when API recovers, for off-LAN phone).
  2. Frank: phone ntfy app subscribe (topic in env file); LinkedIn CSV export → contacts/.
  3. First production digest = tomorrow 08:15; check journalctl --user -u frank-job-digest.service + phone.
  4. bg_6 (last session): full dry-sweep proof of family gate (top-10 must be engineering-only) — check agent:///proc result if pending.
  5. Resume Matcher compose (agents/resume-matcher/compose.yaml) not deployed — needs image digest pin on Dankserver.
  6. prep/ STAR/LP bank content fill (daily-loop.md scaffolded).