The ShurIQ Editor — Meeting Brief
Internal  •  April 2026  •  Claude Design Session
Claude Design Session — Meeting Brief

The ShurIQ Editor.

Collaborative visual editing for grammar-powered reports.

Forty-five intelligence reports shipped in six months. Each one a one-shot build. The next unlock is not more reports — it is a shared canvas where the team edits, swaps, branches, and attributes in the final design context.

45+
Reports Shipped to Production
19
Section Grammar (canonical)
5
Reference Formats Identified
0
Currently Editable Post-Build
01

01 · The Problem
Current state
of report production

Great reports. No post-production.

The Claude Code pipeline produces AHA-quality reports end-to-end. What it cannot do is let the team touch the output after the build.

Every deliverable today is a frozen artifact. Content, layout, visual system, and module choices are all baked at build-time. A small edit — add a stat, swap a quote, reorder sections — currently requires re-running the generator, losing prior context.

There is no team surface. No co-editing. No attribution. No version history inside the report. No way to branch a report for a different client without re-building from scratch. This does not scale past where we are.

What breaks at our volume

Iteration cost. A client wants two swapped sections and a different stack-rank table. Today that is a full rebuild. In the editor, it is a module swap + a commit.

Team bottleneck. Only the person running Claude Code can evolve the report. The analyst, the editor, the visual lead — none of them can touch the output directly.

Grammar drift. Without enforcement, each generation interprets the 19-section grammar slightly differently. The editor makes the grammar executable, not aspirational.

02

02 · The Vision
What the editor
actually does

A shared canvas for the whole team.

Open any report in its final design context. Edit copy, swap modules, add sections, review with the team — all inside the artifact, with every change attributed and versioned.

Think Figma for intelligence briefs, governed by the ShurIQ grammar. The editor reads the grammar schema, surfaces only valid operations, and keeps the report inside the design system at all times.

The team operates on the same artifact: an analyst drafts the reframe paragraph, a visual lead swaps the graph viewport, the lead editor tightens the actionable intelligence block, and the account lead signs off — all in-canvas, all attributed, all versioned.

The mental model

A report is a tree of modules. Each module has a grammar-defined type (hero, prose, numbers, graph, gap analysis, competitive table, actions, BPS, bridge, etc.), a set of content fields, and one or more render variants. The editor is the only interface that touches that tree.

The grammar is the constraint. You cannot place a BPS block where a numbers block goes. You cannot ship a report missing the reframe. The ontology is enforced at the structural level.

Claude becomes an in-canvas collaborator. Suggest a module. Draft the copy for a gap. Fact-check a stat against InfraNodus. Review anti-slop compliance before publish.

03

03 · Core Capabilities
Six pillars the editor
must stand on

Six capabilities. Nothing else matters first.

These are the non-negotiable pillars. If the editor cannot do all six, it is a tool. If it does all six, it is the platform.

Pillar 01
Module Library
Every grammar section is a reusable block with typed content fields. The library is the inventory: hero, prose pair, numbers ribbon, graph section, gap radar, competitive table, BPS, bridge, and more.
Pillar 02
Live Design Canvas
WYSIWYG editing inside the final render. No separate authoring view. No previewing a dead document. Click a paragraph, edit in place.
Pillar 03
Attribution Trail
Every insertion, edit, and deletion is tagged to the editor, timestamped, and diffable. Hover a block to see who last touched it. The trail is the audit.
Pillar 04
Version Control
Branch, merge, history. Fork a report for a new client. Keep the v1 frozen; iterate v2 in parallel. Revert any module to a previous state. Git semantics, no git UX.
Pillar 05
Ontology Enforcement
The grammar is schema-enforced. Required fields flagged. Type mismatches blocked. Section ordering validated. The editor cannot produce a grammar-broken report.
Pillar 06
Module Swap
Drop in an alternate block with one click. Swap the gap radar for a stack rank. Swap the competitive table for a quadrant chart. The ontology knows which blocks are interchangeable.
The report is not the artifact. The module tree is. The HTML is just one render of it.

04 · Architecture

The stack, top to bottom.

Six layers. Each independently replaceable. The grammar is the spine; everything else is infrastructure around it.

Layer 06 · Publish
Publish Pipeline
Render the module tree to static HTML and deploy to Cloudflare Pages. Per-commit preview URLs; tagged production releases.
Cloudflare Pages + Wrangler
Layer 05 · Canvas
Visual Editor UI
The team-facing surface. In-place editing, module palette, version panel, attribution popovers. Must render the actual design system (not a proxy).
React + TipTap / Slate / custom
Layer 04 · Collab
Collaboration Engine
Multi-user concurrent editing without conflicts. CRDT state is the cleanest answer; OT is the fallback. Offline edits reconcile on reconnect.
Yjs / Liveblocks / Automerge
Layer 03 · State
Versioned Module Tree
The report as a JSON tree with commit history. Every edit is a commit with author + timestamp. Branching and merging at the tree level.
Git semantics over JSON / or Postgres
Layer 02 · Ontology
Grammar Schema
The canonical 19-section grammar as a machine-readable schema. Defines module types, required fields, render variants, swap groups, validation rules.
JSON Schema / LinkML / Zod
Layer 01 · Agents
Claude In-Canvas
Module drafters, fact-checkers, grammar validators, anti-slop reviewers — Claude exposed as callable agents inside the editor. Not replacing the team; amplifying them.
Claude Agent SDK + MCP (InfraNodus, DEVONthink)
05

