“I want a campaign that holds together when the players go sideways.”
A prepared campaign is a graph of things the players might discover, and most of them fall apart because exactly one route led to the thing everything else depended on. The Campaign lens makes that structure explicit enough to check — and then helps run the game once it starts.
Discoverable truths, as a graph with dependencies.
Not entity → entity relationships — entity → knowledge. What can be found out, what has to be known first, and how many distinct routes reach each thing. Once the structure is data, validation can walk it.
A revelation with one route to it is a single point of failure that fires at the table, in front of everyone, with no way to recover. The validator finds them before the session, tells you which they are, and offers to add routes. Then it lets you decline — a deliberate bottleneck is a legitimate design choice, and the tool's job is to make sure you made it on purpose.
Ten stages from premise to gap analysis.
The same staged, dependency-ordered builder as the Novel lens, tuned for play — each stage generated against everything already decided, reviewed before the next one runs.
| Stage | What it settles |
|---|---|
| Premise | What the campaign is about at the table. |
| The Truth | Three layers — the surface story, the real one, and the ultimate one. |
| Principal forces & fronts | Who is pushing, and toward what. |
| Hooks | Why these characters are here at all. |
| Revelation architecture | The graph above — the discoverable truths and their dependencies. |
| Act thresholds | What has to be true for the campaign to move up a gear. |
| Consequence matrix | What changes in the world depending on what the party does. |
| Side arcs | The material that isn't load-bearing. |
| Finale invariant | What must hold at the end regardless of route taken. |
| Gap analysis | What the skeleton is missing. |
It threads in, rather than duplicating
Ask for the world to be filled in and the system suggests existing NPCs and locations to use instead of minting near-duplicates — with a redundancy check in validation to catch the ones it missed. A campaign should accumulate a world, not a pile of interchangeable innkeepers.
Same engine, different words
A “Thread” in the Novel lens is a “Quest” here — same underlying document type, same retrieval, same weave machinery. The lens descriptor changes the word, the tree section, and the reverse-index axis label. Nothing in the engine knows the difference.
Live play is a different mode, not a chat feature.
The Narrator
An AI game master with its own system prompt, canon-precedence rules, player-driven-character rules and the project's narrator style. Not an assistant that also roleplays — a distinct mode with different behaviour.
Free-flow turn-taking
Four people talking doesn't produce four replies. Messages buffer, and the Narrator takes one turn after a lull, covering everything said since. Typing indicators extend the lull so a slow typer isn't cut off; a hard maximum wait guarantees a talkative table still gets its turn.
Dice that are deliberately dumb
XdY+Z, real randomness, and no rules interpretation whatsoever. What counts as a roll and how to
read it is the model's job, with your game-system document in context — so the roller can't be wrong about a system it was
never told about.
Voice at the table
The desktop client runs speech-to-text locally. Audio never leaves the machine — it isn't uploaded, buffered server-side, or sent to a transcription provider.
Virtual tabletop bridge
A module syncs dice rolls and character sheets from a hosted Foundry VTT instance into mechanics documents, behind a per-project API key, with a GM-only bestiary.
The Pacing Watcher
A background process that reads the recent transcript, the campaign spine, and its own prior notes, and judges whether play is on track. When it isn't, it folds a single private note into the Narrator's next turn — no approval gate, no visible interruption.
The part that makes it more than a nudge generator: it also judges whether its
last steer was followed, ignored, or redirected — so it never re-forces a direction the players
legitimately declined. Bigger ideas become drafts for out-of-play review instead. The GM can also run it on demand with
/steer.
Built · not yet proven in real play
The GM wall is architectural
GM-only material — the Truth, GM notes, whole folders — is stripped from a player's retrieval before context is assembled. It is not filtered out of the answer afterwards, and it is not merely hidden in the interface.
The difference matters: material that never enters the context window cannot be coaxed out by asking cleverly, rephrasing, or injecting instructions. A player joining by invite sees a tree that reflects what their character could know, and no amount of prompt ingenuity gets round it.
A knowledge ledger per character
A background worker watches live sessions and records what each present character has actually been exposed to. Filter the tree to what a character knows, or ask the reverse question — who knows about this document?