Roadmap

Where ChannelHelm is headed.

Drawn from the technical contract, shipped implementation notes, and remaining backlog. The June 4, 2026 vNext Development lane is now complete; future priorities may still shift.

Want the deep version? Detailed breakdown -> Or read the shipped batch: vNext summary ->.

v1.0 shipped Foundation pipeline · Studio Shorts · dispatch MIT open source v1.1 landing Backlog Revival re-mine old videos transcription_only hard-delete · focus trap v1.5 shipped Signal & Intelligence ✓ title/thumb A/B retention calibration copyright · sentiment v2 later Scale & Identity Shorts via YT Direct object storage speaker ID · teams
✓ SHIPPED

v1.0 — Foundation

The current base, for context.

PipelineFour understanding layers (audio · visual · fusion · intelligence) on a custom SKIP LOCKED queue with tunable worker concurrency.
StudioPer-package review: scored options, inline edit, on-demand regeneration, live pipeline status.
Shorts editorWord-snap trimming, 6 ASS subtitle animations, live no-render subtitle preview, auto-written descriptions, per-clip publishing.
DispatchYouTube Direct (per-brand OAuth), Zernio (social + clips), DojoClaw (editorial).
StorageInline Stage-1 cleanup (Option A) + post-publish archive worker (Option B).
ProvidersPluggable LLM providers with per-purpose routing + at-rest key encryption.
✓ SHIPPED

v1.1 — Backlog Revival

Re-mine an existing back catalogue with the current pipeline + prompts, so old uploads yield fresh publishing kits without re-recording. All of v1.1 has shipped.

ItemStatusWhat it does
Backlog Revival✅ shippedreviveSource clears the source's jobs and re-runs the whole pipeline in place with current prompts (defaults to the cheap transcription_only profile); assets UPSERT so dispatch history is kept. A Revive button lives on the package page.
transcription_only profile✅ shippedA fourth, cheapest profile — audio transcription only, no visual phase or diarization. The engine that makes backlog re-runs inexpensive.
Hard-delete sources✅ shippedA Delete video button removes local + archived media and nulls the paths; Postgres history kept, re-render/re-mine fail cleanly. Completes the storage lifecycle.
AI thumbnail generation✅ shippedThumbnails are AI-generated images via pluggable image providers (Runware) at /providers, with a frame-extraction fallback when none is configured. An LLM turns the analysis into visual concepts; each renders as a plain + headline-overlay variant.
Modal focus trap✅ shippedFocuses the first element on open, cycles Tab/Shift+Tab within, restores focus on close.
YouTube Direct hardening✅ shippedCSRF-safe OAuth state table (one-time state consume), encrypted refresh_token with auto-refreshed access tokens, and a Connect / Disconnect / reconnect brand card for per-brand Direct upload.
Idempotent re-renders✅ in v1.0clip_render keyed by (plan, clip) + render_rev; render-shorts.ts --force.
✅ SHIPPED

v1.5 — Signal & Intelligence (shipped)

Close the Helm Signal feedback loop: stop generating-and-forgetting; observe what performs and feed it back into generation. All of v1.5 has shipped.

ItemWhat it doesNotes
Title/thumbnail A/B routing✅ Shipped. Self-run rotation — the experiment_tick worker rotates title + thumbnail variants on the live video, reads views / impressions / CTR from the YouTube Analytics API, and applies the winner (→ positive voice example, losers negative). Native "Test & Compare" isn't in the Data API, so ChannelHelm runs the test itself.Needs the yt-analytics.readonly scope — reconnect brands.
Thumbnail feedback loop✅ Shipped. A decided thumbnail experiment writes the winning concept's image prompt to voice_examples; the thumbnail worker biases new concepts toward past winners.Closes the thumbnail half of the loop.
Sentiment-over-time curves✅ Shipped. Lexicon emotion curve over the scene log (no extra inference) — the clip planner favours high-arousal peaks and the Studio shows a sparkline.Cheap; reuses existing data.
Retention calibration model✅ Shipped. Least-squares calibration of predicted engaging-fraction → measured average view %, fit per brand from YouTube Analytics pulls; applied in analyze_intelligence (identity until enough samples).Improves as data accumulates.
Per-provider concurrency limits✅ Shipped. A max_concurrent column on llm_providers + a per-provider semaphore so a rate-limited provider isn't hammered by N worker slots.Set it in /providers.
✅ vNEXT SHIPPED

