{
  "type": "document",
  "pos": {
    "line": 1,
    "column": 1
  },
  "endLine": 161,
  "meta": {
    "filename": "/home/runner/work/noma/noma/examples/agent-plan.noma",
    "title": "Agent Planning Artifact — Q3 Roadmap Decision",
    "author": "ferax564",
    "date": "2026-05-09T00:00:00.000Z",
    "tags": [
      "planning",
      "decision-record",
      "agent-artifact"
    ]
  },
  "children": [
    {
      "type": "frontmatter",
      "data": {
        "title": "Agent Planning Artifact — Q3 Roadmap Decision",
        "author": "ferax564",
        "date": "2026-05-09T00:00:00.000Z",
        "tags": [
          "planning",
          "decision-record",
          "agent-artifact"
        ]
      },
      "raw": "title: Agent Planning Artifact — Q3 Roadmap Decision\nauthor: ferax564\ndate: 2026-05-09\ntags: [planning, decision-record, agent-artifact]",
      "pos": {
        "line": 1,
        "column": 1
      },
      "endLine": 6
    },
    {
      "type": "section",
      "id": "q3-roadmap-decision",
      "level": 1,
      "title": "Q3 Roadmap Decision",
      "children": [
        {
          "type": "directive",
          "name": "summary",
          "attrs": {},
          "children": [
            {
              "type": "paragraph",
              "content": "Three candidate directions for next quarter. This document captures the\noptions, trade-offs, risks, and timeline as structured blocks so an agent\ncan revisit and update each section independently — and so the recommendation\ncan be exported as a prompt for a follow-on review pass.",
              "pos": {
                "line": 11,
                "column": 1
              },
              "endLine": 14
            }
          ],
          "pos": {
            "line": 10,
            "column": 1
          },
          "endLine": 15,
          "body": "Three candidate directions for next quarter. This document captures the\noptions, trade-offs, risks, and timeline as structured blocks so an agent\ncan revisit and update each section independently — and so the recommendation\ncan be exported as a prompt for a follow-on review pass."
        },
        {
          "type": "section",
          "id": "options-at-a-glance",
          "level": 2,
          "title": "Options at a glance",
          "children": [
            {
              "type": "directive",
              "name": "grid",
              "attrs": {
                "columns": 3
              },
              "children": [
                {
                  "type": "directive",
                  "name": "card",
                  "attrs": {
                    "title": "A · Docs Platform",
                    "icon": "docs"
                  },
                  "children": [
                    {
                      "type": "paragraph",
                      "content": "Build a hosted publishing target for Noma. Highest revenue ceiling, longest path to value.",
                      "pos": {
                        "line": 21,
                        "column": 1
                      },
                      "endLine": 21
                    }
                  ],
                  "pos": {
                    "line": 20,
                    "column": 1
                  },
                  "endLine": 22,
                  "body": "Build a hosted publishing target for Noma. Highest revenue ceiling, longest path to value."
                },
                {
                  "type": "directive",
                  "name": "card",
                  "attrs": {
                    "title": "B · Research Workflows",
                    "icon": "search"
                  },
                  "children": [
                    {
                      "type": "paragraph",
                      "content": "Lean into claims/evidence/risk blocks for analyst teams. Narrow ICP, fastest to first paying customer.",
                      "pos": {
                        "line": 25,
                        "column": 1
                      },
                      "endLine": 25
                    }
                  ],
                  "pos": {
                    "line": 24,
                    "column": 1
                  },
                  "endLine": 26,
                  "body": "Lean into claims/evidence/risk blocks for analyst teams. Narrow ICP, fastest to first paying customer."
                },
                {
                  "type": "directive",
                  "name": "card",
                  "attrs": {
                    "title": "C · General Reports",
                    "icon": "report"
                  },
                  "children": [
                    {
                      "type": "paragraph",
                      "content": "Position Noma as the default format for AI-generated reports across domains. Broadest TAM, weakest wedge.",
                      "pos": {
                        "line": 29,
                        "column": 1
                      },
                      "endLine": 29
                    }
                  ],
                  "pos": {
                    "line": 28,
                    "column": 1
                  },
                  "endLine": 30,
                  "body": "Position Noma as the default format for AI-generated reports across domains. Broadest TAM, weakest wedge."
                }
              ],
              "pos": {
                "line": 19,
                "column": 1
              },
              "endLine": 31
            }
          ],
          "pos": {
            "line": 17,
            "column": 1
          },
          "endLine": 31
        },
        {
          "type": "section",
          "id": "decision",
          "level": 2,
          "title": "Decision",
          "children": [
            {
              "type": "directive",
              "name": "decision",
              "attrs": {
                "id": "decision-q3-direction",
                "status": "proposed"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Start with **Option B — Research Workflows**. Narrowest wedge, fastest signal,\nkeeps the door open to A and C as adjacent expansions.",
                  "pos": {
                    "line": 36,
                    "column": 1
                  },
                  "endLine": 37
                }
              ],
              "pos": {
                "line": 35,
                "column": 1
              },
              "endLine": 38,
              "id": "decision-q3-direction",
              "body": "Start with **Option B — Research Workflows**. Narrowest wedge, fastest signal,\nkeeps the door open to A and C as adjacent expansions."
            }
          ],
          "pos": {
            "line": 33,
            "column": 1
          },
          "endLine": 38
        },
        {
          "type": "section",
          "id": "decision-matrix",
          "level": 2,
          "title": "Decision matrix",
          "children": [
            {
              "type": "table",
              "header": [
                "Dimension",
                "A · Docs",
                "B · Research",
                "C · Reports"
              ],
              "align": [
                null,
                null,
                null,
                null
              ],
              "rows": [
                [
                  "Time to first revenue",
                  "6–9 mo",
                  "6–10 wk",
                  "4–6 mo"
                ],
                [
                  "Wedge sharpness",
                  "Medium",
                  "High",
                  "Low"
                ],
                [
                  "Existing block fit",
                  "Strong",
                  "Native",
                  "Medium"
                ],
                [
                  "Defensibility",
                  "Network",
                  "Workflow",
                  "Brand only"
                ],
                [
                  "18-month revenue cap",
                  "High",
                  "Medium",
                  "High"
                ]
              ],
              "pos": {
                "line": 42,
                "column": 1
              },
              "endLine": 48
            }
          ],
          "pos": {
            "line": 40,
            "column": 1
          },
          "endLine": 48
        },
        {
          "type": "section",
          "id": "claims-and-evidence",
          "level": 2,
          "title": "Claims and evidence",
          "children": [
            {
              "type": "directive",
              "name": "claim",
              "attrs": {
                "id": "claim-research-wedge",
                "confidence": 0.74
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Research and analyst teams are the sharpest wedge for Noma because their\nexisting tools (Word, Notion, Confluence) lack first-class claim/evidence/risk\nprimitives, and they already structure documents this way mentally.",
                  "pos": {
                    "line": 53,
                    "column": 1
                  },
                  "endLine": 55
                }
              ],
              "pos": {
                "line": 52,
                "column": 1
              },
              "endLine": 56,
              "id": "claim-research-wedge",
              "body": "Research and analyst teams are the sharpest wedge for Noma because their\nexisting tools (Word, Notion, Confluence) lack first-class claim/evidence/risk\nprimitives, and they already structure documents this way mentally."
            },
            {
              "type": "directive",
              "name": "evidence",
              "attrs": {
                "for": "claim-research-wedge",
                "source": "user-interviews-apr-2026"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Of 11 analyst-team interviews in April, 9 described their current workflow as\n\"copy-paste claims into a doc and hope someone catches stale ones.\" All 9 said\nthey would pay for a tool that flagged stale evidence automatically.",
                  "pos": {
                    "line": 59,
                    "column": 1
                  },
                  "endLine": 61
                }
              ],
              "pos": {
                "line": 58,
                "column": 1
              },
              "endLine": 62,
              "body": "Of 11 analyst-team interviews in April, 9 described their current workflow as\n\"copy-paste claims into a doc and hope someone catches stale ones.\" All 9 said\nthey would pay for a tool that flagged stale evidence automatically."
            },
            {
              "type": "directive",
              "name": "claim",
              "attrs": {
                "id": "claim-docs-too-slow",
                "confidence": 0.68
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "A docs platform is the higher revenue ceiling, but time-to-revenue is too long\nto be the wedge. Better as a follow-on once Noma has format adoption.",
                  "pos": {
                    "line": 65,
                    "column": 1
                  },
                  "endLine": 66
                }
              ],
              "pos": {
                "line": 64,
                "column": 1
              },
              "endLine": 67,
              "id": "claim-docs-too-slow",
              "body": "A docs platform is the higher revenue ceiling, but time-to-revenue is too long\nto be the wedge. Better as a follow-on once Noma has format adoption."
            },
            {
              "type": "directive",
              "name": "evidence",
              "attrs": {
                "for": "claim-docs-too-slow",
                "source": "docs-platform-benchmark-2026"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Comparable docs-platform launches (Mintlify, GitBook) took 12–18 months to\nreach $100k ARR; research-tool launches (Mem, Reflect) hit it in 6–9 months\nwith a tighter ICP.",
                  "pos": {
                    "line": 70,
                    "column": 1
                  },
                  "endLine": 72
                }
              ],
              "pos": {
                "line": 69,
                "column": 1
              },
              "endLine": 73,
              "body": "Comparable docs-platform launches (Mintlify, GitBook) took 12–18 months to\nreach $100k ARR; research-tool launches (Mem, Reflect) hit it in 6–9 months\nwith a tighter ICP."
            }
          ],
          "pos": {
            "line": 50,
            "column": 1
          },
          "endLine": 73
        },
        {
          "type": "section",
          "id": "risks",
          "level": 2,
          "title": "Risks",
          "children": [
            {
              "type": "directive",
              "name": "risk",
              "attrs": {
                "id": "risk-narrow-icp",
                "severity": "medium",
                "owner": "ferax564"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Research-team ICP is small (~3k orgs globally). Even high conversion caps the\nbusiness below docs-platform scale. Mitigation: use research wedge to drive\nformat adoption, then expand to docs.",
                  "pos": {
                    "line": 78,
                    "column": 1
                  },
                  "endLine": 80
                }
              ],
              "pos": {
                "line": 77,
                "column": 1
              },
              "endLine": 81,
              "id": "risk-narrow-icp",
              "body": "Research-team ICP is small (~3k orgs globally). Even high conversion caps the\nbusiness below docs-platform scale. Mitigation: use research wedge to drive\nformat adoption, then expand to docs."
            },
            {
              "type": "directive",
              "name": "risk",
              "attrs": {
                "id": "risk-format-not-sticky",
                "severity": "high",
                "owner": "ferax564"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "If teams don't keep editing in Noma after first artifact, the workflow value\ndisappears. Mitigation: ship the agent patch protocol in week 3 so updates\nflow back into source automatically.",
                  "pos": {
                    "line": 84,
                    "column": 1
                  },
                  "endLine": 86
                }
              ],
              "pos": {
                "line": 83,
                "column": 1
              },
              "endLine": 87,
              "id": "risk-format-not-sticky",
              "body": "If teams don't keep editing in Noma after first artifact, the workflow value\ndisappears. Mitigation: ship the agent patch protocol in week 3 so updates\nflow back into source automatically."
            },
            {
              "type": "directive",
              "name": "risk",
              "attrs": {
                "id": "risk-llm-export-quality",
                "severity": "low",
                "owner": "ferax564"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "LLM export quality determines whether agents trust Noma source as canonical.\nEasy to verify, easy to fix. Tracked separately.",
                  "pos": {
                    "line": 90,
                    "column": 1
                  },
                  "endLine": 91
                }
              ],
              "pos": {
                "line": 89,
                "column": 1
              },
              "endLine": 92,
              "id": "risk-llm-export-quality",
              "body": "LLM export quality determines whether agents trust Noma source as canonical.\nEasy to verify, easy to fix. Tracked separately."
            }
          ],
          "pos": {
            "line": 75,
            "column": 1
          },
          "endLine": 92
        },
        {
          "type": "section",
          "id": "timeline",
          "level": 2,
          "title": "Timeline",
          "children": [
            {
              "type": "directive",
              "name": "grid",
              "attrs": {
                "columns": 4
              },
              "children": [
                {
                  "type": "directive",
                  "name": "card",
                  "attrs": {
                    "title": "Wk 1 · Format"
                  },
                  "children": [
                    {
                      "type": "paragraph",
                      "content": "Parser, AST, frontmatter, JSON export, basic validation.",
                      "pos": {
                        "line": 98,
                        "column": 1
                      },
                      "endLine": 98
                    }
                  ],
                  "pos": {
                    "line": 97,
                    "column": 1
                  },
                  "endLine": 99,
                  "body": "Parser, AST, frontmatter, JSON export, basic validation."
                },
                {
                  "type": "directive",
                  "name": "card",
                  "attrs": {
                    "title": "Wk 2 · Artifact"
                  },
                  "children": [
                    {
                      "type": "paragraph",
                      "content": "HTML renderer, default theme, cards/grids/tabs/charts, mobile.",
                      "pos": {
                        "line": 102,
                        "column": 1
                      },
                      "endLine": 102
                    }
                  ],
                  "pos": {
                    "line": 101,
                    "column": 1
                  },
                  "endLine": 103,
                  "body": "HTML renderer, default theme, cards/grids/tabs/charts, mobile."
                },
                {
                  "type": "directive",
                  "name": "card",
                  "attrs": {
                    "title": "Wk 3 · Agent"
                  },
                  "children": [
                    {
                      "type": "paragraph",
                      "content": "LLM export, patch protocol, copy-as-prompt buttons.",
                      "pos": {
                        "line": 106,
                        "column": 1
                      },
                      "endLine": 106
                    }
                  ],
                  "pos": {
                    "line": 105,
                    "column": 1
                  },
                  "endLine": 107,
                  "body": "LLM export, patch protocol, copy-as-prompt buttons."
                },
                {
                  "type": "directive",
                  "name": "card",
                  "attrs": {
                    "title": "Wk 4 · Launch"
                  },
                  "children": [
                    {
                      "type": "paragraph",
                      "content": "3 demos, README, spec, comparison page, OSS release.",
                      "pos": {
                        "line": 110,
                        "column": 1
                      },
                      "endLine": 110
                    }
                  ],
                  "pos": {
                    "line": 109,
                    "column": 1
                  },
                  "endLine": 111,
                  "body": "3 demos, README, spec, comparison page, OSS release."
                }
              ],
              "pos": {
                "line": 96,
                "column": 1
              },
              "endLine": 112
            }
          ],
          "pos": {
            "line": 94,
            "column": 1
          },
          "endLine": 112
        },
        {
          "type": "section",
          "id": "open-questions",
          "level": 2,
          "title": "Open questions",
          "children": [
            {
              "type": "directive",
              "name": "open_question",
              "attrs": {
                "id": "oq-pricing-model"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Per-seat, per-document, or per-render? Research-team workflows favor per-seat;\nagent-driven artifacts favor per-render. Decide before week 3.",
                  "pos": {
                    "line": 117,
                    "column": 1
                  },
                  "endLine": 118
                }
              ],
              "pos": {
                "line": 116,
                "column": 1
              },
              "endLine": 119,
              "id": "oq-pricing-model",
              "body": "Per-seat, per-document, or per-render? Research-team workflows favor per-seat;\nagent-driven artifacts favor per-render. Decide before week 3."
            },
            {
              "type": "directive",
              "name": "open_question",
              "attrs": {
                "id": "oq-pdf-engine"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Typst vs. Puppeteer for PDF. Typst gives better book output; Puppeteer is\nalready in the build. Defer until first user actually asks for PDF.",
                  "pos": {
                    "line": 122,
                    "column": 1
                  },
                  "endLine": 123
                }
              ],
              "pos": {
                "line": 121,
                "column": 1
              },
              "endLine": 124,
              "id": "oq-pdf-engine",
              "body": "Typst vs. Puppeteer for PDF. Typst gives better book output; Puppeteer is\nalready in the build. Defer until first user actually asks for PDF."
            }
          ],
          "pos": {
            "line": 114,
            "column": 1
          },
          "endLine": 124
        },
        {
          "type": "section",
          "id": "agent-tasks",
          "level": 2,
          "title": "Agent tasks",
          "children": [
            {
              "type": "directive",
              "name": "agent_task",
              "attrs": {
                "id": "task-validate-claim-research-wedge"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Re-run the interview tally each month. If `claim-research-wedge` evidence base\ndrops below 8 of 11 supporting interviews (or new interviews contradict),\nlower the claim's `confidence` attribute and add a `counterevidence` block.",
                  "pos": {
                    "line": 129,
                    "column": 1
                  },
                  "endLine": 131
                }
              ],
              "pos": {
                "line": 128,
                "column": 1
              },
              "endLine": 132,
              "id": "task-validate-claim-research-wedge",
              "body": "Re-run the interview tally each month. If `claim-research-wedge` evidence base\ndrops below 8 of 11 supporting interviews (or new interviews contradict),\nlower the claim's `confidence` attribute and add a `counterevidence` block."
            },
            {
              "type": "directive",
              "name": "agent_task",
              "attrs": {
                "id": "task-watch-stale-evidence"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Every two weeks, scan `evidence` blocks for `source` attributes older than\n60 days. Flag any whose underlying source has changed materially. Do not\nauto-edit — propose a `replace_block` patch for human approval.",
                  "pos": {
                    "line": 135,
                    "column": 1
                  },
                  "endLine": 137
                }
              ],
              "pos": {
                "line": 134,
                "column": 1
              },
              "endLine": 138,
              "id": "task-watch-stale-evidence",
              "body": "Every two weeks, scan `evidence` blocks for `source` attributes older than\n60 days. Flag any whose underlying source has changed materially. Do not\nauto-edit — propose a `replace_block` patch for human approval."
            },
            {
              "type": "directive",
              "name": "agent_task",
              "attrs": {
                "id": "task-export-as-review-prompt"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "On request, package this document's `decision`, top three `claim`s, and all\n`risk`s of severity ≥ medium into an LLM prompt for a second-opinion review.",
                  "pos": {
                    "line": 141,
                    "column": 1
                  },
                  "endLine": 142
                }
              ],
              "pos": {
                "line": 140,
                "column": 1
              },
              "endLine": 143,
              "id": "task-export-as-review-prompt",
              "body": "On request, package this document's `decision`, top three `claim`s, and all\n`risk`s of severity ≥ medium into an LLM prompt for a second-opinion review."
            }
          ],
          "pos": {
            "line": 126,
            "column": 1
          },
          "endLine": 143
        },
        {
          "type": "section",
          "id": "export",
          "level": 2,
          "title": "Export",
          "children": [
            {
              "type": "directive",
              "name": "export_button",
              "attrs": {
                "format": "prompt",
                "target": "decision-q3-direction"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Label: Copy decision + risks as a review prompt",
                  "pos": {
                    "line": 148,
                    "column": 1
                  },
                  "endLine": 148
                }
              ],
              "pos": {
                "line": 147,
                "column": 1
              },
              "endLine": 149,
              "body": "Label: Copy decision + risks as a review prompt"
            },
            {
              "type": "directive",
              "name": "export_button",
              "attrs": {
                "format": "markdown",
                "target": "summary"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Label: Copy summary as Markdown",
                  "pos": {
                    "line": 152,
                    "column": 1
                  },
                  "endLine": 152
                }
              ],
              "pos": {
                "line": 151,
                "column": 1
              },
              "endLine": 153,
              "body": "Label: Copy summary as Markdown"
            },
            {
              "type": "directive",
              "name": "export_button",
              "attrs": {
                "format": "json",
                "target": "document"
              },
              "children": [
                {
                  "type": "paragraph",
                  "content": "Label: Copy full document AST",
                  "pos": {
                    "line": 156,
                    "column": 1
                  },
                  "endLine": 156
                }
              ],
              "pos": {
                "line": 155,
                "column": 1
              },
              "endLine": 157,
              "body": "Label: Copy full document AST"
            },
            {
              "type": "quote",
              "content": "The point of this artifact is not the prose — it's that an agent can re-open\nit next month, walk the decision/claim/risk graph, and update only the parts\nthat changed. Everything else stays put, and the Git diff stays clean.",
              "pos": {
                "line": 159,
                "column": 1
              },
              "endLine": 161
            }
          ],
          "pos": {
            "line": 145,
            "column": 1
          },
          "endLine": 161
        }
      ],
      "pos": {
        "line": 8,
        "column": 1
      },
      "endLine": 161,
      "aliases": [
        "agent-plan"
      ]
    }
  ]
}