The Studio — the ultimate novel-writing surface (plan)
Status: planning / vision · Created: 2026-07-10
Seed: evolve the admin Lore Studio (/dashboard/admin/lore-studio) — today a one-trick "paste sources → two-host deep-dive podcast" tool — into the flagship, end-to-end novel-writing surface for external creators.
The thesis in one line: we do not build a novel editor from scratch. We unify the dozen production-grade capabilities we already ship into one cohesive author cockpit, with the story bible as the spine and JQ as the companion, so a writer goes from blank page → finished, published, monetized novel — in every format — without leaving the room.
1. Why this is mostly an assembly job, not a build
A full-codebase inventory (2026-07-10) found that the hard parts already exist and are shipped or near-shipped. The novel-writing surface is a workspace that stitches them together, not new machinery.
| Capability we already have | Where it lives | Role in the novel surface |
|---|---|---|
Manuscript = season, chapter = story_episodes.chapter_prose (the A1 decision) | WRITING_EXPERIENCE_A1.md, /studio/write/[seasonId], ProseEditorModal.tsx | The manuscript backbone — chapters, reorder, autosave, TipTap |
| Story bible / universe / lore canon (versioned, prose-grounded) | story-bible.ts, BibleReferencePanel.tsx, migrations 116/117/124 | "Consistency is free" — the moat for long works |
| JQ canon-mode agent (chat the manuscript, edit canon by talking, canon-health audit) | chat/canon-mode.ts, Chatbot.tsx | The in-manuscript writing companion/agent |
| Inline AI (rewrite / expand / continue / describe, bible-grounded, voice-matched) | InlineAiToolbar.tsx, POST /:seasonId/prose-assist | Cursor-level drafting, Sudowrite-class |
Refinement spine (takes → critique → promote, prose_versions history) | episode-takes.ts, prose-versions.ts | Deep per-chapter revision + full edit history |
| Dramatic-shape metadata (spine, stakes, three-act roles, bounded vs serialized) | chapter-spine.ts, chapter-stakes.ts, story-frameworks.ts | Structure + pacing awareness, an outline that means something |
| Multi-voice audiobook suite (cast, lexicon, music, mastering, ACX/M4B) | season-audio.ts, character-voices.ts, acx-export.ts | novel → audiobook, the most mature output |
| Hear-it-in-your-own-voice (60s clone → any passage) | lovio-voice.ts, jq-voice.ts | The emotional core: author hears their book in their voice |
| Karaoke read-along (text ↔ audio in lockstep) | ReadClient.tsx KaraokeProse | Immersive reading |
| Reverse screenplay engine (novel → Fountain/FDX, bible-grounded) | screenplay-engine.ts, screenplay-export.ts | novel → sellable script |
| Scene Studio (chapter → shot breakdown → keyframes → clips) | scene-studio.ts, SCENE_STUDIO_ARCHITECTURE.md | novel → screen (aspirational) |
| Production IR (Work→Section→Segment, one source → every renderer) | render-kit/ir/ | The fan-out engine that makes "novel → any format" one contract |
Cover / poster / album art (gpt-image-1) | season-media.ts, poster-compose.ts | One cover, reused across every output |
| Print / KDP / merch (Lulu 6×9 PDF, EPUB, Gelato POD) | lulu.ts, season-kindle-epub.ts, merch.ts | novel → paperback / ebook / poster / apparel |
| Distribution (RSS/Spotify/Apple, YouTube, ACX/KDP) | season-distribution.ts, subscriber-rss.ts | "finish → publish everywhere" |
| Commerce (Graphene+ chapter gating, Stripe Connect payouts, pre-order, credit packs) | chapter-gating.ts, creator-payouts.ts, novel-preorder.ts | Monetize paid chapters, pre-orders, sales |
| LLM shim (Claude/OpenAI, model tiers, JSON, fallback, spend attribution) | llm.ts | The engine under every AI feature |
| Odessa ethos (fiction→real-change, "write toward becoming") | ETHOS.md, odessa.ts | The art-first register the whole surface inherits |
Conclusion: the differentiator isn't any single feature — competitors have editors and inline AI. It's that one surface owns the entire arc (draft → canon → refine → hear → adapt → produce → publish → monetize), unified by a living bible and a conversational agent, in a register that is art-first rather than productivity-coaching. Nobody else has that whole column.
2. The interface — "The Studio" cockpit
A single full-page workspace (promoting today's modal-based ProseEditorModal to a first-class app). Three persistent columns under a mode-switching top bar; the right column and bottom drawer change per mode.
┌─────────────────────────────────────────────────────────────────────────────┐
│ ◈ THE STUDIO [ Work: "Escape from JaJa Island" ▾ ] ● Draft ○ Listen │
│ ○ Adapt ○ Produce ○ Publish ⌘K JQ●│
├───────────────┬─────────────────────────────────────────┬───────────────────┤
│ MANUSCRIPT │ CHAPTER 7 · "The Lattice Speaks" │ JQ · canon mode │
│ │ ▸ spine: midpoint reversal · stakes ↑ │ │
│ 1 ✓🔊 Opening │ ┌─────────────────────────────────────┐ │ "What does Mara │
│ 2 ✓🔊 … │ │ │ │ know here?" │
│ 3 ✓🔊 … │ │ The prose editor (TipTap). │ │ ───────────── │
│ … drag-order │ │ Focus mode, autosave, fonts. │ │ ▸ canon health: │
│ 7 ● current │ │ Select → ✨ Rewrite Expand Continue │ │ ⚠ 1 drift │
│ + Add chapter │ │ Describe · Ask JQ │ │ ▸ propose edit → │
│ │ │ │ │ confirm/deny │
│ ── CANON ── │ └─────────────────────────────────────┘ │ │
│ 👤 Characters │ 2,140 words · v3 · [History] [Takes] │ [ ask anything ] │
│ 🗺 Settings │ │ │
│ 🧵 Threads │ │ │
│ 📖 Lore │ │ │
├───────────────┴─────────────────────────────────────────┴───────────────────┤
│ ▾ PRODUCE DRAWER (changes per top-bar mode) — the "one story, every form" │
└──────────────────────────────────────────────────────────────────────────────┘
The five modes (top bar) — the same manuscript, five lenses
- Draft (default, shown above). Editor + bible dock + JQ companion + inline AI. Everything a writer needs to produce prose with consistency for free.
- Listen. Cast characters to voices, generate the multi-voice audiobook, hear any passage in your own cloned voice, karaoke read-along preview, adaptive score/bumpers, and a one-click "deep dive" companion podcast (today's Lore Studio, now scoped to this manuscript).
- Adapt. Reverse-screenplay this novel (Fountain → FDX/PDF), per-scene critique + fidelity rubric, hand scenes to Scene Studio for shot breakdowns / animatic.
- Produce. Generate the cover + poster; build the print-ready 6×9 PDF, the Kindle EPUB, the reel/trailer; everything reads from the Production IR, so it's one Work → many artifacts.
- Publish & monetize. Push to Spotify/Apple/RSS, KDP, YouTube; set chapter gating (Graphene+), open a pre-order waitlist, list a paperback (Lulu) or story-as-merch (Gelato); creator payouts + per-work cost accounting.
The two constants across all modes
- The Canon dock (left). The story bible is always one panel away — characters, settings, threads, lore — click a name to insert, and it's the same object every mode reads from (the prompt block for AI, the cast for audio, the character list for screenplay). This is the spine.
- JQ (right / floating). The companion is scoped to the open work and chapter. It answers grounded questions ("what did she know here?"), surfaces canon-health drift (prose vs bible), and edits canon by conversation with propose→confirm + audit trail. In later phases it becomes proactive ("Chapter 7 contradicts the thread you planted in 3").
3. Phased plan
Each phase ships standalone value; the surface is usable after Phase 1.
Phase 0 — Reframe & shell (small; mostly wiring)
- Promote the cockpit shell: a full-page
/studio/write/[seasonId]layout with the three-column frame + mode top bar. The Lore Studio "deep-dive" tool becomes the "Listen → Companion podcast" action inside it (it stops being a standalone admin page and becomes one capability of the whole). - Decide the name + relationship to the existing
/studio(EmberKiln) surface. (Open decision — see §4.) - No new engines; this is layout + navigation that unifies existing routes.
Phase 1 — Draft core (the heart)
- Full-page editor from
ProseEditorModal(TipTap onchapter_prose) + the Canon dock (BibleReferencePanel) + inline AI (InlineAiToolbar/prose-assist) + JQ canon chat (canon-mode) in one screen. - Chapter list with dramatic-role/spine/stakes badges;
prose_versionshistory + takes/critique inline. - Lift the journal composer's environment (autosave cadence, focus chrome, fonts, draft recovery) into it, per the A1 doc.
Phase 2 — Listen (highest emotional payoff)
- "Listen" mode: character-voice casting UI, chapter/whole-book render, hear-in-your-voice (Lovio clone), karaoke preview, adaptive score/bumpers, and the deep-dive companion podcast from Phase 0.
- These are all existing services; the work is a coherent mode UI over them.
Phase 3 — Produce & Publish (the fan-out)
- "Produce" + "Publish" modes surfacing screenplay/scene, cover/poster, EPUB/print/merch, distribution, pre-order, and chapter gating — all reading from the Production IR and the shared cover.
- This is where "ultimate" is earned: finish the novel and ship it as audiobook + ebook + paperback + serialized podcast + screenplay + merch from one button-set.
Phase 4 — Agentic & immersive (differentiating aspiration)
- JQ becomes a proactive writing agent (continuity warnings, "draft the next chapter from the spine," pacing nudges). Prerequisite: teach
llm.tsAnthropic tool-calling so JQ can run tool loops on Sonnet, not just gpt-4o (current shim gap). - Immersive: experience the novel in the Stream/Dome (chapters as river cards that read aloud in 3D; the Dome's roadmap-named "Write-Café 3D" scene).
4. Open decisions & known gaps (flag before building)
- Name + surface reconciliation. "Lore Studio" is a graphene-lore artifact; the ultimate surface is bigger and overlaps the existing
/studio/write(EmberKiln) creator editor. Options: (a) evolve/studio/writein place and retire Lore Studio into it; (b) new top-level "Studio" that subsumes both. Recommend (a) — build on the A1 editor that already exists; fold Lore Studio in as the "companion podcast" capability. — DONE (2026-07-10). The shim now translates OpenAI-shaped tools/messages to Anthropic (llm.tsAnthropic tool-calling is not implementedtoAnthropicTools/toAnthropicMessages/toAnthropicToolChoice, golden-tested), so a tool loop runs on Sonnet/Haiku as well as gpt-4o, and tool calls fall back across providers. JQ can now be moved to Sonnet; Phase 4's proactive agent is unblocked.- External-creator RLS / ownership. Many story-seasons/universe routes are still
requireSuperAdmin(incl.editor-chapters,/chapters,prose-assist); the A1 doc deferred external-creator RLS as "defense-in-depth." A real creator GTM needs an auth/ownership pass (season-access.tsis the seam). - Per-word audio timing for karaoke awaits ElevenLabs word timestamps (the reader interpolates by sentence char-weight today; Whisper word-sync already exists for video as the upgrade path).
- Dome
DEFAULT_ADJUSTlayout is still un-baked (the one open immersive blocker) — only relevant to Phase 4's immersive stretch. - Odessa registers the whole thing. Keep the copy + AI system prompts art-first ("write toward becoming"), not productivity-coaching — this is the brand spine and the reason to build here rather than clone Sudowrite.
5. What makes it "ultimate" (the pitch)
Every competitor owns a slice: Scrivener owns organization, Sudowrite owns inline AI, Novelcrafter owns the codex, ElevenLabs owns TTS, Vellum owns export. The Studio owns the whole arc, unified by one living bible and one conversational companion, and it's the only one that will read your finished novel back to you in your own voice and hand you the audiobook, the paperback, the screenplay, and the pre-order page in the same session — in a register that treats the novel as art, not output.
Draft → Canon → Refine → Hear → Adapt → Produce → Publish → Monetize. One room.
Related docs
WRITING_EXPERIENCE_A1.md— the manuscript-editor workstream (the Draft core)COMPETITIVE_LANDSCAPE_STORY_SOFTWARE.md— the competitive betEMBERKILN_PRODUCTION_IR_DESIGN.md/EMBERKILN_PIPELINE_ARCHITECTURE.md— the fan-out engineREVERSE_SCREENPLAY_ENGINE.md,SCENE_STUDIO_ARCHITECTURE.md— Adapt modeaudiobook-suite.md(docs/ai/features) — Listen modeJQ_CANON_KEEPER.md— the companion agentETHOS.md/ODESSA_NORTH_STAR.md— the register