Decision Memo Schema

The complete TypeScript interface for the Decision Memo — the structured artifact produced by every deliberation.

TypeScript interface

interface DecisionMemo {
  /** Unique memo ID */
  id: string;

  /** The original question */
  question: string;

  /** ISO 8601 timestamp */
  timestamp: string;

  /** Criteria used for evaluation */
  criteria: Array<{
    name: string;
    description?: string;
  }>;

  /** The synthesised verdict */
  verdict: {
    /** The recommended course of action */
    decision: string;

    /** Consensus level: "strong" | "moderate" | "weak" */
    consensusLevel: "strong" | "moderate" | "weak";

    /** Human-readable consensus string */
    consensusDisplay: string;

    /** Brief rationale for the recommendation */
    rationale: string;
  };

  /** Individual advisor perspectives */
  perspectives: Array<{
    /** Advisor title or model name (depending on mode) */
    advisor: string;

    /** The advisor's full response */
    response: string;

    /** The model that generated this perspective */
    model: string;

    /** Provider identifier */
    provider: string;
  }>;

  /** Where the panel agreed and diverged */
  consensus: {
    agreements: string[];
    divergences: string[];
  };

  /** Identified risks with mitigations */
  risks: Array<{
    risk: string;
    mitigation: string;
  }>;

  /** Ordered implementation steps */
  nextSteps: string[];
}

Example output

A real Decision Memo from a framework selection deliberation:

{
  "id": "dm_a1b2c3d4",
  "question": "Should we use Next.js or Remix for our new SaaS product?",
  "timestamp": "2026-02-13T10:30:00.000Z",
  "criteria": [
    { "name": "Time to market" },
    { "name": "Team experience" },
    { "name": "SSR requirements" }
  ],
  "verdict": {
    "decision": "Use Next.js with the App Router.",
    "consensusLevel": "strong",
    "consensusDisplay": "The panel is united.",
    "rationale": "Given React experience on the team and the 8-week timeline..."
  },
  "perspectives": [
    {
      "advisor": "The Strategist",
      "response": "Next.js offers the broadest ecosystem...",
      "model": "gpt-4o",
      "provider": "openai"
    },
    {
      "advisor": "The Analyst",
      "response": "Risk assessment favours Next.js...",
      "model": "claude-3.5-sonnet",
      "provider": "anthropic"
    }
  ],
  "consensus": {
    "agreements": [
      "Next.js is the safest choice given timeline",
      "SSR via App Router is production-ready"
    ],
    "divergences": [
      "The Challenger advocated SvelteKit on performance grounds"
    ]
  },
  "risks": [
    {
      "risk": "App Router caching complexity",
      "mitigation": "Budget 1-2 days for caching model learning"
    }
  ],
  "nextSteps": [
    "Scaffold Next.js 15 with App Router and TypeScript",
    "Set up Zustand for client-side state",
    "Deploy to Vercel with preview environments"
  ]
}