graph-of-claims word processor

Most AI writing tools polish prose.
Penstroke sees the structure of an argument.

As you write, Penstroke marks every load-bearing sentence as a node in a typed graph. Every citation becomes an edge. A background agent fleet checks each mark against your bibliography and the open web, flagging unsupported assertions, contradictions across paragraphs, and missing premises before you ship.

essay · penstroke
QWERTYUIOPASDFGHJKLZXCVBNM

live · penstroke is doing this right now

Detect

Haiku 4.5 classifies every claim as factual, opinion, speculation, evidence, or question. ~200ms per paragraph.

$0.001 / paragraph

Verify

Sonnet 4.6 with tool use searches your bibliography (pgvector) and the open web (Exa) to ground every claim. Background, non-blocking.

$0.01-0.02 / claim

Reconcile

When two claims contradict, an agent drafts the fix. The graph updates. The warning clears.

yellow ribbon, click to fix

architecture, briefly

  • Yjs CRDT + custom Tiptap/ProseMirror schema — prose document and claim graph stay in sync via a deterministic projection function. Mergeable both directions.
  • Apache AGE on Postgres — graph traversals, relational queries, and pgvector retrieval in one database. Single transactional consistency boundary.
  • Two-tier model routing — Haiku for sub-200ms claim-detection (high frequency), Sonnet for high-stakes verification with tool use (low frequency). Cost-disciplined.
  • Eval-gated deploys — Braintrust runs nightly regression tests on claim-detection and contradiction-detection. CI blocks deploys that drop >0.05 below baseline.
  • Background verification via Trigger.dev — verification doesn't block the request path; UI streams updates as agents finish.