ChannelHelm Docs Docs index Helm Decisions Roadmap App
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 clean

Verification

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.