05 · Grammar Backbone
The 19-section grammar
becomes executable

The grammar is the operating system.

Every editor decision routes through the schema. This is what makes the tool a platform instead of another rich-text surface.

Today the 19-section grammar lives in documentation (shuriq-report-grammar) and an editorial discipline. The editor converts it into a machine-readable contract that enforces structure, field types, and section ordering.

What the schema declares per module

Type. Hero, prose pair, numbers ribbon, graph section, gap analysis, competitive table, BPS grid, bridge. Closed vocabulary.

Required & optional fields. Hero must have h1 + subtitle + deck. BPS must have composite + 5 dimensions. Gap analysis requires severity-tagged entries.

Render variants. A numbers ribbon can render as 4-up, 3-up, or 2-up. A graph section can render as SVG knowledge graph, gap radar, or discourse flow.

Swap group. Which modules are interchangeable. A gap radar and a stack rank belong to the same slot; the editor surfaces both as valid.

Validation rules. Hero must be first. Bridge must be last. The reframe must appear once between sections 3 and 6. Anti-slop checks on prose fields before publish.

06

06 · Phased Rollout

Five phases. Ship something every two weeks.

Each phase ends with a usable increment. We never sit on a long internal build with nothing shipped.

Phase 01Weeks 1–2
Grammar Extraction
Distill the 19-section grammar into a JSON schema. Parse AHA, TruData, Hasbro v2, and FrameBright reports into module trees. Every existing section maps to a module type. Gaps and ambiguities surface here — this is where we lock the ontology.
Deliverable: grammar.schema.json + 4 example trees
Phase 02Weeks 3–4
Module Library + Static Render
Build the module renderers. Each schema type has a React component that produces the final styled output. A module tree JSON in, a pixel-identical report out. No editing yet — just proof that the tree model reproduces current output.
Deliverable: module library + TruData report regenerated from tree
Phase 03Weeks 5–6
Single-User Edit Canvas
In-place editing for one user. Click a paragraph, edit it. Drag to reorder modules. Swap a block from the palette. Save to disk. No multi-user yet. This is where we validate the canvas UX.
Deliverable: working editor, single session, local storage
Phase 04Weeks 7–8
Collaboration + Attribution
Multi-user concurrent editing. CRDT-based state, presence indicators, author attribution per change. The team can co-edit a TruData report in real time. Attribution trail renders in a side panel.
Deliverable: multi-user demo, 3+ concurrent editors
Phase 05Weeks 9+
Version Control + Publish
Branching, merging, publish pipeline. Fork a report for a new client. Tag a production release. Auto-deploy to Cloudflare Pages on publish. Claude agents become callable inside the canvas.
Deliverable: full loop — edit, branch, publish, iterate
07

07 · Reference Material

What Claude Design is looking at.

Five canonical reports + two grammar docs. The working set for the design session.

08

08 · Open Questions

Decisions we need out of this meeting.

Eight questions. Each one unblocks a chunk of Phase 1.

01
Build or fork? Ground-up React build vs. fork of Notion / TipTap / Payload / Sanity / Plate. Each has different grammar-enforcement ceilings.
Platform
02
Git or DB? Each report as a git repo (branches = client variants) vs. versioned rows in Postgres. Git is more natural for versioning; DB is easier for realtime collab.
State
03
CRDT library. Yjs is the obvious pick; Liveblocks and Automerge are alternatives. Decision affects collaboration depth and hosting cost.
Collab
04
Schema format. JSON Schema (widest tooling), LinkML (semantic web / ontology-native), or Zod (TypeScript-native). Trade-offs around validation richness vs. author ergonomics.
Ontology
05
Authentication. Claude OAuth? Google Workspace SSO (team is already there)? Magic links? Affects attribution integrity and external reviewer access.
Access
06
Claude agent integration. In-canvas agents as MCP tools? As a separate sidebar? What does “Claude suggests a reframe” actually look like as a UI affordance?
Claude
07
External review. Can clients comment inline? Drive-style commenting, Figma-style pins, or Slack thread sync? Client-facing reviewers vs. internal editors.
Review
08
Migration of 45+ existing reports. Do we retroactively extract module trees from deployed HTML? Greenfield only? Hybrid (key references only)?
Migration

09 · Next Steps

Out of this meeting.

Decide platform approach (Q01) — build vs. fork. This gates Phase 1 planning.
This meeting
Lock on ontology format (Q04) — JSON Schema, LinkML, or Zod. First deliverable depends on it.
This meeting
Draft grammar.schema.json from AHA + TruData + Hasbro v2 + FrameBright. Four reports, one schema.
Week 1
Prototype a single module renderer (hero or BPS) from the schema. Prove the round-trip.
Week 1–2
Re-render the TruData report entirely from the module tree. Pixel-match the live site.
Week 2
Next meeting: demo the re-rendered TruData + Phase 2 scope.
Week 3

Close

The Editor

ShurIQ shipped forty-five reports by industrializing one-shot generation. The next forty-five come from collaborative post-production. Same grammar. Same visual system. Same ontology. What changes is who can touch the output, when, and with what attribution. The editor is the next unlock.