{
  "schemaVersion": 1,
  "kitId": "business-restaurant-catering",
  "restaurant": "Willow Event Kitchen",
  "asOf": "2026-09-08",
  "currency": "CAD",
  "period": {
    "start": "2026-08-20",
    "end": "2026-09-02"
  },
  "roundingRules": {
    "unitCostFromPack": "pack_price / pack_size, 6 decimal places, half up",
    "costPerRecipeUnit": "unit_cost_from_pack / recipe_units_per_stock_unit, 8 places",
    "asPurchasedQuantity": "recipe_quantity / (yield_percent / 100), 3 places",
    "lineCost": "as_purchased_quantity * cost_per_recipe_unit, 4 places",
    "plateCost": "sum of line costs, 2 places"
  },
  "ingredients": [
    {
      "ingredientId": "ING-01",
      "name": "Basmati Rice",
      "stockUnit": "kg",
      "pack": {
        "description": "Sack 20 kg",
        "sizeStockUnits": 20.0,
        "priceCad": 49.6
      },
      "unitCostFromPackCad": 2.48,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00248,
      "reference": {
        "purchaseId": "PUR-0085",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 2.48
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    },
    {
      "ingredientId": "ING-02",
      "name": "Chicken Breast",
      "stockUnit": "kg",
      "pack": {
        "description": "Case 4 x 2.5 kg vac-pack",
        "sizeStockUnits": 10.0,
        "priceCad": 93.4
      },
      "unitCostFromPackCad": 9.34,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00934,
      "reference": {
        "purchaseId": "PUR-0087",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 9.34
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    },
    {
      "ingredientId": "ING-03",
      "name": "Chickpeas",
      "stockUnit": "kg",
      "pack": {
        "description": "Case 6 x #10 cans (6 x 2.84 kg)",
        "sizeStockUnits": 17.04,
        "priceCad": 44.3
      },
      "unitCostFromPackCad": 2.599765,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00259977,
      "reference": {
        "purchaseId": "PUR-0089",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 2.6
      },
      "roundingResidualPerStockUnitCad": -0.000235,
      "allergens": []
    },
    {
      "ingredientId": "ING-04",
      "name": "Carrots",
      "stockUnit": "kg",
      "pack": {
        "description": "Sack 10 kg",
        "sizeStockUnits": 10.0,
        "priceCad": 16.9
      },
      "unitCostFromPackCad": 1.69,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00169,
      "reference": {
        "purchaseId": "PUR-0091",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 1.69
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    },
    {
      "ingredientId": "ING-05",
      "name": "Yogurt",
      "stockUnit": "kg",
      "pack": {
        "description": "Case 6 x 2 kg",
        "sizeStockUnits": 12.0,
        "priceCad": 38.52
      },
      "unitCostFromPackCad": 3.21,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00321,
      "reference": {
        "purchaseId": "PUR-0093",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 3.21
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": [
        "milk"
      ]
    },
    {
      "ingredientId": "ING-06",
      "name": "Service Tray",
      "stockUnit": "each",
      "pack": {
        "description": "Carton of 100",
        "sizeStockUnits": 100.0,
        "priceCad": 120.0
      },
      "unitCostFromPackCad": 1.2,
      "recipeUnit": "each",
      "recipeUnitsPerStockUnit": 1,
      "costPerRecipeUnitCad": 1.2,
      "reference": {
        "purchaseId": "PUR-0095",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 1.2
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    }
  ],
  "dishes": [
    {
      "menuItemId": "MENU-01",
      "name": "Chicken buffet portion",
      "menuPriceCad": 21.0,
      "lines": [
        {
          "recipeLineId": "REC-001",
          "ingredientId": "ING-01",
          "ingredient": "Basmati Rice",
          "recipeQuantity": 80.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 88.889,
          "lineCostCad": 0.2204
        },
        {
          "recipeLineId": "REC-002",
          "ingredientId": "ING-02",
          "ingredient": "Chicken Breast",
          "recipeQuantity": 180.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 180.0,
          "lineCostCad": 1.6812
        },
        {
          "recipeLineId": "REC-003",
          "ingredientId": "ING-04",
          "ingredient": "Carrots",
          "recipeQuantity": 80.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 80.0,
          "lineCostCad": 0.1352
        },
        {
          "recipeLineId": "REC-004",
          "ingredientId": "ING-05",
          "ingredient": "Yogurt",
          "recipeQuantity": 30.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 30.0,
          "lineCostCad": 0.0963
        },
        {
          "recipeLineId": "REC-005",
          "ingredientId": "ING-06",
          "ingredient": "Service Tray",
          "recipeQuantity": 0.05,
          "recipeUnit": "each",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 0.05,
          "lineCostCad": 0.06
        }
      ],
      "plateCostCad": 2.19,
      "grossMarginCad": 18.81,
      "foodCostPercent": 10.43,
      "marginPercent": 89.57
    },
    {
      "menuItemId": "MENU-02",
      "name": "Vegetarian buffet portion",
      "menuPriceCad": 18.0,
      "lines": [
        {
          "recipeLineId": "REC-006",
          "ingredientId": "ING-01",
          "ingredient": "Basmati Rice",
          "recipeQuantity": 80.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 88.889,
          "lineCostCad": 0.2204
        },
        {
          "recipeLineId": "REC-007",
          "ingredientId": "ING-03",
          "ingredient": "Chickpeas",
          "recipeQuantity": 180.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 180.0,
          "lineCostCad": 0.468
        },
        {
          "recipeLineId": "REC-008",
          "ingredientId": "ING-04",
          "ingredient": "Carrots",
          "recipeQuantity": 100.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 100.0,
          "lineCostCad": 0.169
        },
        {
          "recipeLineId": "REC-009",
          "ingredientId": "ING-05",
          "ingredient": "Yogurt",
          "recipeQuantity": 30.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 30.0,
          "lineCostCad": 0.0963
        },
        {
          "recipeLineId": "REC-010",
          "ingredientId": "ING-06",
          "ingredient": "Service Tray",
          "recipeQuantity": 0.05,
          "recipeUnit": "each",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 0.05,
          "lineCostCad": 0.06
        }
      ],
      "plateCostCad": 1.01,
      "grossMarginCad": 16.99,
      "foodCostPercent": 5.61,
      "marginPercent": 94.39
    },
    {
      "menuItemId": "MENU-03",
      "name": "Lunch box",
      "menuPriceCad": 17.5,
      "lines": [
        {
          "recipeLineId": "REC-011",
          "ingredientId": "ING-01",
          "ingredient": "Basmati Rice",
          "recipeQuantity": 60.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 66.667,
          "lineCostCad": 0.1653
        },
        {
          "recipeLineId": "REC-012",
          "ingredientId": "ING-02",
          "ingredient": "Chicken Breast",
          "recipeQuantity": 120.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 120.0,
          "lineCostCad": 1.1208
        },
        {
          "recipeLineId": "REC-013",
          "ingredientId": "ING-04",
          "ingredient": "Carrots",
          "recipeQuantity": 60.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 60.0,
          "lineCostCad": 0.1014
        },
        {
          "recipeLineId": "REC-014",
          "ingredientId": "ING-06",
          "ingredient": "Service Tray",
          "recipeQuantity": 0.05,
          "recipeUnit": "each",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 0.05,
          "lineCostCad": 0.06
        }
      ],
      "plateCostCad": 1.45,
      "grossMarginCad": 16.05,
      "foodCostPercent": 8.29,
      "marginPercent": 91.71
    },
    {
      "menuItemId": "MENU-04",
      "name": "Reception plate",
      "menuPriceCad": 15.0,
      "lines": [
        {
          "recipeLineId": "REC-015",
          "ingredientId": "ING-01",
          "ingredient": "Basmati Rice",
          "recipeQuantity": 50.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 55.556,
          "lineCostCad": 0.1378
        },
        {
          "recipeLineId": "REC-016",
          "ingredientId": "ING-03",
          "ingredient": "Chickpeas",
          "recipeQuantity": 100.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 100.0,
          "lineCostCad": 0.26
        },
        {
          "recipeLineId": "REC-017",
          "ingredientId": "ING-04",
          "ingredient": "Carrots",
          "recipeQuantity": 80.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 80.0,
          "lineCostCad": 0.1352
        },
        {
          "recipeLineId": "REC-018",
          "ingredientId": "ING-05",
          "ingredient": "Yogurt",
          "recipeQuantity": 40.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 40.0,
          "lineCostCad": 0.1284
        },
        {
          "recipeLineId": "REC-019",
          "ingredientId": "ING-06",
          "ingredient": "Service Tray",
          "recipeQuantity": 0.05,
          "recipeUnit": "each",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 0.05,
          "lineCostCad": 0.06
        }
      ],
      "plateCostCad": 0.72,
      "grossMarginCad": 14.28,
      "foodCostPercent": 4.8,
      "marginPercent": 95.2
    }
  ],
  "notes": [
    "Costs trace to the shared operating model: every reference purchase id exists in its purchases table and every recipe line exists in its recipes table.",
    "Pack price is the pack size times the reference purchase unit price, rounded to the cent. Costing then divides back down, so a fractional pack size leaves a residual that only appears from the third decimal place onward.",
    "Water, salt and minor seasonings are outside the shared six-ingredient purchase study and are therefore outside these plate costs."
  ]
}