vNext — Product expansion

The June 4 Development batch moved ChannelHelm from package-only post-production toward Plan, Produce, Publish, and Channel.

ItemWhat it doesNotes
B-roll insertion✅ Shipped. Honour b_roll_enabled by compositing b-roll into rendered clips.Non-b-roll renders stay byte-stable.
Plan stage✅ Shipped. Idea Board, outlier mining, content gaps, remix scripts, scripts, script critic, and thumbnail formats.Pre-production is first-class but not dispatchable.
Publish collaboration✅ Shipped. Guest review links, frame comments, notifications, bulk operations, deliverables board, users, sessions, and brand roles.Local-first auth, not cloud SaaS auth.
Channel✅ Shipped. Embed player, M3U8, linear/FAST builder, scheduler, analytics, RTMP restream, and CTV target path.Restream failures isolated from publishing state.
GSC article signals✅ Shipped. Pull Search Console metrics for DojoClaw articles into signals when connected.Completes editorial signal collection.
YouTube Direct for ShortsUpload Shorts per-clip via the YouTube Data API, not only through Zernio.Still a v2 follow-up.
Object storageOptional S3 / R2 backend beyond the local NAS export.Local storage suffices for v1.
Speaker ID by nameReplace speaker_01 with named ID via a per-brand face/voice index.More storage + privacy considerations.
Higher dispatch-volume pathDocumented upgrade path if dispatch outgrows local bandwidth.Choose when needed.

v1.7 — Verticals & Business Intelligence (shipped)

The business layer on top of the pipeline — costs, policy, batch intake, vertical fit, and catalogue intelligence. Full guide: Command Deck -> · shipped record: v1.7 development summary.

ItemStatusWhat it does
Helm Ledger✅ shippedEvery LLM call, generated image, and render lands in an append-only cost_events ledger; per-brand monthly budgets gate new generation spend; month-to-date costs on /performance.
Helm Atlas✅ shippedTopics + entities from every package analysis indexed into a queryable /atlas explorer (zero extra LLM calls): coverage per brand, revisit candidates, one-shot topics, promote-to-idea.
Auto-approve rules✅ shippedPer-brand, per-asset-type trust thresholds; high-confidence assets skip review with an audit trail. Plans and rendered clips never auto-approve.
Bulk backlog ingest✅ shippedPaste up to 50 YouTube URLs or point at a local folder (≤25 files); per-line dedupe and outcome reporting.
Brand vertical presets✅ shippedSix presets (YouTube creator, podcaster, webinar/B2B, educator, agency client, local business) tuning default profile, prompt tone, and asset fan-out.
💡 IDEA

Ideas — unscheduled

A themed backlog of candidates. Tagged grounded (scaffolding already exists in the code) or bet (new direction), with a rough effort. ✅ shipped marks items already built straight from this backlog (extended-network generation, long-clip planning, pinned comments, the unified performance dashboard, DojoClaw article signals, comment mining, brand-voice bootstrap, multi-language subtitles).

Reach multipliers — more output from one video

IdeaWhat it isTypeEffort
Generate for the 8 un-wired networks✅ Shipped. Per-network post generation for Facebook, Pinterest, Bluesky, Threads, Reddit, Telegram, Discord & Google Business — gated by the brand's connected Zernio accounts so nothing un-shippable gets drafted.✅ shipped
Long-clip planning✅ Shipped. long_clip_plan generates horizontal highlight segments; the renderer produces rendered_long_clip and dispatch routes it to YouTube via Zernio.✅ shipped
Multi-language subtitles✅ Shipped. Translate a Short's subtitles to other languages → per-language SRT + ASS sidecar files, reusing the transcript + ASS pipeline. TTS dubbing and a burned-in per-language re-render are deferred.✅ shipped
Quote cards / carouselsShipped (v1.8). Branded quote cards from the strongest lines; manual posting for now.✅ shipped
Per-platform Short captionsTailored caption + hashtags per destination. Deferred — captions belong to clips, so better built as a short_clip_plan enhancement than standalone asset types.betM

