{
  "schemaVersion": 1,
  "kitId": "business-restaurant-bistro",
  "restaurant": "Alder Table Bistro",
  "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": "Chicken Breast",
      "stockUnit": "kg",
      "pack": {
        "description": "Case 4 x 2.5 kg vac-pack",
        "sizeStockUnits": 10.0,
        "priceCad": 114.9
      },
      "unitCostFromPackCad": 11.49,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.01149,
      "reference": {
        "purchaseId": "PUR-0085",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 11.49
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    },
    {
      "ingredientId": "ING-02",
      "name": "Tomatoes",
      "stockUnit": "kg",
      "pack": {
        "description": "Crate 9 kg",
        "sizeStockUnits": 9.0,
        "priceCad": 26.37
      },
      "unitCostFromPackCad": 2.93,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00293,
      "reference": {
        "purchaseId": "PUR-0087",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 2.93
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    },
    {
      "ingredientId": "ING-03",
      "name": "Potatoes",
      "stockUnit": "kg",
      "pack": {
        "description": "Sack 20 kg",
        "sizeStockUnits": 20.0,
        "priceCad": 36.0
      },
      "unitCostFromPackCad": 1.8,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.0018,
      "reference": {
        "purchaseId": "PUR-0089",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 1.8
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    },
    {
      "ingredientId": "ING-04",
      "name": "Cream",
      "stockUnit": "l",
      "pack": {
        "description": "Case 12 x 1 L",
        "sizeStockUnits": 12.0,
        "priceCad": 72.96
      },
      "unitCostFromPackCad": 6.08,
      "recipeUnit": "ml",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00608,
      "reference": {
        "purchaseId": "PUR-0091",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 6.08
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": [
        "milk"
      ]
    },
    {
      "ingredientId": "ING-05",
      "name": "Mixed Greens",
      "stockUnit": "kg",
      "pack": {
        "description": "Case 6 x 1.5 kg",
        "sizeStockUnits": 9.0,
        "priceCad": 49.5
      },
      "unitCostFromPackCad": 5.5,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.0055,
      "reference": {
        "purchaseId": "PUR-0093",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 5.5
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    },
    {
      "ingredientId": "ING-06",
      "name": "Olive Oil",
      "stockUnit": "l",
      "pack": {
        "description": "Case 4 x 5 L",
        "sizeStockUnits": 20.0,
        "priceCad": 164.0
      },
      "unitCostFromPackCad": 8.2,
      "recipeUnit": "ml",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.0082,
      "reference": {
        "purchaseId": "PUR-0095",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 8.2
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    }
  ],
  "dishes": [
    {
      "menuItemId": "MENU-01",
      "name": "Roast chicken plate",
      "menuPriceCad": 24.0,
      "lines": [
        {
          "recipeLineId": "REC-001",
          "ingredientId": "ING-01",
          "ingredient": "Chicken Breast",
          "recipeQuantity": 200.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 222.222,
          "lineCostCad": 2.5533
        },
        {
          "recipeLineId": "REC-002",
          "ingredientId": "ING-03",
          "ingredient": "Potatoes",
          "recipeQuantity": 220.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 220.0,
          "lineCostCad": 0.396
        },
        {
          "recipeLineId": "REC-003",
          "ingredientId": "ING-06",
          "ingredient": "Olive Oil",
          "recipeQuantity": 15.0,
          "recipeUnit": "ml",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 15.0,
          "lineCostCad": 0.123
        }
      ],
      "plateCostCad": 3.07,
      "grossMarginCad": 20.93,
      "foodCostPercent": 12.79,
      "marginPercent": 87.21
    },
    {
      "menuItemId": "MENU-02",
      "name": "Tomato soup",
      "menuPriceCad": 11.5,
      "lines": [
        {
          "recipeLineId": "REC-004",
          "ingredientId": "ING-02",
          "ingredient": "Tomatoes",
          "recipeQuantity": 250.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 277.778,
          "lineCostCad": 0.8139
        },
        {
          "recipeLineId": "REC-005",
          "ingredientId": "ING-04",
          "ingredient": "Cream",
          "recipeQuantity": 60.0,
          "recipeUnit": "ml",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 60.0,
          "lineCostCad": 0.3648
        },
        {
          "recipeLineId": "REC-006",
          "ingredientId": "ING-06",
          "ingredient": "Olive Oil",
          "recipeQuantity": 10.0,
          "recipeUnit": "ml",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 10.0,
          "lineCostCad": 0.082
        }
      ],
      "plateCostCad": 1.26,
      "grossMarginCad": 10.24,
      "foodCostPercent": 10.96,
      "marginPercent": 89.04
    },
    {
      "menuItemId": "MENU-03",
      "name": "Garden salad",
      "menuPriceCad": 13.0,
      "lines": [
        {
          "recipeLineId": "REC-007",
          "ingredientId": "ING-05",
          "ingredient": "Mixed Greens",
          "recipeQuantity": 120.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 133.333,
          "lineCostCad": 0.7333
        },
        {
          "recipeLineId": "REC-008",
          "ingredientId": "ING-02",
          "ingredient": "Tomatoes",
          "recipeQuantity": 80.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 80.0,
          "lineCostCad": 0.2344
        },
        {
          "recipeLineId": "REC-009",
          "ingredientId": "ING-06",
          "ingredient": "Olive Oil",
          "recipeQuantity": 15.0,
          "recipeUnit": "ml",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 15.0,
          "lineCostCad": 0.123
        }
      ],
      "plateCostCad": 1.09,
      "grossMarginCad": 11.91,
      "foodCostPercent": 8.38,
      "marginPercent": 91.62
    },
    {
      "menuItemId": "MENU-04",
      "name": "Potato gratin",
      "menuPriceCad": 12.5,
      "lines": [
        {
          "recipeLineId": "REC-010",
          "ingredientId": "ING-03",
          "ingredient": "Potatoes",
          "recipeQuantity": 220.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 244.444,
          "lineCostCad": 0.44
        },
        {
          "recipeLineId": "REC-011",
          "ingredientId": "ING-04",
          "ingredient": "Cream",
          "recipeQuantity": 80.0,
          "recipeUnit": "ml",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 80.0,
          "lineCostCad": 0.4864
        },
        {
          "recipeLineId": "REC-012",
          "ingredientId": "ING-06",
          "ingredient": "Olive Oil",
          "recipeQuantity": 10.0,
          "recipeUnit": "ml",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 10.0,
          "lineCostCad": 0.082
        }
      ],
      "plateCostCad": 1.01,
      "grossMarginCad": 11.49,
      "foodCostPercent": 8.08,
      "marginPercent": 91.92
    }
  ],
  "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."
  ]
}
