Plot holes

Looks for places where the story contradicts itself in time (Tuesday before Monday) or where things that should still exist — a character, an object, a wound — quietly vanish without explanation.

plot-holes report card

What it measures

The analyzer builds an entity timeline by walking your manuscript in reading order and tracking three kinds of facts as they're established: characters (with their attributes — alive/dead, injured/healed, family relations, occupation, age); objects (with their state — locked/open, present/lost, described condition); and temporal anchors (dates, days of the week, "three days later", "the following spring"). Each fact carries the paragraph reference where it was set.

It then re-walks the manuscript and, for every subsequent reference to one of those entities, asks whether the new reference is consistent with the accumulated state. If chapter 5 says Ada is an only child and chapter 14 has Ada mention her younger brother Owen, that's a flagged pair. If a locked drawer is picked open in chapter 5 and described as "still unopened" in chapter 9, that's a flagged pair. If a storm arrives on Tuesday and the next morning is described as Monday, that's a flagged pair.

The output is a causality score on a 0–100 scale (100 = no detectable contradictions, 50 = several worth reviewing, below 50 = the manuscript is drifting) and a list of specific logical gaps, each with the two paragraph references, the entity in question, and a short "why this looks inconsistent" note. The card also surfaces a dead characters list when it detects characters explicitly killed off — useful because "dead character returns" is a specific class of continuity break the analyzer catches with high confidence.

The analyzer is looking for factual drift, not thematic inconsistency. It doesn't flag a character's mood swings, tonal reversals, or contradictory beliefs unless they're stated as facts about the world. That's the province of the LLM-based Flags pass.

Why it's useful

Continuity errors are the single most common piece of feedback readers give a first draft. Beta readers and copy editors chase them for a living. They're also the hardest to spot yourself, because when you wrote both scenes you knew which was current — your brain silently reconciles the drift as you re-read. A machine reader doesn't have that context, so it catches what your eye slides past.

The typical scenario: you rewrote chapter 5 during your second pass to add a new sibling for Ada, but you forgot that chapter 2 explicitly introduced her as an only child. Or you decided mid-draft to change a character's age from 34 to 28 and got most of the references — but missed one paragraph in chapter 8. Or the timeline compressed in revision and now Tuesday is followed by Monday. This report catches those in seconds where a manual continuity pass would take an afternoon per chapter.

The complement is Worldbuilding stability — same idea, but for the rules of a fictional world rather than the facts about characters and objects. Both cards catch different kinds of drift and both are worth running before you send a draft out. Flags also does an LLM pass over the same manuscript looking for continuity errors from a different angle (semantic rather than fact-based); the overlap is small and both catch things the other misses.

How to read it

The card opens with two stat tiles: causality (the 0–100 score, colored green if 80+, amber if 50–79, red if under 50) and flagged (the count of logical gaps found — colored green if 0, red otherwise). Below the tiles is a thin colored bar showing the causality score as a fill percentage. Underneath that is the Logical gaps list.

Each gap is a red-swatched card in the list. The heading of each card is the contradiction type (e.g. "Character sibling count changes", "State reverts without explanation", "Day-of-week continuity"). Below the heading are one or two paragraph references marked with a ◆ diamond — the two positions in the manuscript that contradict each other, each with a short quote or description of what was said. Click either reference and the editor jumps to that paragraph in the prose, letting you compare the two positions side by side.

A Dead characters chip list appears at the bottom only if the analyzer detected explicit deaths — those are surfaced separately because "dead character reappears" is such a specific class of bug that the panel calls it out on its own. The collapsed card summary in the reports rail shows a headline like "3 flagged · score 62" so you can see the state of continuity at a glance without expanding.

Read each gap by asking one question: is this drift you actually intended, or drift that sneaked in? Real contradictions get fixed by editing one of the two paragraphs. Intended arcs — a character who was declared dead but is now revealed alive as a plot beat — get dismissed by simply moving on. The report doesn't force you to resolve anything; it just tells you what to look at.

When to ignore it

False positives are common when a character has been through a life-changing event mid-book. The analyzer sees the "before wound" and "after wound" states as contradictions even when the wound in between is exactly what your plot is about. Same with a character who fakes their death and comes back, a location that gets rebuilt, an object that gets destroyed and replaced with a copy. Read each flag and dismiss the ones that reflect an intended arc, not a mistake — the report is a fact-checker, not a plot editor, and it can't tell whether a contradiction is deliberate.

Books with multiple POVs or unreliable narrators will also generate more noise, because a fact stated by an unreliable narrator in chapter 3 might be legitimately overturned in chapter 10 without being an error. If your book leans on that device, expect the causality score to sit lower than a straightforward third-person novel would, and treat the list as a starting point rather than a checklist.

Time-loop, memory-loss, and parallel-timeline stories will produce a very long gap list — the analyzer can't tell the difference between "the storyteller is drifting" and "time is drifting on purpose." For those manuscripts the report is basically not the right tool; lean on the LLM-based Flags pass instead, which reads context more forgivingly.

How to run it

  1. Click Write in the left sidebar and open the document you want to analyze.
  2. Open the right-side rail: click the Reports button in the editor's top toolbar (the bar-chart icon).
  3. In the rail header, click the Reports tab.
  4. Scroll to the Plot holes card under the Structural heading.
  5. Click the card to expand it. First-time runs take 5–20 seconds; a spinner in the header shows while the LLM streams. Subsequent visits are cached and render instantly. Use the re-run button inside the expanded card to force a fresh pass.
  6. The card renders two stat tiles at the top — Contradictions and Chapters scanned — over a list of flagged pairs. Each row is a red-swatched card with the contradiction type (e.g. "Character sibling count changes") and two paragraph references marked with a ◆ diamond. Tap a reference to jump to that paragraph.
  • Worldbuilding stability — the same idea for invented-world rules
  • Flags — the LLM-driven continuity pass; use both, they catch different things
  • Reports — back to the panel overview