{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://packrift-flex-packaging-fit-lab.vercel.app/data/scenario-schema.json",
  "title": "Packrift Flex Fit Lab Scenario Row",
  "description": "JSON Schema for one row in the Packrift Flex Packaging Fit Lab scenario corpus.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "slug",
    "title",
    "segment",
    "variant",
    "buyer",
    "intent",
    "monthly_orders",
    "order_quantity",
    "item_length_in",
    "item_width_in",
    "item_height_in",
    "item_weight_lb",
    "current_package",
    "recommended_package",
    "current_cost_per_order_usd",
    "recommended_cost_per_order_usd",
    "annual_impact_usd",
    "current_billable_weight_lb",
    "recommended_billable_weight_lb",
    "billable_weight_delta_lb",
    "current_utilization",
    "recommended_utilization",
    "damage_rate_delta_points",
    "recommendation_status",
    "scenario_url",
    "calculator_url"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Stable scenario slug used in HTML and data URLs."
    },
    "title": {
      "type": "string",
      "description": "Human-readable scenario title."
    },
    "segment": {
      "type": "string",
      "description": "Ecommerce packaging segment represented by the scenario."
    },
    "variant": {
      "type": "string",
      "description": "Decision lens applied to the segment."
    },
    "buyer": {
      "type": "string",
      "description": "Likely operator or buyer role for the scenario."
    },
    "intent": {
      "type": "string",
      "description": "Decision question the scenario is intended to screen."
    },
    "monthly_orders": {
      "type": "integer",
      "description": "Modeled monthly order count."
    },
    "order_quantity": {
      "type": "integer",
      "description": "Units in the modeled order."
    },
    "item_length_in": {
      "type": "number",
      "description": "Modeled item length in inches."
    },
    "item_width_in": {
      "type": "number",
      "description": "Modeled item width in inches."
    },
    "item_height_in": {
      "type": "number",
      "description": "Modeled item height in inches after variant adjustment."
    },
    "item_weight_lb": {
      "type": "number",
      "description": "Modeled item weight in pounds per unit."
    },
    "current_package": {
      "type": "string",
      "description": "Current packaging baseline label."
    },
    "recommended_package": {
      "type": "string",
      "description": "Package model selected by the screening calculation."
    },
    "current_cost_per_order_usd": {
      "type": "number",
      "description": "Modeled cost per order for the current package."
    },
    "recommended_cost_per_order_usd": {
      "type": "number",
      "description": "Modeled cost per order for the recommended package."
    },
    "annual_impact_usd": {
      "type": "number",
      "description": "Annualized modeled savings or added cost versus the current package."
    },
    "current_billable_weight_lb": {
      "type": "number",
      "description": "Modeled billable weight for the current package."
    },
    "recommended_billable_weight_lb": {
      "type": "number",
      "description": "Modeled billable weight for the recommended package."
    },
    "billable_weight_delta_lb": {
      "type": "number",
      "description": "Recommended billable weight minus current billable weight."
    },
    "current_utilization": {
      "type": "number",
      "description": "Modeled occupied volume divided by current package cube."
    },
    "recommended_utilization": {
      "type": "number",
      "description": "Modeled occupied volume divided by recommended package cube."
    },
    "damage_rate_delta_points": {
      "type": "number",
      "description": "Recommended damage-rate reserve minus current damage-rate reserve in percentage points."
    },
    "recommendation_status": {
      "type": "string",
      "description": "Short guardrail or reason attached to the recommendation."
    },
    "scenario_url": {
      "type": "string",
      "description": "Canonical public HTML page for the scenario.",
      "format": "uri"
    },
    "calculator_url": {
      "type": "string",
      "description": "Live calculator URL with scenario assumptions encoded in query parameters.",
      "format": "uri"
    }
  }
}
