{
  "schemaVersion": 1,
  "kitId": "business-restaurant-bakery",
  "restaurant": "Copper Oven Bakery",
  "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": "Bread Flour",
      "stockUnit": "kg",
      "pack": {
        "description": "Sack 25 kg",
        "sizeStockUnits": 25.0,
        "priceCad": 36.5
      },
      "unitCostFromPackCad": 1.46,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00146,
      "reference": {
        "purchaseId": "PUR-0085",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 1.46
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": [
        "cereals_gluten"
      ]
    },
    {
      "ingredientId": "ING-02",
      "name": "Butter",
      "stockUnit": "kg",
      "pack": {
        "description": "Case 20 x 500 g",
        "sizeStockUnits": 10.0,
        "priceCad": 77.9
      },
      "unitCostFromPackCad": 7.79,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00779,
      "reference": {
        "purchaseId": "PUR-0087",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 7.79
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": [
        "milk"
      ]
    },
    {
      "ingredientId": "ING-03",
      "name": "Eggs",
      "stockUnit": "each",
      "pack": {
        "description": "Case 180 (6 trays of 30)",
        "sizeStockUnits": 180.0,
        "priceCad": 63.0
      },
      "unitCostFromPackCad": 0.35,
      "recipeUnit": "each",
      "recipeUnitsPerStockUnit": 1,
      "costPerRecipeUnitCad": 0.35,
      "reference": {
        "purchaseId": "PUR-0089",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 0.35
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": [
        "eggs"
      ]
    },
    {
      "ingredientId": "ING-04",
      "name": "Sugar",
      "stockUnit": "kg",
      "pack": {
        "description": "Sack 25 kg",
        "sizeStockUnits": 25.0,
        "priceCad": 50.75
      },
      "unitCostFromPackCad": 2.03,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00203,
      "reference": {
        "purchaseId": "PUR-0091",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 2.03
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    },
    {
      "ingredientId": "ING-05",
      "name": "Dark Chocolate",
      "stockUnit": "kg",
      "pack": {
        "description": "Case 2 x 5 kg callets",
        "sizeStockUnits": 10.0,
        "priceCad": 91.6
      },
      "unitCostFromPackCad": 9.16,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.00916,
      "reference": {
        "purchaseId": "PUR-0093",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 9.16
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": [
        "soybeans"
      ]
    },
    {
      "ingredientId": "ING-06",
      "name": "Fresh Yeast",
      "stockUnit": "kg",
      "pack": {
        "description": "Case 20 x 500 g",
        "sizeStockUnits": 10.0,
        "priceCad": 52.0
      },
      "unitCostFromPackCad": 5.2,
      "recipeUnit": "g",
      "recipeUnitsPerStockUnit": 1000,
      "costPerRecipeUnitCad": 0.0052,
      "reference": {
        "purchaseId": "PUR-0095",
        "date": "2026-09-02",
        "supplierId": "SUP-01",
        "supplier": "Alder Wholesale",
        "unitPriceCad": 5.2
      },
      "roundingResidualPerStockUnitCad": 0.0,
      "allergens": []
    }
  ],
  "dishes": [
    {
      "menuItemId": "MENU-01",
      "name": "Yeasted loaf",
      "menuPriceCad": 7.5,
      "lines": [
        {
          "recipeLineId": "REC-001",
          "ingredientId": "ING-01",
          "ingredient": "Bread Flour",
          "recipeQuantity": 500.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 555.556,
          "lineCostCad": 0.8111
        },
        {
          "recipeLineId": "REC-002",
          "ingredientId": "ING-06",
          "ingredient": "Fresh Yeast",
          "recipeQuantity": 10.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 10.0,
          "lineCostCad": 0.052
        }
      ],
      "plateCostCad": 0.86,
      "grossMarginCad": 6.64,
      "foodCostPercent": 11.47,
      "marginPercent": 88.53
    },
    {
      "menuItemId": "MENU-02",
      "name": "Butter croissant",
      "menuPriceCad": 4.25,
      "lines": [
        {
          "recipeLineId": "REC-003",
          "ingredientId": "ING-01",
          "ingredient": "Bread Flour",
          "recipeQuantity": 70.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 77.778,
          "lineCostCad": 0.1136
        },
        {
          "recipeLineId": "REC-004",
          "ingredientId": "ING-02",
          "ingredient": "Butter",
          "recipeQuantity": 35.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 35.0,
          "lineCostCad": 0.2727
        },
        {
          "recipeLineId": "REC-005",
          "ingredientId": "ING-04",
          "ingredient": "Sugar",
          "recipeQuantity": 8.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 8.0,
          "lineCostCad": 0.0162
        }
      ],
      "plateCostCad": 0.4,
      "grossMarginCad": 3.85,
      "foodCostPercent": 9.41,
      "marginPercent": 90.59
    },
    {
      "menuItemId": "MENU-03",
      "name": "Chocolate bun",
      "menuPriceCad": 4.75,
      "lines": [
        {
          "recipeLineId": "REC-006",
          "ingredientId": "ING-01",
          "ingredient": "Bread Flour",
          "recipeQuantity": 80.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 88.889,
          "lineCostCad": 0.1298
        },
        {
          "recipeLineId": "REC-007",
          "ingredientId": "ING-02",
          "ingredient": "Butter",
          "recipeQuantity": 15.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 15.0,
          "lineCostCad": 0.1169
        },
        {
          "recipeLineId": "REC-008",
          "ingredientId": "ING-05",
          "ingredient": "Dark Chocolate",
          "recipeQuantity": 25.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 25.0,
          "lineCostCad": 0.229
        }
      ],
      "plateCostCad": 0.48,
      "grossMarginCad": 4.27,
      "foodCostPercent": 10.11,
      "marginPercent": 89.89
    },
    {
      "menuItemId": "MENU-04",
      "name": "Sweet butter roll",
      "menuPriceCad": 4.5,
      "lines": [
        {
          "recipeLineId": "REC-009",
          "ingredientId": "ING-01",
          "ingredient": "Bread Flour",
          "recipeQuantity": 80.0,
          "recipeUnit": "g",
          "yieldPercent": 90.0,
          "preparation": "TRIM",
          "asPurchasedQuantity": 88.889,
          "lineCostCad": 0.1298
        },
        {
          "recipeLineId": "REC-010",
          "ingredientId": "ING-02",
          "ingredient": "Butter",
          "recipeQuantity": 25.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 25.0,
          "lineCostCad": 0.1948
        },
        {
          "recipeLineId": "REC-011",
          "ingredientId": "ING-04",
          "ingredient": "Sugar",
          "recipeQuantity": 18.0,
          "recipeUnit": "g",
          "yieldPercent": 100.0,
          "preparation": "ASIS",
          "asPurchasedQuantity": 18.0,
          "lineCostCad": 0.0365
        }
      ],
      "plateCostCad": 0.36,
      "grossMarginCad": 4.14,
      "foodCostPercent": 8.0,
      "marginPercent": 92.0
    }
  ],
  "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."
  ]
}
