Skip to content

Belief vs fact: modeling what each character knows

Being wrong can be a plot point. Being wrong by accident isn't. How PlotLens models what each character has been told separately from what's true.

Jeremy Corbello ·

Most software treats facts as facts. In a contract, in an email, in a spreadsheet, that works fine — there’s one source of truth, and consistency means the data agrees with itself.

Fiction breaks this assumption.

In a story, the most important thing happening in a scene is often what one character believes that another character doesn’t believe yet. Hamlet is a play about a man who’s been told one thing by a ghost and is trying to figure out whether anyone else is going to find out what he’s been told. Pride and Prejudice is largely a series of conversations in which characters draw conclusions from incomplete information. The asymmetry of who-knows-what is the engine of the plot.

If a story tool flattens belief into fact, it’s missing the part that makes fiction fiction.

This post is about a feature in PlotLens that tracks what each character knows — belief-vs-fact modeling — why it exists, and what it lets you catch that a flatter tool wouldn’t.

The bug nobody talks about

Here’s a contradiction that almost no continuity tool will catch:

Chapter four, page 120. Maren tells Aldric that her father is dead.

Chapter eleven, page 280. Aldric, in conversation with someone else, says he’s not sure whether Maren’s father is alive or dead.

Is this a contradiction? It depends.

If the writer’s intent is that Aldric is uncertain, despite Maren telling him directly, that’s a deliberate character choice — maybe Aldric doesn’t trust Maren, or has reason to think she’s lying about her father. The chapter-eleven scene is correct relative to the writer’s intent.

If the writer’s intent is that Aldric believes Maren, then the chapter-eleven scene is a continuity error: Aldric’s been told, and he’s forgotten the writer told him.

A continuity tool that only tracks “facts” sees both scenes and either flags both or flags neither, depending on how it computes contradiction. Either way it’s wrong some of the time, and after enough false flags the writer stops trusting the tool.

The fix isn’t a better algorithm. It’s a different model.

What belief vs fact means

PlotLens tracks two parallel sets of state for every character:

1. Narrative facts. What’s actually true in the world of the story. The narrator (or the manuscript itself, in a tighter POV) is the authority for this layer.

2. Character beliefs. What each character has been told, has witnessed, or has reason to know — based on the scenes they’ve been in and the conversations they’ve heard.

Both layers update sentence-by-sentence as you write or revise. When you write a scene where character A tells character B that her father is dead, two things happen in the model:

  • The narrative-fact layer (probably) records that her father is dead — unless the system has reason to believe character A is lying.
  • The character-belief layer for character B records that B has been told her father is dead.

These are different. They might agree. They might not. Plot is what happens at the seams.

The thing this catches

When PlotLens runs a validation on a new chapter, the belief-vs-fact layer flags two distinct kinds of issues:

Knowledge violations. A character acts on information they haven’t been told. The classic example: the protagonist arrives at a meeting with information she could only have learned in a scene she wasn’t in. PlotLens reads the scenes the character has been in, and if she walks into chapter twelve already knowing something that was only revealed off-screen in chapter ten, the validation result will tell you the line where she demonstrates that knowledge — and the absence of the scene that should have transmitted it.

Forgotten reveals. The flip side: a character has been told something and the manuscript later treats them as if they don’t know it. (See the Aldric example above.)

In both cases, the report is precise. It tells you the scene where the knowledge should have transferred, the scene where the inconsistency surfaced, and the source sentences for both. You can click through to the actual lines and decide for yourself whether the model misread the writer’s intent or whether the writer accidentally introduced a real continuity error.

Why this matters most for thrillers, mysteries, and romances

Every fiction genre uses asymmetry of information, but three genres rely on it:

Mysteries. The detective knows things the reader doesn’t, and the reader is gradually given access to what the detective knows. Continuity errors here aren’t cosmetic — they’re the entire game.

Thrillers. Tension comes from one character knowing what’s coming and another character being unaware. If the writer accidentally lets the unaware character in on the information one chapter early, the climax loses its punch.

Romance. Especially in slow-burn romance, the will-they-or-won’t-they hinges on what each character has and hasn’t said out loud. Writers spend chapters carefully managing these states. Software that flattens them is actively harmful.

Speculative fiction (sci-fi, fantasy) inherits the same problem at series scale: who knows about the magic system, who’s met which faction, who’s discovered the prophecy. PlotLens treats every revelation as an event in a character’s belief layer, and every silence about that event as a constraint on what the character can know in later scenes.

What this looks like in the product

When you open a project in PlotLens and look at a character, you see two tabs: What’s true about them (narrative facts) and What they’ve been told (character beliefs). Both are populated automatically from the manuscript. Both have provenance — every entry links to the sentence in the manuscript where it came from.

When you run a validation, the result includes a “Knowledge state” section listing any belief-vs-fact tensions the model found. Each one has the same structure:

  • The character involved
  • What they appear to know
  • The scene that should have transmitted the knowledge (or the absence of one)
  • A snippet of the sentence where the inconsistency surfaces

You decide whether to fix it, ignore it (because it’s intentional — Aldric doesn’t trust Maren), or mark it as a deliberate dramatic-irony moment. Marked moments stop being flagged in future runs.

The principle

Most AI tools applied to writing assume the writer wants help generating words. PlotLens assumes the writer wants help keeping track of what’s true and who’s been told. Belief-vs-fact modeling is the most distinctively-fiction part of that, and the part that no general-purpose knowledge graph will get right out of the box.

Being wrong can be a plot point. Being wrong by accident isn’t.

If you want to see belief-vs-fact running on a real manuscript:

Try a validation on your work-in-progress →

— Jeremy