{
  "schemaVersion": 1,
  "kitId": "business-restaurant-catering",
  "restaurant": "Willow Event Kitchen",
  "menuTitle": "Event menu",
  "asOf": "2026-09-08",
  "currency": "CAD",
  "locale": "en-CA",
  "period": {
    "start": "2026-08-20",
    "end": "2026-09-02"
  },
  "sources": {
    "plateCosts": "/files/data/restaurant-costing-v1/restaurant-catering/plate-costs.csv",
    "allergenMatrix": "/files/data/restaurant-costing-v1/restaurant-catering/allergen-matrix.csv",
    "operatingModel": "/files/data/business-kits-v1/restaurant-catering/operating-model.json"
  },
  "allergenKey": [
    {
      "number": 1,
      "id": "cereals_gluten",
      "name": "Cereals containing gluten"
    },
    {
      "number": 2,
      "id": "crustaceans",
      "name": "Crustaceans"
    },
    {
      "number": 3,
      "id": "eggs",
      "name": "Eggs"
    },
    {
      "number": 4,
      "id": "fish",
      "name": "Fish"
    },
    {
      "number": 5,
      "id": "peanuts",
      "name": "Peanuts"
    },
    {
      "number": 6,
      "id": "soybeans",
      "name": "Soybeans"
    },
    {
      "number": 7,
      "id": "milk",
      "name": "Milk"
    },
    {
      "number": 8,
      "id": "nuts",
      "name": "Tree nuts"
    },
    {
      "number": 9,
      "id": "celery",
      "name": "Celery"
    },
    {
      "number": 10,
      "id": "mustard",
      "name": "Mustard"
    },
    {
      "number": 11,
      "id": "sesame",
      "name": "Sesame"
    },
    {
      "number": 12,
      "id": "sulphites",
      "name": "Sulphur dioxide and sulphites"
    },
    {
      "number": 13,
      "id": "lupin",
      "name": "Lupin"
    },
    {
      "number": 14,
      "id": "molluscs",
      "name": "Molluscs"
    }
  ],
  "taxCodes": [
    {
      "code": "GST5",
      "percent": 5.0
    },
    {
      "code": "EXEMPT",
      "percent": 0.0
    }
  ],
  "sections": [
    {
      "name": "Buffet service",
      "items": [
        {
          "menuItemId": "MENU-01",
          "name": "Chicken buffet portion",
          "priceCad": 21.0,
          "plateCostCad": 2.19,
          "grossMarginCad": 18.81,
          "foodCostPercent": 10.43,
          "recipeLines": 5,
          "posItemCode": "MENU-01",
          "taxCode": "GST5",
          "modifierGroup": "MG-MENU-01",
          "allergens": [
            "milk"
          ],
          "allergenNumbers": [
            7
          ],
          "allergenSources": "milk: Yogurt",
          "modifiers": [
            {
              "modifierId": "MOD-01",
              "name": "Extra portion",
              "priceCad": 2.5
            },
            {
              "modifierId": "MOD-02",
              "name": "Takeaway packaging",
              "priceCad": 0.5
            }
          ]
        },
        {
          "menuItemId": "MENU-02",
          "name": "Vegetarian buffet portion",
          "priceCad": 18.0,
          "plateCostCad": 1.01,
          "grossMarginCad": 16.99,
          "foodCostPercent": 5.61,
          "recipeLines": 5,
          "posItemCode": "MENU-02",
          "taxCode": "GST5",
          "modifierGroup": "MG-MENU-02",
          "allergens": [
            "milk"
          ],
          "allergenNumbers": [
            7
          ],
          "allergenSources": "milk: Yogurt",
          "modifiers": [
            {
              "modifierId": "MOD-03",
              "name": "Extra portion",
              "priceCad": 2.5
            },
            {
              "modifierId": "MOD-04",
              "name": "Takeaway packaging",
              "priceCad": 0.5
            }
          ]
        }
      ]
    },
    {
      "name": "Delivered service",
      "items": [
        {
          "menuItemId": "MENU-03",
          "name": "Lunch box",
          "priceCad": 17.5,
          "plateCostCad": 1.45,
          "grossMarginCad": 16.05,
          "foodCostPercent": 8.29,
          "recipeLines": 4,
          "posItemCode": "MENU-03",
          "taxCode": "GST5",
          "modifierGroup": "MG-MENU-03",
          "allergens": [],
          "allergenNumbers": [],
          "allergenSources": "none declared from the costed recipe lines",
          "modifiers": [
            {
              "modifierId": "MOD-05",
              "name": "Extra portion",
              "priceCad": 2.5
            },
            {
              "modifierId": "MOD-06",
              "name": "Takeaway packaging",
              "priceCad": 0.5
            }
          ]
        },
        {
          "menuItemId": "MENU-04",
          "name": "Reception plate",
          "priceCad": 15.0,
          "plateCostCad": 0.72,
          "grossMarginCad": 14.28,
          "foodCostPercent": 4.8,
          "recipeLines": 5,
          "posItemCode": "MENU-04",
          "taxCode": "GST5",
          "modifierGroup": "MG-MENU-04",
          "allergens": [
            "milk"
          ],
          "allergenNumbers": [
            7
          ],
          "allergenSources": "milk: Yogurt",
          "modifiers": [
            {
              "modifierId": "MOD-07",
              "name": "Extra portion",
              "priceCad": 2.5
            },
            {
              "modifierId": "MOD-08",
              "name": "Takeaway packaging",
              "priceCad": 0.5
            }
          ]
        }
      ]
    }
  ],
  "drinks": {
    "pricingRule": "A drink sold both ways is poured 5 times from one bottle; the glass price is the bottle price divided by 5 and rounded up to the next 0.25.",
    "costed": false,
    "byTheGlass": [
      {
        "drinkId": "DRK-01",
        "posItemCode": "DRK-01G",
        "name": "Event white",
        "serveMl": 150,
        "priceCad": 6.5,
        "derivedFromBottle": true
      },
      {
        "drinkId": "DRK-02",
        "posItemCode": "DRK-02G",
        "name": "Event red",
        "serveMl": 150,
        "priceCad": 7.0,
        "derivedFromBottle": true
      },
      {
        "drinkId": "DRK-03",
        "posItemCode": "DRK-03G",
        "name": "Brut sparkling",
        "serveMl": 150,
        "priceCad": 9.0,
        "derivedFromBottle": true
      },
      {
        "drinkId": "DRK-04",
        "posItemCode": "DRK-04G",
        "name": "Apéritif sans alcool",
        "serveMl": 200,
        "priceCad": 6.0,
        "derivedFromBottle": false
      }
    ],
    "byTheBottle": [
      {
        "drinkId": "DRK-01",
        "posItemCode": "DRK-01B",
        "name": "Event white",
        "bottleMl": 750,
        "priceCad": 32.0
      },
      {
        "drinkId": "DRK-02",
        "posItemCode": "DRK-02B",
        "name": "Event red",
        "bottleMl": 750,
        "priceCad": 34.0
      },
      {
        "drinkId": "DRK-03",
        "posItemCode": "DRK-03B",
        "name": "Brut sparkling",
        "bottleMl": 750,
        "priceCad": 44.0
      },
      {
        "drinkId": "DRK-05",
        "posItemCode": "DRK-05B",
        "name": "Still water",
        "bottleMl": 1000,
        "priceCad": 5.0
      }
    ]
  },
  "setMenu": {
    "name": "Two portion buffet package",
    "priceCad": 35.0,
    "aLaCarteTotalCad": 39.0,
    "savingCad": 4.0,
    "menuItemIds": [
      "MENU-01",
      "MENU-02"
    ]
  },
  "kidsMenu": null,
  "specials": {
    "serviceDate": "2026-08-28",
    "rule": "85 percent of the menu price, rounded to the nearest 0.05",
    "items": [
      {
        "menuItemId": "MENU-02",
        "name": "Vegetarian buffet portion",
        "menuPriceCad": 18.0,
        "priceCad": 15.3,
        "savingCad": 2.7
      },
      {
        "menuItemId": "MENU-03",
        "name": "Lunch box",
        "menuPriceCad": 17.5,
        "priceCad": 14.9,
        "savingCad": 2.6
      }
    ]
  },
  "notes": [
    "Dish names, prices and allergen declarations are read from the costing folder listed under sources, so this document cannot disagree with the plate costs that shipped before it.",
    "Drinks are outside the shared ingredient costing study and carry list prices only. No plate cost is published for them and none is implied.",
    "Tax codes are fixture codes, not tax advice. GST5 carries 5.00 percent and matches the rate the costing folder's Z read uses; EXEMPT carries 0.00 percent and is applied only to the stored value line so an importer has two codes to map."
  ]
}