Deeper feedback loop — extend Helm Signal

IdeaWhat it isTypeEffort
Comment mining → content loop✅ Shipped. Post-publish, on-demand: mine a video's top YouTube comments → content_ideas + faq assets, from the Studio's "Mine comments" panel. (youtube_pinned_comment already generates from the analysis; this makes follow-up content audience-driven.)✅ shipped
Best-time-to-postLearn per-platform optimal windows from the signals already collected; pre-fill the scheduler.betS–M
Unified performance dashboard✅ Shipped. A new /performance route — one cross-surface view of how dispatched/published assets performed (signals + A/B results).✅ shipped
DojoClaw + GSC article signals✅ Shipped. collect_signal combines DojoClaw article analytics with Search Console clicks, impressions, CTR, and position when a GSC connection and published article URL are available.✅ shipped
Prompt-version A/BShipped (v1.8). Prompt files compete on real view signals; reported winner on /performance.✅ shipped

Quality & trust

IdeaWhat it isTypeEffort
Prosodic analysisShipped (v1.8). Real energy + emphasis per window, computed in pure TS at transcription time.✅ shipped
Audio-event detectionLaughter / music / applause (YAMNet on the Neural Engine) — good for podcasts and a cheap local music-presence signal.groundedM
Brand glossaryShipped (v1.8). Canonical spellings in transcripts + prompts.✅ shipped
Fact-check / claim guardShipped (v1.8). Per-claim verdicts + Studio badge.✅ shipped
Music / copyright detectionFlag clips likely to carry copyrighted audio before non-YouTube syndication. A risk predictor, not a verdict — local detects music presence (~90%) not copyright status; real ID needs an opt-in fingerprint API (breaks local-first); YouTube's own Checks already cover YouTube.betM

Operator & business

IdeaWhat it isTypeEffort
Cost tracking & budgetsShipped (v1.7). Helm Ledger: per-call cost_events, COST_RATES_JSON pricing, per-brand monthly budgets, costs panel on /performance. See Command Deck.✅ shipped
Brand-voice bootstrap✅ Shipped. /brands/[id]/voice seeds voice_examples from pasted samples or the brand's existing published assets, so voice is good from upload #1 (no cold-start wait).✅ shipped
Bulk / batch ingestShipped (v1.7). Paste up to 50 YouTube URLs or scan a local folder on /sources/new; per-line dedupe + outcomes.✅ shipped
Auto-approve rulesShipped (v1.7). Per-brand thresholds on the brand form; auto-approved assets carry a payload.auto_approved audit trail.✅ shipped

v1.8 — Quality, Reach & Decisions (shipped)

All ten proposed candidates approved and shipped in one wave. Shipped record: v1.8 development summary ->.

ItemStatusWhat it does
Prosodic analysis✅ shippedReal energy_db + emphasis_words per scene-log window — pure-TS RMS/z-score pass over the audio, no new Python.
Brand glossary✅ shippedCanonical spellings applied to transcripts post-Whisper and enforced in every generation prompt.
Claim guard✅ shippedOn-demand fact-check of generated copy vs the source; per-claim verdicts + Studio warning badge.
Atlas semantic search✅ shippedLocal embeddings → "Ask your catalogue" on /atlas; hides gracefully without an embedding provider.
Quote cards✅ shippedStrongest spoken lines rendered as branded 1080×1080 cards (manual posting; Zernio image posts → v2).
Best-time-to-post✅ shippedLearned per-platform windows from the brand's own history; one-click suggestions in the schedulers.
Prompt-version A/B✅ shippedPrompt files compete on real view signals; winner reported on /performance, never auto-pinned.
YouTube Direct Shorts✅ shippedPer-clip opt-in uploads Shorts via the brand's own OAuth; falls back to Zernio when not connected.
Helm Briefing✅ shippedDeterministic weekly per-brand digest (spend, throughput, movers, coverage, experiments, health) at /briefing.
Client report links✅ shippedExpiring read-only /report/{token} page per brand — performance for clients, costs never exposed.

