{
 "openapi": "3.1.0",
 "info": {
  "title": "Signal Band decision engines",
  "version": "1.0.0",
  "description": "Decision intelligence engines for startups and organisations. Free Soundchecks; paid engines use credits. Decision support, not financial, legal or investment advice.",
  "contact": {
   "email": "hello@signalband.net",
   "url": "https://signalband.net/developers"
  },
  "termsOfService": "https://signalband.net/licence"
 },
 "servers": [
  {
   "url": "https://signalband.net"
  }
 ],
 "paths": {
  "/api/v1/engines": {
   "get": {
    "operationId": "listEngines",
    "summary": "List decision engines",
    "responses": {
     "200": {
      "description": "Engines"
     }
    }
   }
  },
  "/api/v1/offers": {
   "get": {
    "operationId": "listOffers",
    "summary": "Credits, plans, licence packs and services with USD prices",
    "responses": {
     "200": {
      "description": "Offers"
     }
    }
   }
  },
  "/api/v1/checkout": {
   "post": {
    "operationId": "createCheckout",
    "summary": "Create a Stripe Checkout link for the account owner to approve and pay",
    "security": [
     {},
     {
      "bearer": []
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "offer"
        ],
        "properties": {
         "offer": {
          "type": "string",
          "enum": [
           "sprint-venture",
           "sprint-ai",
           "credits-250",
           "plan-builder",
           "plan-studio",
           "library",
           "licence-venture-validation-engine",
           "licence-ai-business-case-validator",
           "licence-release-governance-portfolio",
           "licence-it-future",
           "licence-cyber-future",
           "licence-ai-future",
           "practitioner-review"
          ]
         },
         "billing": {
          "type": "string",
          "enum": [
           "one-off",
           "month",
           "quarter",
           "year"
          ]
         },
         "email": {
          "type": "string",
          "format": "email"
         }
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "checkoutUrl, sessionId, claimUrl"
     },
     "400": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "503": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/checkout/{sessionId}/claim": {
   "get": {
    "operationId": "claimPurchase",
    "summary": "After payment: API key (first purchase, shown once) and download links",
    "parameters": [
     {
      "name": "sessionId",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Claimed"
     },
     "202": {
      "description": "Awaiting payment"
     }
    }
   }
  },
  "/api/v1/account/receipt": {
   "get": {
    "operationId": "getReceipt",
    "summary": "Usage receipt for the owner: runs, credits, engine versions and purchases over a period",
    "security": [
     {
      "bearer": []
     }
    ],
    "parameters": [
     {
      "name": "days",
      "in": "query",
      "schema": {
       "type": "integer",
       "minimum": 1,
       "maximum": 366,
       "default": 30
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Receipt"
     },
     "401": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/account": {
   "get": {
    "operationId": "getAccount",
    "summary": "Credits, plans, usage and fresh download links",
    "security": [
     {
      "bearer": []
     }
    ],
    "responses": {
     "200": {
      "description": "Account"
     },
     "401": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/engines/startup-soundcheck": {
   "get": {
    "operationId": "get_startup_soundcheck",
    "summary": "Startup Soundcheck: schema, sample and method",
    "responses": {
     "200": {
      "description": "Engine spec"
     }
    }
   }
  },
  "/api/v1/engines/startup-soundcheck/run": {
   "post": {
    "operationId": "run_startup_soundcheck",
    "summary": "Run Startup Soundcheck (free)",
    "description": "Indicative investment-readiness range for a venture from 12 answers across customers, traction, product, unit economics, runway and team.",
    "security": [
     {},
     {
      "bearer": []
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "answers"
        ],
        "additionalProperties": false,
        "properties": {
         "answers": {
          "type": "object",
          "additionalProperties": false,
          "required": [
           "interviews",
           "riskiest",
           "customers",
           "mrr",
           "stage",
           "acv",
           "cac",
           "margin",
           "churn",
           "cash",
           "burn",
           "team"
          ],
          "properties": {
           "interviews": {
            "type": "string",
            "enum": [
             "0",
             "1-9",
             "10-24",
             "25-49",
             "50+",
             "unsure"
            ],
            "description": "Structured customer problem interviews in the last 6 months"
           },
           "riskiest": {
            "type": "string",
            "enum": [
             "no",
             "partly",
             "yes",
             "unsure"
            ],
            "description": "Riskiest assumption tested with real evidence?"
           },
           "customers": {
            "type": "string",
            "enum": [
             "0",
             "1-2",
             "3-9",
             "10-49",
             "50+",
             "unsure"
            ],
            "description": "Paying customers, paid pilots or signed LOIs"
           },
           "mrr": {
            "type": "string",
            "enum": [
             "0",
             "<5k",
             "5-25k",
             "25-100k",
             "100k+",
             "unsure"
            ],
            "description": "Monthly recurring revenue"
           },
           "stage": {
            "type": "string",
            "enum": [
             "idea",
             "prototype",
             "mvp",
             "paying",
             "scaling",
             "unsure"
            ],
            "description": "Product stage"
           },
           "acv": {
            "type": [
             "number",
             "string"
            ],
            "description": "Average annual revenue per customer (actual or planned)"
           },
           "cac": {
            "type": [
             "number",
             "string"
            ],
            "description": "Average cost to acquire one customer"
           },
           "margin": {
            "type": "string",
            "enum": [
             "<30",
             "30-50",
             "50-70",
             "70+",
             "unsure"
            ],
            "description": "Gross margin %"
           },
           "churn": {
            "type": "string",
            "enum": [
             "<1",
             "1-3",
             "3-5",
             "5+",
             "unsure"
            ],
            "description": "Monthly customer churn %"
           },
           "cash": {
            "type": [
             "number",
             "string"
            ],
            "description": "Cash in the bank (closed funding only)"
           },
           "burn": {
            "type": [
             "number",
             "string"
            ],
            "description": "Monthly net burn (0 if cash-flow positive)"
           },
           "team": {
            "type": "string",
            "enum": [
             "solo-pt",
             "solo-ft",
             "multi-ft",
             "multi-ft-domain",
             "unsure"
            ],
            "description": "Founding team"
           }
          }
         }
        }
       },
       "example": {
        "answers": {
         "interviews": "10-24",
         "riskiest": "partly",
         "customers": "3-9",
         "mrr": "5-25k",
         "stage": "paying",
         "acv": 12000,
         "cac": 3000,
         "margin": "50-70",
         "churn": "1-3",
         "cash": 500000,
         "burn": 40000,
         "team": "multi-ft"
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "Result with provenance",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RunResult"
        }
       }
      }
     },
     "401": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "402": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "422": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/engines/business-soundcheck": {
   "get": {
    "operationId": "get_business_soundcheck",
    "summary": "Business Soundcheck: schema, sample and method",
    "responses": {
     "200": {
      "description": "Engine spec"
     }
    }
   }
  },
  "/api/v1/engines/business-soundcheck/run": {
   "post": {
    "operationId": "run_business_soundcheck",
    "summary": "Run Business Soundcheck (free)",
    "description": "Indicative decision-readiness range for an organisation across cyber, identity, AI spend, technical debt, workforce, delivery and data, with the weakest area routed to the product that fixes it.",
    "security": [
     {},
     {
      "bearer": []
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "answers"
        ],
        "additionalProperties": false,
        "properties": {
         "profile": {
          "type": "object",
          "description": "Not scored: size, sector, country, role"
         },
         "answers": {
          "type": "object",
          "additionalProperties": false,
          "required": [
           "q1",
           "q2",
           "q3",
           "q4",
           "q5",
           "q6",
           "q7",
           "q8",
           "q9",
           "q10",
           "q11",
           "q12"
          ],
          "properties": {
           "q1": {
            "type": "string",
            "enum": [
             "never",
             "2y+",
             "1-2y",
             "12m",
             "unsure"
            ],
            "description": "Last independent cyber maturity assessment"
           },
           "q2": {
            "type": "string",
            "enum": [
             "20+",
             "6-20",
             "1-5",
             "0",
             "unsure"
            ],
            "description": "Critical/high security findings past their fix date"
           },
           "q3": {
            "type": "string",
            "enum": [
             "<25",
             "25-50",
             "50-80",
             "80+",
             "unsure"
            ],
            "description": "% of business apps behind SSO with MFA"
           },
           "q4": {
            "type": "string",
            "enum": [
             "weeks",
             "week",
             "day",
             "auto",
             "unsure"
            ],
            "description": "How fast leavers lose all access"
           },
           "q5": {
            "type": "string",
            "enum": [
             "never",
             "sometimes",
             "usually",
             "always",
             "unsure"
            ],
            "description": "AI initiatives need an approved business case first?"
           },
           "q6": {
            "type": "string",
            "enum": [
             "no",
             "rough",
             "team",
             "benefits",
             "unsure"
            ],
            "description": "Monthly AI tool/token/inference spend known?"
           },
           "q7": {
            "type": "string",
            "enum": [
             "50+",
             "35-50",
             "20-35",
             "<20",
             "unsure"
            ],
            "description": "% of engineering time on unplanned work"
           },
           "q8": {
            "type": "string",
            "enum": [
             "many",
             "few",
             "one",
             "none",
             "unsure"
            ],
            "description": "Critical systems on end-of-life technology"
           },
           "q9": {
            "type": "string",
            "enum": [
             "many",
             "few",
             "one",
             "none",
             "unsure"
            ],
            "description": "Critical systems depending on one person's knowledge"
           },
           "q10": {
            "type": "string",
            "enum": [
             "always",
             "often",
             "sometimes",
             "rarely",
             "unsure"
            ],
            "description": "Projects delayed for lack of the right people"
           },
           "q11": {
            "type": "string",
            "enum": [
             "<25",
             "25-50",
             "50-75",
             "75+",
             "unsure"
            ],
            "description": "% of major initiatives on time and budget (12 months)"
           },
           "q12": {
            "type": "string",
            "enum": [
             "no",
             "partly",
             "mostly",
             "fully",
             "unsure"
            ],
            "description": "Critical data classified with named owners"
           }
          }
         }
        }
       },
       "example": {
        "profile": {
         "size": "200-999",
         "sector": "Retail",
         "country": "US",
         "role": "CIO"
        },
        "answers": {
         "q1": "1-2y",
         "q2": "6-20",
         "q3": "50-80",
         "q4": "week",
         "q5": "sometimes",
         "q6": "rough",
         "q7": "35-50",
         "q8": "few",
         "q9": "few",
         "q10": "often",
         "q11": "25-50",
         "q12": "partly"
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "Result with provenance",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RunResult"
        }
       }
      }
     },
     "401": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "402": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "422": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/engines/agent-soundcheck": {
   "get": {
    "operationId": "get_agent_soundcheck",
    "summary": "Agent Soundcheck: schema, sample and method",
    "responses": {
     "200": {
      "description": "Engine spec"
     }
    }
   }
  },
  "/api/v1/engines/agent-soundcheck/run": {
   "post": {
    "operationId": "run_agent_soundcheck",
    "summary": "Run Agent Soundcheck (free)",
    "description": "For AI agents: checks whether a Signal Band engine, Power BI pack or practitioner fits the owner's decision before you recommend a purchase. Returns a fit range, one action and the offers to show the owner. Never recommends buying without the owner's approval.",
    "security": [
     {},
     {
      "bearer": []
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "decision"
        ],
        "additionalProperties": false,
        "properties": {
         "decision": {
          "type": "string",
          "enum": [
           "startup-quick-read",
           "venture-readiness",
           "ai-investment",
           "org-quick-read",
           "tech-debt",
           "workforce",
           "cyber-capability",
           "ai-governance",
           "release-governance",
           "cyber-program",
           "identity-program",
           "portfolio-delivery",
           "other"
          ],
          "description": "The kind of decision the owner faces"
         },
         "description": {
          "type": "string",
          "description": "One or two sentences on the decision, for the record"
         },
         "stakes": {
          "type": "string",
          "enum": [
           "internal",
           "customer-facing",
           "compliance-or-investment"
          ]
         },
         "alternative": {
          "type": "string",
          "enum": [
           "practitioner",
           "analyst",
           "agent-ad-hoc",
           "nothing"
          ],
          "description": "What the owner would do otherwise"
         },
         "inputsAvailable": {
          "type": "array",
          "items": {
           "type": "string",
           "enum": [
            "hypotheses",
            "evidence",
            "gate-mapping",
            "experiments",
            "financials",
            "initiatives",
            "benefit-claims",
            "usage-volumes",
            "run-costs",
            "ai-budget",
            "csv-exports",
            "power-bi-desktop",
            "analyst-time"
           ]
          },
          "description": "Inputs the owner already has. See each engine spec for what the items mean."
         },
         "runsPerMonth": {
          "type": "integer",
          "minimum": 1,
          "maximum": 1000
         },
         "forClients": {
          "type": "boolean",
          "description": "True if results will be delivered to the owner's own clients (commercial licence)"
         },
         "budgetUSD": {
          "type": "number",
          "minimum": 0
         }
        }
       },
       "example": {
        "decision": "ai-investment",
        "description": "Board wants to know which of 8 AI pilots to fund next quarter",
        "stakes": "internal",
        "alternative": "analyst",
        "inputsAvailable": [
         "initiatives",
         "benefit-claims",
         "evidence",
         "usage-volumes"
        ],
        "runsPerMonth": 2,
        "budgetUSD": 300
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "Result with provenance",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RunResult"
        }
       }
      }
     },
     "401": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "402": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "422": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/engines/venture-readiness": {
   "get": {
    "operationId": "get_venture_readiness",
    "summary": "Venture Readiness Engine: schema, sample and method",
    "responses": {
     "200": {
      "description": "Engine spec"
     }
    }
   }
  },
  "/api/v1/engines/venture-readiness/run": {
   "post": {
    "operationId": "run_venture_readiness",
    "summary": "Run Venture Readiness Engine (10 credits)",
    "description": "Scores a venture's hypotheses against its evidence: confidence per assumption, ten validation gates, readiness, Evidence Confidence and Assumption Exposure indices, the next tests ranked by priority, and a proceed / continue / rework recommendation.",
    "security": [
     {
      "bearer": []
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "hypotheses"
        ],
        "properties": {
         "ventureName": {
          "type": "string"
         },
         "asAtDate": {
          "type": "string",
          "format": "date",
          "description": "Date evidence recency is measured from (default today)"
         },
         "hypotheses": {
          "type": "array",
          "minItems": 1,
          "maxItems": 200,
          "items": {
           "type": "object",
           "required": [
            "id",
            "text",
            "domain",
            "gate",
            "impact"
           ],
           "properties": {
            "id": {
             "type": "string"
            },
            "text": {
             "type": "string"
            },
            "domain": {
             "type": "string",
             "enum": [
              "Product",
              "Market",
              "Customer / Problem",
              "Technology / Architecture",
              "Go-to-Market",
              "Commercial / Financial",
              "Capability / Execution",
              "Risk & Investment Readiness"
             ]
            },
            "gate": {
             "type": "string",
             "enum": [
              "V01",
              "V02",
              "V03",
              "V04",
              "V05",
              "V06",
              "V07",
              "V08",
              "V09",
              "V10"
             ]
            },
            "impact": {
             "type": "string",
             "enum": [
              "High",
              "Medium",
              "Low"
             ]
            },
            "material": {
             "type": "boolean"
            },
            "testability": {
             "type": "integer",
             "minimum": 1,
             "maximum": 5
            },
            "dependentModels": {
             "type": "array",
             "items": {
              "type": "string"
             }
            },
            "evidence": {
             "type": "array",
             "maxItems": 100,
             "items": {
              "type": "object",
              "required": [
               "direction",
               "reliability",
               "relevance",
               "sampleAdequacy",
               "capturedDate"
              ],
              "properties": {
               "direction": {
                "type": "string",
                "enum": [
                 "Supports",
                 "Contradicts",
                 "Neutral"
                ]
               },
               "reliability": {
                "type": "integer",
                "minimum": 1,
                "maximum": 5
               },
               "relevance": {
                "type": "integer",
                "minimum": 1,
                "maximum": 5
               },
               "sampleAdequacy": {
                "type": "integer",
                "minimum": 1,
                "maximum": 5
               },
               "capturedDate": {
                "type": "string",
                "format": "date"
               },
               "summary": {
                "type": "string"
               }
              }
             }
            },
            "openExperiments": {
             "type": "array",
             "items": {
              "type": "object",
              "required": [
               "name"
              ]
             }
            }
           }
          }
         },
         "blockers": {
          "type": "array",
          "items": {
           "type": "object",
           "required": [
            "gate",
            "text"
           ]
          }
         },
         "financials": {
          "type": "object",
          "properties": {
           "ltvCac": {
            "type": [
             "number",
             "null"
            ]
           },
           "runwayMonths": {
            "type": [
             "number",
             "null"
            ]
           },
           "grossMargin": {
            "type": [
             "number",
             "null"
            ]
           }
          }
         }
        }
       },
       "example": {
        "ventureName": "NovaPay (fictional sample)",
        "asAtDate": "2026-10-02",
        "hypotheses": [
         {
          "id": "H01",
          "text": "Suppliers want to offer 30–60 day trade terms without carrying the credit risk themselves",
          "domain": "Product",
          "gate": "V01",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Revenue",
           "GTM"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-23",
            "summary": "17 of 20 finance managers would offer longer terms if risk sat elsewhere"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-14",
            "summary": "3 suppliers signed LOIs to offer 45-day terms via NovaPay"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-05",
            "summary": "Pilot suppliers extended terms to 38% of eligible buyers in month 1"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-06-27",
            "summary": "Wholesale association survey (n=212): 64% cite risk as the reason terms are not offered"
           }
          ]
         },
         {
          "id": "H02",
          "text": "An embedded pay-later link inside existing Xero / MYOB invoices is enough — no separate buyer portal needed",
          "domain": "Product",
          "gate": "V05",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Technology",
           "GTM"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-18",
            "summary": "84% of pilot buyers paid from the invoice link without visiting a portal"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-09",
            "summary": "Finance managers prefer no new portal for buyers"
           },
           {
            "direction": "Contradicts",
            "reliability": 3,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-06-30",
            "summary": "2 large buyers asked for a statement portal to manage multiple suppliers"
           }
          ]
         },
         {
          "id": "H03",
          "text": "Trade buyers accept a soft credit check at checkout",
          "domain": "Product",
          "gate": "V05",
          "impact": "Medium",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Revenue"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-17",
            "summary": "Soft-check completion 91% at checkout in pilot"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-08",
            "summary": "Buyers indifferent to soft check if under 30 seconds"
           }
          ]
         },
         {
          "id": "H04",
          "text": "Same-day settlement to the supplier is a must-have, not a nice-to-have",
          "domain": "Product",
          "gate": "V05",
          "impact": "Medium",
          "material": true,
          "testability": 5,
          "dependentModels": [
           "Commercial"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-20",
            "summary": "15 of 20 suppliers rank same-day settlement above price"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-11",
            "summary": "Pilot NPS +34 driven by same-day settlement"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-02",
            "summary": "Association survey: settlement speed is the #2 selection criterion"
           }
          ]
         },
         {
          "id": "H05",
          "text": "Late payment is a top-3 cash-flow pain for wholesale suppliers (DSO > 45 days)",
          "domain": "Customer / Problem",
          "gate": "V02",
          "impact": "High",
          "material": true,
          "testability": 5,
          "dependentModels": [
           "Revenue",
           "GTM"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-09-22",
            "summary": "Median DSO 52 days across 20 interviewed suppliers"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-09-13",
            "summary": "Industry payment-times report: wholesale DSO 49 days, worst sector"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-09-04",
            "summary": "Late payment ranked top-3 cash-flow pain by 71% (n=212)"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-26",
            "summary": "Pilot suppliers' overdue balance fell 41% in 60 days"
           }
          ]
         },
         {
          "id": "H06",
          "text": "Suppliers spend more than 6 hours a week chasing overdue invoices",
          "domain": "Customer / Problem",
          "gate": "V02",
          "impact": "Medium",
          "material": true,
          "testability": 5,
          "dependentModels": [
           "GTM"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-23",
            "summary": "Median 7.5 hours/week spent on collections"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-14",
            "summary": "62% spend over 5 hours a week chasing invoices"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-05",
            "summary": "Pilot time-tracking: 6.8 hours/week saved per supplier"
           }
          ]
         },
         {
          "id": "H07",
          "text": "Finance managers, not owners, are the economic buyer in $5–50M wholesalers",
          "domain": "Customer / Problem",
          "gate": "V03",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "GTM",
           "Capability"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-18",
            "summary": "Finance manager signed in 7 of 9 pilot deals"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-09",
            "summary": "Owners delegate payment tooling to finance in firms over $10M"
           }
          ]
         },
         {
          "id": "H08",
          "text": "Suppliers will pay 1.5–2.5% of financed invoice value",
          "domain": "Customer / Problem",
          "gate": "V03",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Revenue",
           "Commercial"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-17",
            "summary": "Van Westendorp: acceptable fee band 1.4%–2.6%"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-08",
            "summary": "LOIs priced at 1.9% and 2.2% of financed value"
           },
           {
            "direction": "Contradicts",
            "reliability": 3,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-06-29",
            "summary": "Price-sensitive F&B suppliers anchor on 1.0% card fees"
           }
          ]
         },
         {
          "id": "H09",
          "text": "Trade buyers prefer pay-later over card surcharges",
          "domain": "Customer / Problem",
          "gate": "V03",
          "impact": "Medium",
          "material": true,
          "testability": 3,
          "dependentModels": [
           "GTM"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 1,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-22",
            "summary": "Overseas B2B BNPL adoption suggests buyer preference"
           }
          ]
         },
         {
          "id": "H10",
          "text": "There are at least 18,000 reachable wholesale suppliers in the ICP in Australia",
          "domain": "Market",
          "gate": "V04",
          "impact": "High",
          "material": true,
          "testability": 5,
          "dependentModels": [
           "Revenue",
           "Capital"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 1,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-21",
            "summary": "Desk estimate from ABS business counts: ~21,000 wholesale firms $5–50M (not filtered for Xero/MYOB)"
           },
           {
            "direction": "Neutral",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 1,
            "capturedDate": "2026-09-23",
            "summary": "Xero marketplace category count not published — request lodged"
           }
          ],
          "openExperiments": [
           {
            "name": "Market sizing — ABS counts × Xero/MYOB penetration",
            "method": "Desk research + data purchase",
            "cost": 3000,
            "days": 14
           }
          ]
         },
         {
          "id": "H11",
          "text": "B2B pay-later incumbents are not serving sub-$50M suppliers well",
          "domain": "Market",
          "gate": "V04",
          "impact": "Medium",
          "material": true,
          "testability": 3,
          "dependentModels": [
           "GTM"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 2,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-19",
            "summary": "Competitor review: 2 of 3 incumbents set $50M minimum supplier revenue"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-10",
            "summary": "Suppliers report being declined by bank trade-finance products"
           }
          ]
         },
         {
          "id": "H12",
          "text": "Accounting-platform app marketplaces can deliver 30%+ of leads",
          "domain": "Market",
          "gate": "V04",
          "impact": "Medium",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "GTM",
           "Revenue"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 1,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-24",
            "summary": "Marketplace benchmark from another fintech: 25–35% of leads"
           }
          ]
         },
         {
          "id": "H13",
          "text": "New Zealand is an adjacent market reachable in Year 3",
          "domain": "Market",
          "gate": "V04",
          "impact": "Low",
          "material": false,
          "testability": 2,
          "dependentModels": [
           "Revenue"
          ],
          "evidence": []
         },
         {
          "id": "H14",
          "text": "Xero and MYOB APIs support embedded payment links on invoices at scale",
          "domain": "Technology / Architecture",
          "gate": "V06",
          "impact": "High",
          "material": true,
          "testability": 5,
          "dependentModels": [
           "Technology"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-09-23",
            "summary": "Integration spike: payment link embedded on Xero invoices end-to-end"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-09-14",
            "summary": "MYOB API rate limits support 50k invoices/day"
           },
           {
            "direction": "Supports",
            "reliability": 5,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-09-05",
            "summary": "Xero partner manager confirms payment-service app category"
           }
          ]
         },
         {
          "id": "H15",
          "text": "Credit decisioning can be automated for 80% of buyers using bureau + ledger data",
          "domain": "Technology / Architecture",
          "gate": "V06",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Commercial",
           "Capability",
           "Technology"
          ],
          "evidence": [
           {
            "direction": "Neutral",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 1,
            "capturedDate": "2026-09-20",
            "summary": "Historic buyer invoice set (n=400) obtained for shadow decisioning"
           }
          ],
          "openExperiments": [
           {
            "name": "Shadow credit decisioning on 400 historic buyer invoices",
            "method": "Technical proof",
            "cost": 12000,
            "days": 30
           }
          ]
         },
         {
          "id": "H16",
          "text": "A banking-as-a-service lending partner can provide the balance sheet within 6 months",
          "domain": "Technology / Architecture",
          "gate": "V06",
          "impact": "High",
          "material": true,
          "testability": 3,
          "dependentModels": [
           "Capital",
           "Commercial"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-19",
            "summary": "Indicative term sheet from a BaaS lender: $20M facility"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-10",
            "summary": "Two lenders confirm 4–6 month onboarding"
           }
          ]
         },
         {
          "id": "H17",
          "text": "The platform can meet ISO 27001 / SOC 2 expectations of mid-market finance teams within 12 months",
          "domain": "Technology / Architecture",
          "gate": "V06",
          "impact": "Medium",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Technology",
           "Capability"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-24",
            "summary": "vCISO view: SOC 2 Type 1 feasible in 9 months"
           }
          ],
          "openExperiments": [
           {
            "name": "SOC 2 readiness gap assessment",
            "method": "Technical assessment",
            "cost": 9000,
            "days": 30
           }
          ]
         },
         {
          "id": "H18",
          "text": "An AI collections assistant improves recovery rates by 10%",
          "domain": "Technology / Architecture",
          "gate": "V06",
          "impact": "Low",
          "material": false,
          "testability": 3,
          "dependentModels": [
           "Commercial"
          ],
          "evidence": []
         },
         {
          "id": "H19",
          "text": "Gross margin of at least 60% after funding cost and expected credit losses",
          "domain": "Commercial / Financial",
          "gate": "V07",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Commercial",
           "Capital"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 2,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-16",
            "summary": "Unit model at 2.0% fee, 7.5% funding cost: 61% gross margin"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-07",
            "summary": "Funding cost range 7.2%–8.4% in term sheets"
           }
          ],
          "openExperiments": [
           {
            "name": "Funding-cost term sheets from 3 lending partners",
            "method": "Commercial negotiation",
            "cost": 5000,
            "days": 35
           }
          ]
         },
         {
          "id": "H20",
          "text": "Monthly logo churn stays below 2%",
          "domain": "Commercial / Financial",
          "gate": "V07",
          "impact": "High",
          "material": true,
          "testability": 3,
          "dependentModels": [
           "Revenue",
           "Capital"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-15",
            "summary": "1 of 12 pilot suppliers churned in 5 months (~1.7%/month)"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-06",
            "summary": "Suppliers expect to keep terms once offered"
           }
          ],
          "openExperiments": [
           {
            "name": "Pilot cohort retention tracking (12 suppliers)",
            "method": "Pilot cohort",
            "cost": 2000,
            "days": 90
           }
          ]
         },
         {
          "id": "H21",
          "text": "Average revenue per account of at least $1,800 a month",
          "domain": "Commercial / Financial",
          "gate": "V07",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Revenue",
           "Capital"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 1,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-25",
            "summary": "Founder model: $1,850/month at $1.1M monthly financed volume"
           }
          ],
          "openExperiments": [
           {
            "name": "Pricing quote test with 25 suppliers",
            "method": "Willingness-to-pay test",
            "cost": 4000,
            "days": 28
           }
          ]
         },
         {
          "id": "H22",
          "text": "Expected credit loss at or below 1.2% of financed volume",
          "domain": "Commercial / Financial",
          "gate": "V07",
          "impact": "Medium",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Commercial"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-24",
            "summary": "Trade-credit insurer loss data: 0.8%–1.5% for wholesale"
           }
          ],
          "openExperiments": [
           {
            "name": "Loss-rate back-test on pilot book",
            "method": "Data analysis",
            "cost": 3000,
            "days": 21
           }
          ]
         },
         {
          "id": "H23",
          "text": "CAC at or below $9,000 through the accountant partner channel",
          "domain": "Go-to-Market",
          "gate": "V08",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Capital",
           "GTM"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 1,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-23",
            "summary": "Accountant referral benchmarks: $6k–$12k CAC"
           },
           {
            "direction": "Neutral",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 1,
            "capturedDate": "2026-09-22",
            "summary": "Accountant partner programme designed; no paid test yet"
           }
          ],
          "openExperiments": [
           {
            "name": "Accountant partner channel test — 3 firms, 8 weeks",
            "method": "Sales test",
            "cost": 18000,
            "days": 56
           }
          ]
         },
         {
          "id": "H24",
          "text": "Lead-to-customer conversion of at least 6%",
          "domain": "Go-to-Market",
          "gate": "V08",
          "impact": "High",
          "material": true,
          "testability": 5,
          "dependentModels": [
           "Revenue",
           "Capital",
           "GTM"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 4,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-30",
            "summary": "Early pilot cohort: 6.4% lead-to-customer (n=47)"
           },
           {
            "direction": "Contradicts",
            "reliability": 4,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-21",
            "summary": "Checkout A/B test: 3.1% lead-to-customer across 290 leads"
           },
           {
            "direction": "Contradicts",
            "reliability": 4,
            "relevance": 5,
            "sampleAdequacy": 4,
            "capturedDate": "2026-08-12",
            "summary": "Marketplace listing conversion 2.8% over 6 weeks"
           }
          ]
         },
         {
          "id": "H25",
          "text": "Sales cycle under 60 days",
          "domain": "Go-to-Market",
          "gate": "V08",
          "impact": "Medium",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "GTM",
           "Capital"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-15",
            "summary": "Median 48-day cycle across 9 pilot deals"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-06",
            "summary": "Finance managers can approve tools under $3k/month"
           }
          ]
         },
         {
          "id": "H26",
          "text": "200 qualified leads a month achievable by month 6",
          "domain": "Go-to-Market",
          "gate": "V08",
          "impact": "Medium",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "GTM",
           "Revenue"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-25",
            "summary": "Landing page test: 61 qualified leads in 4 weeks at $95 per lead"
           }
          ],
          "openExperiments": [
           {
            "name": "Marketplace listing + LinkedIn lead-generation test",
            "method": "Landing page / paid test",
            "cost": 7000,
            "days": 45
           }
          ]
         },
         {
          "id": "H27",
          "text": "Industry associations will co-market NovaPay",
          "domain": "Go-to-Market",
          "gate": "V08",
          "impact": "Low",
          "material": false,
          "testability": 3,
          "dependentModels": [
           "GTM"
          ],
          "evidence": []
         },
         {
          "id": "H28",
          "text": "A credit-risk lead can be hired within 3 months",
          "domain": "Capability / Execution",
          "gate": "V09",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Capability"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-23",
            "summary": "Recruiter: credit-risk leads typically 3–5 months to hire"
           }
          ],
          "openExperiments": [
           {
            "name": "Credit-risk lead search via specialist recruiter",
            "method": "Recruitment",
            "cost": 20000,
            "days": 60
           }
          ]
         },
         {
          "id": "H29",
          "text": "One customer-success manager can look after 60 accounts",
          "domain": "Capability / Execution",
          "gate": "V09",
          "impact": "Medium",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Capability",
           "Capital"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-16",
            "summary": "Pilot CSM handled 12 accounts at 25% utilisation"
           },
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-07",
            "summary": "Benchmark: 50–80 SMB accounts per CSM"
           }
          ]
         },
         {
          "id": "H30",
          "text": "An engineering team of 6 can deliver MVP + integrations in 9 months",
          "domain": "Capability / Execution",
          "gate": "V09",
          "impact": "Medium",
          "material": true,
          "testability": 3,
          "dependentModels": [
           "Capability",
           "Technology"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 4,
            "relevance": 4,
            "sampleAdequacy": 4,
            "capturedDate": "2024-10-08",
            "summary": "Delivery estimate from previous fintech build (2024)"
           },
           {
            "direction": "Supports",
            "reliability": 4,
            "relevance": 4,
            "sampleAdequacy": 4,
            "capturedDate": "2024-09-29",
            "summary": "Architecture spike velocity (2024 prototype)"
           }
          ]
         },
         {
          "id": "H31",
          "text": "An AFSL / ACL is not required under the partner lending model",
          "domain": "Risk & Investment Readiness",
          "gate": "V10",
          "impact": "High",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Capital",
           "Capability"
          ],
          "evidence": [
           {
            "direction": "Neutral",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 1,
            "capturedDate": "2026-09-21",
            "summary": "Regulatory counsel engaged; opinion due in 3 weeks"
           }
          ],
          "openExperiments": [
           {
            "name": "Regulatory counsel opinion on partner lending model",
            "method": "Expert / legal opinion",
            "cost": 15000,
            "days": 21
           }
          ]
         },
         {
          "id": "H32",
          "text": "A $4M seed round is raisable on current traction",
          "domain": "Risk & Investment Readiness",
          "gate": "V10",
          "impact": "High",
          "material": true,
          "testability": 3,
          "dependentModels": [
           "Capital"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 2,
            "relevance": 3,
            "sampleAdequacy": 2,
            "capturedDate": "2026-04-24",
            "summary": "Two angels indicate seed participation if pilot metrics hold"
           }
          ],
          "openExperiments": [
           {
            "name": "Investor pre-pitch soundings (10 funds)",
            "method": "Investor interviews",
            "cost": 2000,
            "days": 30
           }
          ]
         },
         {
          "id": "H33",
          "text": "No single buyer exceeds 10% of the financed book",
          "domain": "Risk & Investment Readiness",
          "gate": "V10",
          "impact": "Medium",
          "material": true,
          "testability": 4,
          "dependentModels": [
           "Commercial"
          ],
          "evidence": [
           {
            "direction": "Supports",
            "reliability": 3,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-17",
            "summary": "Largest buyer 7.8% of pilot book"
           },
           {
            "direction": "Supports",
            "reliability": 2,
            "relevance": 4,
            "sampleAdequacy": 3,
            "capturedDate": "2026-07-08",
            "summary": "Exposure limits modelled at 8% per buyer"
           }
          ]
         }
        ],
        "blockers": [
         {
          "gate": "V10",
          "text": "Licensing required for the partner lending model"
         }
        ],
        "financials": {
         "ltvCac": null,
         "runwayMonths": 8,
         "grossMargin": null
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "Result with provenance",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RunResult"
        }
       }
      }
     },
     "401": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "402": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "422": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/engines/ai-business-case": {
   "get": {
    "operationId": "get_ai_business_case",
    "summary": "AI Business Case Engine: schema, sample and method",
    "responses": {
     "200": {
      "description": "Engine spec"
     }
    }
   }
  },
  "/api/v1/engines/ai-business-case/run": {
   "post": {
    "operationId": "run_ai_business_case",
    "summary": "Run AI Business Case Engine (10 credits)",
    "description": "Decides which AI initiatives have earned funding: evidence-adjusted benefit, a 12-month token, inference and licence spend forecast as P10/P50/P90, adjusted ROI, six red flags and a Fund / Pilot / Stop decision per initiative.",
    "security": [
     {
      "bearer": []
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "initiatives"
        ],
        "properties": {
         "currency": {
          "type": "string"
         },
         "aiBudgetMonthly": {
          "type": "number",
          "minimum": 0
         },
         "evidenceWeight": {
          "type": "number",
          "minimum": 0.1,
          "maximum": 1
         },
         "runs": {
          "type": "integer",
          "minimum": 200,
          "maximum": 5000
         },
         "seed": {
          "type": "integer"
         },
         "modelPricing": {
          "type": "object",
          "description": "Tier name -> [input $/M tokens, output $/M tokens]"
         },
         "initiatives": {
          "type": "array",
          "minItems": 1,
          "maxItems": 50,
          "items": {
           "type": "object",
           "required": [
            "id",
            "name",
            "modelType",
            "claimedAnnualBenefit",
            "baselineMeasured",
            "benefitMetric",
            "claims"
           ],
           "properties": {
            "id": {
             "type": "string"
            },
            "name": {
             "type": "string"
            },
            "owner": {
             "type": "string"
            },
            "stage": {
             "type": "string"
            },
            "modelType": {
             "type": "string",
             "enum": [
              "LLM API",
              "SaaS copilot",
              "Classic ML"
             ]
            },
            "modelTier": {
             "type": "string"
            },
            "claimedAnnualBenefit": {
             "type": "number",
             "minimum": 0
            },
            "baselineMeasured": {
             "type": "boolean"
            },
            "benefitMetric": {
             "type": "string"
            },
            "monthlyRequests": {
             "type": "number",
             "minimum": 0
            },
            "inputTokensPerRequest": {
             "type": "number",
             "minimum": 0
            },
            "outputTokensPerRequest": {
             "type": "number",
             "minimum": 0
            },
            "seats": {
             "type": "number",
             "minimum": 0
            },
            "seatPrice": {
             "type": "number",
             "minimum": 0
            },
            "platformMonthly": {
             "type": "number",
             "minimum": 0
            },
            "peopleAnnual": {
             "type": "number",
             "minimum": 0
            },
            "oneOffBuild": {
             "type": "number",
             "minimum": 0
            },
            "monthsToFullAdoption": {
             "type": "number",
             "minimum": 1,
             "maximum": 36
            },
            "claims": {
             "type": "array",
             "minItems": 1,
             "items": {
              "type": "object",
              "required": [
               "text",
               "benefitShare",
               "evidence"
              ],
              "properties": {
               "id": {
                "type": "string"
               },
               "text": {
                "type": "string"
               },
               "benefitShare": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
               },
               "evidence": {
                "type": "array",
                "items": {
                 "type": "object",
                 "required": [
                  "type",
                  "direction"
                 ],
                 "properties": {
                  "type": {
                   "type": "string",
                   "enum": [
                    "Vendor claim",
                    "Demo",
                    "Staff survey",
                    "Expert estimate",
                    "Pilot telemetry",
                    "Backtest",
                    "A/B test",
                    "Production data"
                   ]
                  },
                  "direction": {
                   "type": "string",
                   "enum": [
                    "Supports",
                    "Contradicts",
                    "Neutral"
                   ]
                  },
                  "summary": {
                   "type": "string"
                  }
                 }
                }
               }
              }
             }
            }
           }
          }
         }
        }
       },
       "example": {
        "currency": "USD",
        "aiBudgetMonthly": 120000,
        "evidenceWeight": 0.75,
        "initiatives": [
         {
          "id": "AI01",
          "name": "Customer service assistant",
          "owner": "Head of Customer Care",
          "stage": "Pilot",
          "modelType": "LLM API",
          "modelTier": "Mid-tier LLM API",
          "claimedAnnualBenefit": 1800000,
          "baselineMeasured": true,
          "benefitMetric": "Contacts resolved without an agent",
          "monthlyRequests": 900000,
          "inputTokensPerRequest": 24000,
          "outputTokensPerRequest": 2500,
          "seats": 0,
          "seatPrice": 0,
          "platformMonthly": 9000,
          "peopleAnnual": 240000,
          "oneOffBuild": 380000,
          "monthsToFullAdoption": 6,
          "claims": [
           {
            "id": "C01",
            "text": "Assistant resolves 35% of contacts without an agent",
            "benefitShare": 0.7,
            "evidence": [
             {
              "type": "Pilot telemetry",
              "direction": "Supports",
              "summary": "6-week pilot: 22% containment on all intents, 31% on the top 20"
             },
             {
              "type": "Vendor claim",
              "direction": "Supports",
              "summary": "Vendor case study quotes 40% containment"
             }
            ]
           },
           {
            "id": "C02",
            "text": "Customer satisfaction does not fall",
            "benefitShare": 0.3,
            "evidence": [
             {
              "type": "Pilot telemetry",
              "direction": "Supports",
              "summary": "Post-chat CSAT 4.2 vs 4.3 for agents"
             }
            ]
           }
          ]
         },
         {
          "id": "AI02",
          "name": "Product description generator",
          "owner": "Director of E-commerce",
          "stage": "Scaling",
          "modelType": "LLM API",
          "modelTier": "Small LLM API",
          "claimedAnnualBenefit": 420000,
          "baselineMeasured": true,
          "benefitMetric": "Conversion on new product pages",
          "monthlyRequests": 60000,
          "inputTokensPerRequest": 1500,
          "outputTokensPerRequest": 600,
          "seats": 0,
          "seatPrice": 0,
          "platformMonthly": 1500,
          "peopleAnnual": 60000,
          "oneOffBuild": 70000,
          "monthsToFullAdoption": 2,
          "claims": [
           {
            "id": "C03",
            "text": "Generated descriptions lift conversion by 2%",
            "benefitShare": 0.8,
            "evidence": [
             {
              "type": "A/B test",
              "direction": "Supports",
              "summary": "A/B test, 2 categories: +2.4% conversion, significant"
             }
            ]
           },
           {
            "id": "C04",
            "text": "Copywriter time per product falls by 70%",
            "benefitShare": 0.2,
            "evidence": [
             {
              "type": "Production data",
              "direction": "Supports",
              "summary": "Copywriter time per SKU down from 25 to 7 minutes"
             }
            ]
           }
          ]
         },
         {
          "id": "AI03",
          "name": "Demand forecasting",
          "owner": "VP Supply Chain",
          "stage": "Pilot",
          "modelType": "Classic ML",
          "claimedAnnualBenefit": 2400000,
          "baselineMeasured": true,
          "benefitMetric": "Inventory carrying cost",
          "monthlyRequests": 0,
          "inputTokensPerRequest": 0,
          "outputTokensPerRequest": 0,
          "seats": 0,
          "seatPrice": 0,
          "platformMonthly": 14000,
          "peopleAnnual": 320000,
          "oneOffBuild": 450000,
          "monthsToFullAdoption": 4,
          "claims": [
           {
            "id": "C05",
            "text": "Forecast error falls by 20% against the current planner",
            "benefitShare": 0.6,
            "evidence": [
             {
              "type": "Backtest",
              "direction": "Supports",
              "summary": "Backtest on 2 years of data: error down 18%"
             }
            ]
           },
           {
            "id": "C06",
            "text": "Lower error converts into 8% less safety stock",
            "benefitShare": 0.4,
            "evidence": [
             {
              "type": "Expert estimate",
              "direction": "Supports",
              "summary": "Planning lead estimates 5 to 10% safety-stock reduction"
             }
            ]
           }
          ]
         },
         {
          "id": "AI04",
          "name": "Copilot licences for all office staff",
          "stage": "Idea",
          "modelType": "SaaS copilot",
          "claimedAnnualBenefit": 3100000,
          "baselineMeasured": false,
          "benefitMetric": "Productivity (unspecified)",
          "monthlyRequests": 0,
          "inputTokensPerRequest": 0,
          "outputTokensPerRequest": 0,
          "seats": 1200,
          "seatPrice": 30,
          "platformMonthly": 0,
          "peopleAnnual": 90000,
          "oneOffBuild": 50000,
          "monthsToFullAdoption": 2,
          "claims": [
           {
            "id": "C07",
            "text": "Each office worker saves 4 hours a week",
            "benefitShare": 0.8,
            "evidence": [
             {
              "type": "Vendor claim",
              "direction": "Supports",
              "summary": "Vendor study: 4 hours saved per user per week"
             },
             {
              "type": "Staff survey",
              "direction": "Supports",
              "summary": "Survey of 40 trial users: 'feels faster'"
             }
            ]
           },
           {
            "id": "C08",
            "text": "Saved time is redeployed to valuable work",
            "benefitShare": 0.2,
            "evidence": [
             {
              "type": "Vendor claim",
              "direction": "Supports",
              "summary": "Vendor ROI calculator"
             }
            ]
           }
          ]
         },
         {
          "id": "AI05",
          "name": "Payment fraud detection",
          "owner": "CFO",
          "stage": "Live",
          "modelType": "Classic ML",
          "claimedAnnualBenefit": 900000,
          "baselineMeasured": true,
          "benefitMetric": "Chargeback losses",
          "monthlyRequests": 0,
          "inputTokensPerRequest": 0,
          "outputTokensPerRequest": 0,
          "seats": 0,
          "seatPrice": 0,
          "platformMonthly": 6000,
          "peopleAnnual": 150000,
          "oneOffBuild": 0,
          "monthsToFullAdoption": 1,
          "claims": [
           {
            "id": "C09",
            "text": "Model blocks 40% more fraud at the same false-positive rate",
            "benefitShare": 1,
            "evidence": [
             {
              "type": "Production data",
              "direction": "Supports",
              "summary": "12 months live: chargebacks down 38%"
             },
             {
              "type": "A/B test",
              "direction": "Supports",
              "summary": "Champion/challenger test confirmed the lift"
             }
            ]
           }
          ]
         },
         {
          "id": "AI06",
          "name": "Personalised recommendations",
          "owner": "Director of E-commerce",
          "stage": "Pilot",
          "modelType": "LLM API",
          "modelTier": "Small LLM API",
          "claimedAnnualBenefit": 1500000,
          "baselineMeasured": true,
          "benefitMetric": "Average order value",
          "monthlyRequests": 2500000,
          "inputTokensPerRequest": 900,
          "outputTokensPerRequest": 120,
          "seats": 0,
          "seatPrice": 0,
          "platformMonthly": 7000,
          "peopleAnnual": 180000,
          "oneOffBuild": 260000,
          "monthsToFullAdoption": 5,
          "claims": [
           {
            "id": "C10",
            "text": "Recommendations lift average order value by 3%",
            "benefitShare": 0.75,
            "evidence": [
             {
              "type": "A/B test",
              "direction": "Supports",
              "summary": "A/B test: +2.1% average order value"
             }
            ]
           },
           {
            "id": "C11",
            "text": "Recommendations do not cannibalise margin",
            "benefitShare": 0.25,
            "evidence": [
             {
              "type": "Pilot telemetry",
              "direction": "Contradicts",
              "summary": "Pilot shows a shift toward discounted items"
             }
            ]
           }
          ]
         },
         {
          "id": "AI07",
          "name": "AI code assistant for engineering",
          "owner": "CIO",
          "stage": "Pilot",
          "modelType": "SaaS copilot",
          "claimedAnnualBenefit": 650000,
          "baselineMeasured": true,
          "benefitMetric": "Delivery throughput (story points)",
          "monthlyRequests": 0,
          "inputTokensPerRequest": 0,
          "outputTokensPerRequest": 0,
          "seats": 90,
          "seatPrice": 39,
          "platformMonthly": 0,
          "peopleAnnual": 20000,
          "oneOffBuild": 15000,
          "monthsToFullAdoption": 1,
          "claims": [
           {
            "id": "C12",
            "text": "Engineers ship 15% more work",
            "benefitShare": 0.7,
            "evidence": [
             {
              "type": "Pilot telemetry",
              "direction": "Supports",
              "summary": "Pull requests per engineer up 11% in pilot squads"
             }
            ]
           },
           {
            "id": "C13",
            "text": "Code quality does not fall",
            "benefitShare": 0.3,
            "evidence": [
             {
              "type": "Pilot telemetry",
              "direction": "Contradicts",
              "summary": "Defect escape rate up 9% in pilot squads"
             }
            ]
           }
          ]
         },
         {
          "id": "AI08",
          "name": "Store operations voice assistant",
          "stage": "Idea",
          "modelType": "LLM API",
          "modelTier": "Frontier LLM API",
          "claimedAnnualBenefit": 800000,
          "baselineMeasured": false,
          "benefitMetric": "Productivity (unspecified)",
          "monthlyRequests": 400000,
          "inputTokensPerRequest": 9000,
          "outputTokensPerRequest": 1500,
          "seats": 0,
          "seatPrice": 0,
          "platformMonthly": 12000,
          "peopleAnnual": 200000,
          "oneOffBuild": 520000,
          "monthsToFullAdoption": 8,
          "claims": [
           {
            "id": "C14",
            "text": "Staff save 30 minutes a shift on stock queries",
            "benefitShare": 1,
            "evidence": [
             {
              "type": "Demo",
              "direction": "Supports",
              "summary": "Vendor demo in one store"
             }
            ]
           }
          ]
         },
         {
          "id": "AI09",
          "name": "Contract review assistant",
          "owner": "Head of Procurement",
          "stage": "Pilot",
          "modelType": "LLM API",
          "modelTier": "Frontier LLM API",
          "claimedAnnualBenefit": 260000,
          "baselineMeasured": true,
          "benefitMetric": "External legal spend",
          "monthlyRequests": 2500,
          "inputTokensPerRequest": 60000,
          "outputTokensPerRequest": 4000,
          "seats": 0,
          "seatPrice": 0,
          "platformMonthly": 1500,
          "peopleAnnual": 40000,
          "oneOffBuild": 60000,
          "monthsToFullAdoption": 2,
          "claims": [
           {
            "id": "C15",
            "text": "First-pass review cuts external counsel hours by 30%",
            "benefitShare": 1,
            "evidence": [
             {
              "type": "Pilot telemetry",
              "direction": "Supports",
              "summary": "15 contracts: counsel hours down 26%"
             }
            ]
           }
          ]
         },
         {
          "id": "AI10",
          "name": "Marketing image generation",
          "owner": "CMO",
          "stage": "Pilot",
          "modelType": "LLM API",
          "modelTier": "Frontier LLM API",
          "claimedAnnualBenefit": 380000,
          "baselineMeasured": false,
          "benefitMetric": "Agency spend",
          "monthlyRequests": 30000,
          "inputTokensPerRequest": 600,
          "outputTokensPerRequest": 1500,
          "seats": 0,
          "seatPrice": 0,
          "platformMonthly": 3000,
          "peopleAnnual": 30000,
          "oneOffBuild": 40000,
          "monthsToFullAdoption": 3,
          "claims": [
           {
            "id": "C16",
            "text": "Generated images replace 40% of agency briefs",
            "benefitShare": 0.7,
            "evidence": [
             {
              "type": "Pilot telemetry",
              "direction": "Supports",
              "summary": "Design team used generated images for 35% of briefs"
             }
            ]
           },
           {
            "id": "C17",
            "text": "Generated images meet brand and legal standards",
            "benefitShare": 0.3,
            "evidence": [
             {
              "type": "Expert estimate",
              "direction": "Contradicts",
              "summary": "Legal flags unclear rights on training data"
             }
            ]
           }
          ]
         }
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "Result with provenance",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RunResult"
        }
       }
      }
     },
     "401": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "402": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "422": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  }
 },
 "components": {
  "securitySchemes": {
   "bearer": {
    "type": "http",
    "scheme": "bearer",
    "description": "sb_live_... API key from a purchase"
   }
  },
  "schemas": {
   "Error": {
    "type": "object",
    "properties": {
     "error": {
      "type": "object",
      "properties": {
       "code": {
        "type": "string"
       },
       "message": {
        "type": "string"
       }
      }
     }
    }
   },
   "RunResult": {
    "type": "object",
    "properties": {
     "engine": {
      "type": "string"
     },
     "result": {
      "type": "object"
     },
     "creditsUsed": {
      "type": "integer"
     },
     "provenance": {
      "type": "object"
     }
    }
   }
  }
 }
}