{
  "checked_on": "2026-10-24",
  "scope": "Tesco en-GB public pages, displayed GBP prices; not a basket quote, physical label inspection, nutrition or storage experiment. No member-only offers used. Delivery, local stock and actual usage not verified.",
  "observations": [
    {
      "id": "rice_1kg",
      "name": "Tesco Basmati Rice 1Kg",
      "url": "https://www.tesco.com/shop/en-GB/products/254877477",
      "price_gbp": "1.79",
      "quantity": "1",
      "unit": "kg",
      "state": "dry",
      "family": "basmati_rice",
      "display_rate": "1.79",
      "display_basis": "kg",
      "stock_note": "location_availability_not_verified"
    },
    {
      "id": "rice_finest_500g",
      "name": "Tesco Finest Basmati Rice 500G",
      "url": "https://www.tesco.com/shop/en-GB/products/266953910",
      "price_gbp": "1.65",
      "quantity": "500",
      "unit": "g",
      "state": "dry",
      "family": "basmati_rice",
      "display_rate": "3.30",
      "display_basis": "kg",
      "stock_note": "page_said_out_of_stock",
      "limit": "Different product tier; unit arithmetic does not establish equal quality."
    },
    {
      "id": "rice_cooked_250g",
      "name": "Tesco Microwave Basmati Rice 250G",
      "url": "https://www.tesco.com/shop/en-GB/products/251680648?gQT=1",
      "price_gbp": "0.70",
      "quantity": "250",
      "unit": "g",
      "state": "cooked",
      "family": "basmati_rice",
      "display_rate": "2.80",
      "display_basis": "kg",
      "stock_note": "location_availability_not_verified",
      "limit": "Description says cooked rice; ingredients include water. No dry-to-cooked yield measured."
    },
    {
      "id": "tuna_145g",
      "name": "Tesco Tuna Chunks In Spring Water 145G",
      "url": "https://www.tesco.com/shop/en-GB/products/303887546",
      "price_gbp": "0.65",
      "net_g": 145,
      "drained_g": 102,
      "quantity": "102",
      "unit": "g",
      "state": "drained",
      "family": "tuna_spring_water",
      "display_rate": "6.37",
      "display_basis": "kg_drained",
      "stock_note": "location_availability_not_verified"
    },
    {
      "id": "tuna_4x145g",
      "name": "Tesco Tuna Chunks In Spring Water 4 X 145G",
      "url": "https://www.tesco.com/shop/en-GB/products/303882239",
      "price_gbp": "2.49",
      "net_g": 580,
      "net_description": "4 x 145g",
      "drained_g": 408,
      "drained_description": "4 x 102g",
      "quantity": "408",
      "unit": "g",
      "state": "drained",
      "family": "tuna_spring_water",
      "display_rate": "6.10",
      "display_basis": "kg_drained",
      "stock_note": "location_availability_not_verified"
    },
    {
      "id": "eggs_6",
      "name": "Tesco Large Free Range Eggs 6 Pack",
      "url": "https://www.tesco.com/shop/en-GB/products/250802567",
      "price_gbp": "2.10",
      "quantity": "6",
      "unit": "each",
      "state": "counted",
      "family": "large_free_range_eggs",
      "display_rate": "0.35",
      "display_basis": "each",
      "stock_note": "location_availability_not_verified",
      "pack_mass_g": null
    },
    {
      "id": "eggs_12",
      "name": "Tesco Large Free Range Eggs 12 Pack",
      "url": "https://www.tesco.com/shop/en-GB/products/260298456",
      "price_gbp": "3.35",
      "quantity": "12",
      "unit": "each",
      "state": "counted",
      "family": "large_free_range_eggs",
      "display_rate": "0.28",
      "display_basis": "each",
      "stock_note": "location_availability_not_verified",
      "pack_mass_g": null
    },
    {
      "id": "corn_325g",
      "name": "Tesco Naturally Sweet Sweetcorn 325G",
      "url": "https://www.tesco.com/shop/en-GB/products/254875341?isSub=true",
      "price_gbp": "0.53",
      "net_g": 325,
      "drained_g": 260,
      "quantity": "260",
      "unit": "g",
      "state": "drained",
      "family": "sweetcorn",
      "display_rate": "2.04",
      "display_basis": "kg_drained",
      "stock_note": "location_availability_not_verified"
    },
    {
      "id": "corn_frozen_1kg",
      "name": "Tesco Supersweet Sweetcorn 1Kg",
      "url": "https://www.tesco.com/shop/en-GB/products/259488440",
      "price_gbp": "1.90",
      "quantity": "1",
      "unit": "kg",
      "state": "frozen",
      "family": "sweetcorn",
      "display_rate": "1.90",
      "display_basis": "kg",
      "stock_note": "location_availability_not_verified",
      "limit": "Frozen mass and drained canned mass do not establish equal prepared portions."
    },
    {
      "id": "milk_2l",
      "name": "Tesco Semi-Skimmed Milk 2 Litres",
      "url": "https://www.tesco.com/shop/en-GB/products/253656619",
      "price_gbp": "1.60",
      "quantity": "2",
      "unit": "L",
      "state": "liquid",
      "family": "semi_skimmed_milk",
      "display_rate": "0.80",
      "display_basis": "litre",
      "stock_note": "page_said_out_of_stock",
      "limit": "Northern Ireland milk described on page. No conversion to mass or local availability claim."
    }
  ],
  "rates": [
    {
      "id": "rice_1kg",
      "normalised_basis": "mass_g",
      "normalised_quantity": "1000",
      "rate_before_rounding": "1.79000",
      "rounded_rate": "1.79",
      "per": "kg",
      "display_matches": true
    },
    {
      "id": "rice_finest_500g",
      "normalised_basis": "mass_g",
      "normalised_quantity": "500",
      "rate_before_rounding": "3.3000",
      "rounded_rate": "3.30",
      "per": "kg",
      "display_matches": true
    },
    {
      "id": "rice_cooked_250g",
      "normalised_basis": "mass_g",
      "normalised_quantity": "250",
      "rate_before_rounding": "2.8000",
      "rounded_rate": "2.80",
      "per": "kg",
      "display_matches": true
    },
    {
      "id": "tuna_145g",
      "normalised_basis": "mass_g",
      "normalised_quantity": "102",
      "rate_before_rounding": "6.372549019607843137254901961",
      "rounded_rate": "6.37",
      "per": "kg",
      "display_matches": true
    },
    {
      "id": "tuna_4x145g",
      "normalised_basis": "mass_g",
      "normalised_quantity": "408",
      "rate_before_rounding": "6.102941176470588235294117647",
      "rounded_rate": "6.10",
      "per": "kg",
      "display_matches": true
    },
    {
      "id": "eggs_6",
      "normalised_basis": "count",
      "normalised_quantity": "6",
      "rate_before_rounding": "0.35",
      "rounded_rate": "0.35",
      "per": "each",
      "display_matches": true
    },
    {
      "id": "eggs_12",
      "normalised_basis": "count",
      "normalised_quantity": "12",
      "rate_before_rounding": "0.2791666666666666666666666667",
      "rounded_rate": "0.28",
      "per": "each",
      "display_matches": true
    },
    {
      "id": "corn_325g",
      "normalised_basis": "mass_g",
      "normalised_quantity": "260",
      "rate_before_rounding": "2.038461538461538461538461538",
      "rounded_rate": "2.04",
      "per": "kg",
      "display_matches": true
    },
    {
      "id": "corn_frozen_1kg",
      "normalised_basis": "mass_g",
      "normalised_quantity": "1000",
      "rate_before_rounding": "1.9000",
      "rounded_rate": "1.90",
      "per": "kg",
      "display_matches": true
    },
    {
      "id": "milk_2l",
      "normalised_basis": "volume_ml",
      "normalised_quantity": "2000",
      "rate_before_rounding": "0.8000",
      "rounded_rate": "0.80",
      "per": "litre",
      "display_matches": true
    }
  ],
  "comparisons": {
    "tuna_single_and_four": {
      "status": "quantity_basis_comparable",
      "reason": "Same family/state and dimension only; quality, actual portions, availability and waste are not established."
    },
    "eggs_six_and_twelve": {
      "status": "quantity_basis_comparable",
      "reason": "Same family/state and dimension only; quality, actual portions, availability and waste are not established."
    },
    "different_rice_tiers": {
      "status": "quantity_basis_comparable",
      "reason": "Same family/state and dimension only; quality, actual portions, availability and waste are not established."
    },
    "dry_and_cooked_rice": {
      "status": "blocked",
      "reason": "different family or preparation state; no equivalent-yield model"
    },
    "drained_and_frozen_corn": {
      "status": "blocked",
      "reason": "different family or preparation state; no equivalent-yield model"
    },
    "volume_to_mass_guard": {
      "status": "blocked",
      "reason": "different dimensions; density or mass per item not supplied"
    }
  },
  "specific_checks": {
    "tuna_per_kg_net_denominator": "4.48",
    "tuna_per_kg_drained_denominator": "6.37",
    "four_singles_less_multipack_gbp": "0.11",
    "eggs_rounded_label_times_12_gbp": "3.36",
    "eggs_actual_listed_pack_gbp": "3.35",
    "milk_ml": "2000"
  },
  "invalid_inputs": [
    {
      "case": "unknown_unit",
      "result": "rejected_as_expected"
    },
    {
      "case": "zero_quantity",
      "result": "rejected_as_expected"
    },
    {
      "case": "unknown_quantity",
      "result": "rejected_as_expected"
    },
    {
      "case": "negative_price",
      "result": "rejected_as_expected"
    },
    {
      "case": "nonfinite_price",
      "result": "rejected_as_expected"
    },
    {
      "case": "drained_exceeds_net",
      "result": "rejected_as_expected"
    }
  ]
}