v1.9 — Vertical Intelligence & Helm Decisions (shipped)

Every vertical gets a real preset and a declared north-star metric; the data ChannelHelm already collects becomes a recommendation queue. Shipped record: v1.9 development summary -> · operator guide: Helm Decisions ->.

ItemStatusWhat it does
Vertical catalogue v2✅ shipped12 presets — new: coach/consultant, SaaS/startup, e-commerce, nonprofit, fitness/wellness, real estate — each with tone guidance, fan-out emphasis, and a north-star metric.
Helm Decisions✅ shippedDeterministic recommendation queue at /decisions: coverage gaps, budget pace, ROI outliers, experiment opportunities. Accept → idea board; dismiss → silenced forever. Zero LLM.
Return on content✅ shippedLedger spend joined to collected reach — cost per 1k reach by topic and asset type on /performance.
Vertical scorecards✅ shippedPer-brand north-star card on /performance, with the metric's reasoning on the card.
Vertical-aware briefing✅ shippedThe weekly digest opens with the vertical's north star and emphasized-type throughput.

v1.10 — Operator Command & Closed Loops (shipped)

One command surface across every brand, and the follow-through on v1.9 — accepting a recommendation now acts. Shipped record: v1.10 development summary -> · operator guide: Operator Command ->.

ItemStatusWhat it does
Prompt version pinning✅ shippedAccepting a prompt-A/B winner applies it — brands.prompt_pins overrides "latest" for that brand + asset type (experiments still override the pin).
Brand health score✅ shippedA composite 0–100 per brand (throughput, momentum, freshness, coverage, experiments, budget); missing data degrades gracefully.
Portfolio command view✅ shipped/portfolio: every brand on one screen — health, north star, spend vs budget, reach, open decisions; each cell links into its surface.
Decision mutes✅ shippedSilence a recommendation kind per brand, forever, from the decision card or the queue.
Experiment bootstrap✅ shippedAccepting a "start an experiment" decision drafts a title A/B from the package's real title options.
Global search + CSV export✅ shipped/search across sources, assets, topics, ideas; /performance CSV download (costs stay operator-only).
Edit-rate analytics✅ shippedHow much each asset type gets rewritten between generation and approval — reveals which prompts need work.
Vertical posting times✅ shippedBest-time-to-post falls back to per-vertical windows before generic defaults.
Decisions in the briefing✅ shippedThe weekly digest opens a Decisions section with the open count and top titles.

YouTube Command Center (shipped)

YouTube Studio, brought into ChannelHelm as a per-brand surface at /youtube. Shipped record: development summary -> · operator guide: YouTube Command Center ->.

ItemStatusWhat it does
Content manager✅ shippedYour live YouTube videos as a sortable library — edit title/description/tags/visibility in place and bulk-edit, not only before upload.
Deep analytics✅ shippedTraffic sources, geography, age×gender, devices, subscribers, revenue (when monetized), and a per-video audience-retention curve.
Comments inbox✅ shippedPublished / held / spam buckets with reply, approve, hold, spam, reject + ban, delete. Heart/pin deep-link to Studio (not API-exposed).
Captions & playlists✅ shippedManage each video's caption tracks (upload, generate-from-transcript, delete) and create/curate playlists.
Channel dashboard✅ shippedA YouTube-native home: totals, latest uploads, comments needing attention.

Needs a one-time reconnect for the force-ssl (writes) + monetary (revenue) scopes. End screens/cards, community posts, and Content-ID aren't in the public API and are out of scope.

How priorities are set

ChannelHelm is local-first and single-operator by design; the roadmap optimizes for one person turning more videos into more on-brand output with less manual work, not for multi-tenant scale. The feedback loop (v1.5) is weighted heavily because it compounds — every shipped asset that gets measured makes the next one better.

Have an idea? Open an issue on GitHub, or read the in-app guides (how it works, handbook, Shorts editor) for how the current system works.