EmberKiln — Brand + Rollout Plan
Locked in 2026-05-24. The Audiobook Creator Suite ships as EmberKiln, the creator-facing production side of the existing Graphene listener network.
Brand decision
Name: EmberKiln
URL: TBD — most likely graphene.fm/studio (path) or studio.graphene.fm
(subdomain). Decision deferred to launch.
Why not DreamPro:
- "DreamPro" reads creative / consumer / aspirational. Authors picking a tool to publish to Audible want trustworthy / professional — same mental category as ACX, Findaway, Reedsy.
- Audience for the DreamPro Chrome extension + Open Energy template framework doesn't overlap with audiobook publishers; bolting the suites under one brand dilutes both.
- DreamPro keeps its existing scope; the audiobook suite was the wrong fit.
Why EmberKiln:
- The Graphene listener network gives natural distribution — listeners discover Studio when they want to publish their own work.
- "Studio" is the standard naming pattern for the production-side counterpart of a media network (YouTube Studio, Spotify for Artists, Apple Podcasts Connect). Authors recognize the convention.
- Same domain = shared auth, shared payments, shared brand equity. Cheap.
Naming convention:
- User-facing surfaces (marketing pages, modals, ads, support copy): "EmberKiln"
- Internal code + technical docs: keep
audiobook-*filenames anddocs/ai/features/audiobook-suite.md— the brand is a marketing layer over the existing technical naming.
7 features shipped (Phase 0 internal-ready)
All under SuperAdminPanel on /seasons/[id], novel-mode only:
| # | Feature | PR |
|---|---|---|
| 1 | Manuscript ingest (EPUB / DOCX / PDF + cover) | (pre-session) |
| 2 | Pronunciation lexicon + 🪄 auto-suggest | #86 |
| 3 | Character voices + ✨ auto-cast | #85 |
| 4 | ACX / M4B export | (pre-session) |
| 5 | 🎧 Pre-flight audio preview | #84 |
| 6 | 🎬 Bulk chapter render with live progress | #87 |
| 7 | 🎙 Audiobook status overview card | #88 |
End-to-end flow: upload manuscript → bible bootstrap → auto-cast voices → auto-suggest lexicon → preview → bulk render → export M4B.
Rollout phases
Phase 0 — Dogfood (now, ~1-2 weeks)
- Run 2-3 real manuscripts through the full pipeline yourself
- Use Project Gutenberg public-domain books (no licensing friction)
- Goals:
- Catch wild-state bugs before customers see them
- Generate demo audiobooks for marketing
- Lock down real unit economics ($ per book in LLM + TTS + storage)
Exit criteria: 2-3 complete .m4b files we'd ship; documented cost-per-book for a typical 60k-word novel.
Phase 1 — Closed beta, 5-10 authors (4-6 weeks)
- Hand-recruit from Graphene listeners, writing Twitter, NaNoWriMo finishers
- Concierge onboarding — Sandon walks each author through personally
- Free; we eat the TTS cost
- Goal is NOT revenue. Goal is 5 finished audiobooks shipped to Audible from beta users — those become the case studies for Phase 2.
Exit criteria: 5+ beta-user audiobooks live on Audible; testimonials captured.
Phase 2 — Public beta with pricing (3-6 months out)
- Self-serve onboarding via public
/studio/new(or final URL) - Pricing model: superseded — the revenue-share / flat-per-book
sketch below was replaced by the $5/mo Graphene+ bundle + one-time
credit packs that actually shipped. See
TTS unit economics + pricing decision
for the live model, the margin math, and why we landed there.
Default: Revenue share on Audible royaltiesOption: Flat per-book fee ($N TBD)AVOID pure subscription— reversed: bundling creation into the existing $5/mo listener subscription gave the simpler marketing story ("$5/mo: listen to everything + make your own") and the lumpy-usage problem is handled by credit packs on top of a small included allotment.
Exit criteria: Steady-state of 5-10 new books/week through the system; positive unit economics on the flat-fee tier.
Phase 3 — Scale (post-validation)
- Genre voice templates (memoir / romance / thriller defaults)
- Affiliate/partnership program (Reedsy, Scrivener, writing community sites)
- ACX-fulfillment partnership (we handle Audible submission for the author)
- API for power users
Phase 1 progress
- ✅ Beta signup funnel — public landing page at
/studiowith the Audiobook Creator Suite pitch + qualifying form. Captures intake tostudio_beta_signups(migration 288) for admin review + outreach. Honeypot-protected. Companion to the existing/studio/welcome90-second tour for already-granted creators. (PR landed 2026-05-24.) - ✅ Beta-signup admin + one-click Creator grant —
/dashboard/admin/studio-signupscloses the loop: super-admins triage the signup queue (status filter + per-status counts), advance status (pending → reviewed → invited → onboarded), and grant Creator access in one click viaPOST /api/studio/beta-signups/:id/grant-creator. Granting flipsis_creator=trueon the user's profile — the existingrequireSuperAdminmiddleware already acceptsis_creator, so every audiobook-suite route is unlocked without further middleware changes. User-not-found case (signup email has no HiveJournal account yet) surfaces a "share a signup link first" hint inline. (PR landed 2026-05-24.) - ✅ Transactional invite email on grant — when admin clicks 🎁 Grant Creator, the new creator gets a personalized "you're in" email (
sendStudioGrantEmail) with links to/studio/new,/studio/welcome, and/login. Best-effort send: failure falls through, the grant still lands. Admin UI surfaces email-send status inline. (PR landed 2026-05-24.) - ✅ Public
/studio/newmanuscript upload — mirror of/dashboard/admin/manuscripts/newmounted at the Studio-branded URL so granted creators never see admin paths. Both routes shareManuscriptUploadClientwith an optionalseasonRouteForredirect prop. (PR landed 2026-05-24.) - 🔄 TTS cost tracking —
tts_call_logschema + per-call logging + per-season rollup on AudiobookOverviewCard. PR #90 awaiting merge + migration 286 apply. Required before pricing / quota. - ✅ Per-user TTS quota enforcement — hard rolling-30-day char cap per creator. Migration 289 adds
profiles.tts_monthly_char_limit(default 500k for is_creator users). Preflight check inttsSegmentthrows on over-cap; route handlers translate to a structured 429; preview modal renders a "🚦 Monthly TTS limit reached" panel with usage bar. Grant flow stamps the default limit on new beta grants. (PR landed 2026-05-24.) - ✅ Pricing + Terms + Privacy pages + acceptance gates — three new public pages (
/studio/pricing,/studio/terms,/studio/privacy) sharing a newStudioChromeheader + footer. Beta signup form requires a TOS+Privacy+rights-covenant checkbox; /studio/new requires a per-book rights-attestation checkbox. (PR landed 2026-05-24.) - ✅ Customer support surface —
/studio/helpwith FAQ + contact form + Discord placeholder. POST/api/studio/support-requestroutes tosandon@hivejournal.comvia Resend with topic-prefixed subjects; reply_to set so the human can hit reply directly.Helplink added to footer + SuperAdminPanel + welcome email. No DB queue — Phase 1 volume routes through email. (PR landed 2026-05-24.) - ✅ Creator home dashboard —
/studio/dashboardgives granted creators a real Studio home: greeting ++ New manuscriptCTA, color-coded monthly TTS usage chip, grid of their audiobooks with cover + status pill + render-progress bar. Welcome email's primary CTA flips to "Open Studio". Closes the "where do I go after grant?" gap. (PR landed 2026-05-24.) - ✅ Render-complete emails — bulk chapter audio (
render-all-chapters, 30s-15min) and M4B export (acx-export, 30s-5min) now email the season owner when they finish. NewsendStudioRenderCompleteEmailhelper instudio-notifications.tsresolves owner → email, skips on platform-owned shows / failure paths / missing API key; uses the same trackerdetailstring as the runs feed so creators see "Rendered 12/12 · 3.4hrs audio" inline. Closes punch-list item #7 partially — render-started + per-step emails deferred until creators ask (they're already watching the page when they kick off a render). (PR landed 2026-05-24.)
TTS unit economics + pricing decision (2026-05-28)
The live model is $5/mo Graphene+ (bundles listening + creating) with a small included TTS allotment, then one-time credit packs for real production. TTS (ElevenLabs) is ~80% of audiobook COGS; LLM + images are rounding error, so TTS is the only cost that has to be priced right.
Cost basis
- ElevenLabs: moved to the Business tier (~$1000/mo ≈ 11M chars)
on 2026-05-28 after the $330 Scale tier (2M chars) maxed out. Marginal
cost is now ~$0.09/1k chars (was ~$0.22/1k on the Creator tier).
The $1000 is a FIXED monthly cost shared across fleet content + all
creators — the real aggregate ceiling, now alerted in
/dashboard/admin/system-health(PR #269). - Stripe: 2.9% + $0.30 → ~$0.44 on a $5 charge, so a $5/mo sub nets ~$4.56.
- Accounting rate (
TTS_COST_CENTS_PER_KCHARintts-spend.ts) is held at a conservative 20¢/k — over-reports COGS vs the ~9¢/k marginal so the billing dashboard never under-states cost.
Credit packs (shipped PR #270 — studio-credit-packs.ts)
| Pack | Chars | Price | Rate | ~Margin (net of Stripe + ~9¢/k cost) |
|---|---|---|---|---|
| small | 100k | $50 | $0.50/1k | ~$39 (~80%) |
| large | 500k | $200 | $0.40/1k (20% volume discount) | ~$148 (~77%) |
$0.50/1k ≈ 5.5× the new marginal cost / 2.3× the old — robust enough
to cover the fixed plan at partial utilization, Stripe, non-TTS COGS, and
margin. The prior packs sold at $0.02/1k (500k for $10) — ~5–10× below
cost; every purchase lost money. Deploy note: the Stripe Price
objects behind STRIPE_PRICE_STUDIO_CREDITS_SMALL/LARGE must match $50/$200
— checkout charges the Stripe Price; cost_cents in code is only the
recorded snapshot.
The included-allotment decision: 20k (not 50k)
DEFAULT_CREATOR_MONTHLY_CHAR_LIMIT = 20k chars/mo included with the
$5/mo base (PR #270; was a free 500k, which gave away ~$45–110 of TTS per
creator — the opposite of self-sustaining). A full 8-chapter show is
~40–56k chars, so 20k ≈ 3–4 chapters / a publishable sample.
We explicitly considered raising it to 50k ("one full show free monthly"). The deciding number is the typical one-show-a-month creator (~50k chars):
| Included | Base-only margin if allotment maxed | Typical 1-show/mo creator → your margin |
|---|---|---|
| 20k (shipped) | ~$2.76/mo | $5 base + |
| 30k (middle) | ~$1.85/mo | |
| 50k | ~$0.06/mo (break-even) | fits entirely in free allotment → ~$0.06/mo |
Decision: keep 20k. At 50k, the typical creator's entire normal output fits inside the free allotment — they never hit a credit pack, and credit packs are where the ~80% margin lives. 50k doesn't shave a little margin; it gives away the credit-pack pull on the bread-and-butter creator entirely. 20k funnels real producers into packs while still covering a sample. (Pure listeners on $5/mo generate $0 TTS → ~$4.56/mo pure margin and subsidize the whole base regardless, so the blended business is healthy at any allotment — but per-active-creator profit is the lever, and 20k wins it.)
It's a one-line constant — if early adoption ever becomes the bottleneck, bumping to 30–50k is trivial; the cheap new tier leaves room. For now the stated goal is self-sustaining + profit, so it stays at 20k.
Grandfathering: lowering the default only affects new grants +
NULL-limit creators. Creators backfilled to 500k by migration 289 keep that
until re-capped via a one-off UPDATE profiles SET tts_monthly_char_limit = 20000 WHERE ....
Pre-paid-launch punch list (blocks Phase 2)
These are the only blockers — every other audiobook feature can ship later.
- Ungate audiobook routes from
requireSuperAdminto a paid-user tier - Cost tracking per user/season — new
tts_call_logtable + wrapttsSegmentto log character counts + cost. Without this you can't price, can't enforce quota, can't ship to paying users. - Quota enforcement (free preview vs paid render limits)
- Public
/studio/newmanuscript upload page (admin one exists but is super-admin-gated at/dashboard/admin/manuscripts/new) - Pricing page (doesn't exist yet)
- TOS pass: user-uploaded copyrighted manuscripts, ACX compliance disclaimers, ElevenLabs ToS passthrough, voice-cloning ethics statement
- Transactional email flow (render started / render complete / M4B ready)
- Customer support surface (Intercom widget, email, Discord — pick one)
Highest-leverage next ship: #2 (cost tracking). Everything else can be parallelized, but without per-user cost telemetry you can't price.
GTM channels worth real effort
- Reedsy partnership — owns the indie self-pub workflow; getting featured in their tool directory + email is high-leverage
- NaNoWriMo Nov 2026 — huge surge of fresh manuscripts looking for "what do I do next"; time public launch to land before then
- r/selfpublish + r/audiobooks — direct community presence, AMA-style
- Joanna Penn's Creative Penn podcast + Self-Publishing Show — sponsorships reach exactly the ICP
- Direct outreach to mid-list ACX authors paying $200-400/finished-hour to human narrators today — they're the perfect ICP (already proved willingness to pay; we're 10x cheaper at acceptable quality)
Out of scope for now (Phase 3+ deferral list)
- Multi-language TTS (English-only at launch)
- Voice consistency QA across chapters (drift detection)
- Marketing trailer auto-generation (separate from pre-flight preview)
- In-browser manuscript editor (creators bring finished prose)
- Voice cloning of the author's own voice (legal/ethical lift not worth it before product-market fit is proven)
- Audiobook-creator dashboard at
/dashboard/audiobook/[seasonId](the in-panel overview card from PR #88 covers Phase 0-2; a dedicated route is Phase 3 polish)
Related
- docs/ai/features/audiobook-suite.md — Technical deep dive on all 7 features
- docs/product/GRAPHENE_MONETIZATION.md — Broader monetization brainstorm (EmberKiln is one of the 9 options)