The Fire Remembers / Editorial automation / 2026
Carrying story review decisions into episode briefs.
A four-workflow n8n prototype turns source text and declared permissions into structured ledgers and briefs, keeping blocked, review and ready outcomes available to later stages.
- ROLE
- Software engineering
- STATE OF THE BUILD
- Prototype
- RECORD UPDATED
THE WORK
The project.
The Fire Remembers turns a story intake into a structured Story Ledger and EpisodeBrief without dropping the decisions attached to the source. Required fields, provenance, declared rights and caution flags travel with the text, so a later stage can distinguish material that is blocked from material that can be developed for review. Producing a brief doesn't automatically make it ready for a script.
I built this phase as four independently callable n8n workflows using JavaScript templates and three demo fixtures. That makes the sample transformations repeatable without a model call or database service. It also exposes where entry checks need to agree: the brief compiler currently misses an explicit adaptation_allowed=false flag that an earlier stage rejects. The prototype establishes the data flow; broader extraction and consistent eligibility checks remain unfinished.
IMPLEMENTATION
Design choices.
- Blocked and review outcomes return as structured data. A caller can retain material for review without interpreting a generated ledger as permission to continue into script production.
- Provenance, declared rights and cautions stay with the source. Later stages can repeat eligibility checks instead of trusting that intake already ran. Those checks still need aligning, and they evaluate supplied metadata rather than independently verifying permission.
- Templates supply the transformations in this foundation. The sample behavior can be inspected without provider calls, while the limitation stays clear: recognizing three scenarios isn't general extraction from arbitrary stories.
- Storage candidates describe proposed records without persisting them. Record construction can be checked independently of a write adapter, but database transactions, retries and recovery of saved state aren't implemented in this phase.
HOW IT FITS TOGETHER
Architecture.
- Manual intake validates required story fields and normalizes source and declared-rights labels. It returns text with provenance, caution flags and an explicit decision to block, hold for review or continue, giving later workflows more than a successful or failed request.
- The Story Ledger builder receives that structured result and uses JavaScript keyword branches and editorial templates to organize the sample material. Its entry checks can reject work before ledger construction, including an explicit stop or blocked adaptation status.
- The EpisodeBrief compiler accepts the ledger and returns either a review brief or one marked ready for a script. Its rights and top-level blocked checks don't yet enforce the same adaptation flag as the ledger, which matters because callers can enter stages independently.
- The demo orchestrator supplies three fixtures and connects the stages. Each result can include a storage_candidate describing a proposed record, but the current phase neither persists it to a database nor calls a model for generation.
Explore the architecture map8 components · 11 connections
Deterministic source, ledger and brief contracts
The demo connects three reusable workflows; each returns structured data without model or database calls.
Inputs and orchestration
Editorial transformations
Structured outputs
Scroll or drag the background to move. Use the zoom buttons to resize.Arrow keys move between components. Enter selects.
Choose a component to explore
Select a numbered component on the map or use the component menu. Its details and connections will appear here.
No component selected.
All connections (11)
- 01 · Demo workflow → 03 · Source normalizerFixture envelope · Direct call
- 02 · Manual source input → 03 · Source normalizerManual envelope · Direct call
- 03 · Source normalizer → 04 · Story Ledger builderNormalized eligible source · Direct call
- 03 · Source normalizer → 06 · Blocked resultBlocked input · Blocked / denied
- 04 · Story Ledger builder → 05 · EpisodeBrief compilerLedger envelope · Direct call
- 04 · Story Ledger builder → 06 · Blocked resultRejected entry state · Blocked / denied
- 05 · EpisodeBrief compiler → 06 · Blocked resultRejected brief input · Blocked / denied
- 05 · EpisodeBrief compiler → 07 · Review resultReview brief · Direct call
- 05 · EpisodeBrief compiler → 08 · Brief and storage candidateReady brief · Direct call
- 07 · Review result → 01 · Demo workflowStructured return · Response / return
- 08 · Brief and storage candidate → 01 · Demo workflowStructured return · Response / return
MADE WITH
n8n · JavaScript · Structured JSON
CHECKS & RESULTS
What was checked.
A source review shows what the code does. It is not a fresh test of the running app.
Code and development records reviewedReviewed
The code, tests and available development records were checked. Reported test results keep their original scope. No fresh app or live deployment check was run for this write-up.
- Scope of this check
- Code review, not a fresh run of the app
NEXT
Still to work through.
The prototype gives review decisions a usable shape throughout the sample pipeline. Before extending extraction, I'd make adaptation_allowed=false stop the same work at every entry point and test contradictory flags and wrong field types. The three fixtures are too narrow to establish general story handling, and they weren't executed during this review.