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"
]
}