First Principles

The Story You Told Is Not the Story That Happened

That’s not an accusation. It’s a century-old insight. In 1925, the Russian formalists gave it a name: the gap between fabula—what happened in the story world—and syuzhet—the order in which the audience encounters it. Every flashback exploits that gap. Every cold open depends on it. Every non-linear narrative is an argument about which gap matters most. And for a hundred years, nobody built the infrastructure to represent both sides computationally. We did.

First Principles

Fabula and Syuzhet: The Oldest Problem in Narrative Theory

Fabula is what happened—the chronological sequence of events in the story world. Syuzhet is how it’s told—the order in which the audience encounters those events. The distinction is not academic. It is computational. To model a story properly, you need dual parallel indices with typed edges connecting them. When a writer introduces a flashback in Episode 15 that recontextualises a scene from Episode 3, the knowledge graph needs to represent both the story-world sequence and the narrative presentation order—and the causal, thematic, and emotional relationships between them.

This matters for production because the questions showrunners actually ask are questions about this gap. “What did the audience know at this point in the story?” is a syuzhet query. “What had actually happened by this point in the timeline?” is a fabula query. They sound similar. They are fundamentally different operations, and answering them correctly requires maintaining both indices simultaneously. Flashback impact analysis. Causal chain traversal. Audience knowledge state at any point in the narrative. These are graph operations. They require graph infrastructure. Most tools don’t even try.

We didn’t invent this framework. Gérard Genette described it in 1972. We’re the first to implement it as production-grade software.

The Diagnosis

The Infrastructure Was Never Built

Imagine a narratologist and a database engineer at the same whiteboard. The narratologist draws a diagram of fabula and syuzhet—dual temporal layers with typed connections between them. The database engineer says: “That’s a graph.” And it is. The shape of the problem and the shape of the solution have been obvious to both disciplines for decades. They just never stood at the same whiteboard.

The studios tried from their side. Netflix built its Entertainment Knowledge Graph. Disney assembled content metadata teams. But these systems were designed by engineers solving engineering problems—content classification, recommendation, search—without the narrative theory that would have told them what to model. They can tell you which actor appears in which episode. They cannot tell you why a character’s decision in Season 2 makes a storyline in Season 4 impossible. That is not a feature they lack. It is a category of question their architecture cannot represent—because narrative events with typed causal relationships, characters with temporal state, and the structural gap between telling and happening were never part of the data model.

We put both disciplines in the same room. Fabula exists because that conversation finally happened: what if you modelled fabula and syuzhet as dual temporal indices in a graph database, with every connection between events—causal, thematic, emotional—preserved as typed, queryable edges? The answer is infrastructure the industry has needed for decades.
Architecture

Spreadsheets List. Wikis Describe. Only Graphs Answer.

Consider the Doctor. Not a specific Doctor—the Doctor. A character who has changed face, personality, voice, and actor fifteen times while remaining canonically the same entity. The Tenth Doctor and the Eleventh Doctor are not different characters. They are the same Character node with different participation states. When the Eleventh Doctor references the Time War—an event the Tenth Doctor experienced, which the War Doctor fought in, which the First Doctor fled from—the graph must track continuity across incarnation. It must know that the grief the Eleventh Doctor carries in a quiet scene on Trenzalore is causally connected to a decision the Tenth Doctor made on the Crucible, which is itself a consequence of something the Time Lords did before the character had this face. That is not a metadata problem. It is a graph traversal across identity states.

It gets harder. “John Smith” is an alias the Doctor uses across multiple incarnations. John Smith in 1913 is the Tenth Doctor in a human disguise. John Smith in 2007 is also the Tenth Doctor, in a different context. But in the expanded canon, other incarnations have used the same alias. The entity resolution system must understand that John Smith is always the Doctor, even when the faces are different and the contexts are decades apart. This is the kind of problem that breaks document-shaped tools completely. A wiki page for “The Doctor” either picks one incarnation as primary or becomes an unnavigable wall of text. A graph preserves every incarnation as a distinct participation state while maintaining canonical identity across all of them.

The deepest architectural decision is the one that makes this possible: the separation of identity from state. A Character node represents who someone is—their canonical identity, their aliases, their persistent attributes. An EventParticipation represents who they are in a specific moment—their emotional state, their goals, what they did. The Doctor is one node. The Doctor has hundreds of participations, spread across incarnations, centuries of in-world time, and fifty years of broadcast history. Each participation preserves the specific state of the character at that moment without overwriting any other. Documents flatten. Graphs preserve.
What We Learned

Five Series. Five Things That Broke.

Every series we processed taught us something the previous one couldn’t. That’s why we chose them.

Doctor Who broke identity continuity. A protagonist who changes face, personality, and actor while remaining canonically the same entity forced the architecture to separate who a character is from who they are right now.

Star Trek: The Next Generation broke alias resolution. One character, seven seasons, five canonical names. The system had to learn that rank changes and cultural naming conventions don’t create new people.

The West Wing broke relationship density. Political narrative generates a web of shifting alliances so interconnected that the graph had to handle density without losing legibility.

Motherland: Fort Salem broke realist ontology. Military witchcraft and alternate history meant the system had to model rules that contradict the real world without treating them as errors.

Indiana Jones broke cinematic time. Decades of in-world history compressed into two hours, with temporal jumps the graph must represent as structure, not as gaps.

We did not choose easy material and claim generality. We chose the material that would break a brittle system, and built one that didn’t break.
Convictions

What We Believe

“A story is a web of typed relationships. A spreadsheet is a list.”

The problem is shaped like a graph. We built a graph. When the shape of the tool does not match the shape of the problem, you do not get a worse answer. You get a different category of answer—one that cannot represent the thing you are trying to manage.

“Narrative time is not audience time. Track both or track neither.”

Every flashback exploits the gap between fabula and syuzhet. A system that collapses them into one is not simplifying. It is losing information.

“The AI is the research assistant. You are the editor.”

Every extraction is editable. Every entity is mergeable. Every relationship is overridable. Narrative interpretation is not a classification task. It is an editorial judgment, and editorial judgments belong to editors.

“Hallucination is an engineering problem, not an inevitability.”

Schema constraints. Evidence grounding. Confidence gating. Contrastive resolution. Same input, same graph, every time.

“Connections between events matter as much as the events themselves.”

A character is a node. A character’s arc is a path through typed edges over time. If your tool only gives you nodes, it is giving you a cast list, not a story.

The Gap Between Telling and Happening. We Built the Bridge.

For the first time, both sides of every story—what happened and how it’s told—live in a queryable graph you can explore. Browse the live catalog and see the architecture thinking. Or read the arguments behind it.