Development summary
v1.9 — Vertical Intelligence & Helm Decisions shipped.
Shipped June 13, 2026: the wave that makes ChannelHelm genuinely useful for every vertical it speaks to — and turns the data it already collects into decision-grade business intelligence. Twelve vertical presets, each with a declared north-star metric. A persisted recommendation queue that joins Atlas coverage, Ledger spend, signals, and experiments into actions you accept or dismiss. Cost-per-reach ROI by topic and asset type. All deterministic — zero LLM in the decision path.
typecheck + lint + 361 tests + build cleanVerification
pnpm typecheck # tsc --noEmit — clean pnpm lint # biome — clean (326 files) pnpm test # 361 passed (50 files) pnpm build # production build — clean, /decisions route emitted pnpm db:migrate # migration 0030 applied + decisions table verified
What shipped
Verticals
- 12 presets: + coach/consultant, SaaS/startup, e-commerce, nonprofit, fitness/wellness, real estate.
- Every preset declares a north-star metric (a real collected signal) with the reasoning on record.
- Vertical scorecards on /performance lead with the north-star number.
- The weekly briefing opens with the vertical's north star + emphasized-type throughput.
Helm Decisions
- Deterministic rules over coverage, ROI, budget pace, experiments, throughput.
- 8 kinds — from "revisit this proven topic" to "this asset type costs 3× the median per reach".
- Accept promotes topics straight to the idea board; dismiss silences forever.
- Daily per-brand pass; dedupe keys make re-runs free and dismissals sticky.
Return on content
- Helm Ledger spend joined to collected reach — no new tables.
- Cost per 1k reach by topic and by asset type on /performance.
- Local-model content shows as free and ranks by reach.
- No reach ≠ free: unmeasured content is marked, not flattered.
Data model
Migration
0030_v19_decisions.sql: decisions (dcn_, unique (brand_id, dedupe_key), status open | accepted | dismissed). New job kind: helm_decisions (daily per active brand via the recurring enqueuer).Operational rules preserved
Decisions and the Briefing share the no-LLM contract — every number is verifiable arithmetic over your own data. North stars and ROI never gate anything; budgets behave exactly as in v1.8. Prompt-A/B winners are still reported, never auto-pinned. Dismissed recommendations never resurface for the same key. Brands without a vertical see zero behavior change anywhere.