Data model
The record we collect
One row per SKU, per platform, per delivery zone, per capture. Study-specific fields sit alongside the standard shelf record rather than in a separate table.
ghee_shelf_record.json
SCHEMA
{
"captured_at": "2026-09-14T11:04:22+05:30",
"platform": "blinkit",
"city": "Ahmedabad",
"pincode": "380015",
"zone_ring": "central",
"category_path": ["Dairy & Breakfast", "Ghee & Oils", "Ghee"],
"brand": "<resolved_brand>",
"raw_brand_string": "<as_listed>",
"brand_tier": "coop", // coop | national | premium | private_label
"sku_title": "<as_listed>",
"pack_value": 1.0,
"pack_unit": "l",
"pack_format": "jar", // pouch | jar | tin | bottle
"fat_source": "cow", // cow | buffalo | mixed | unstated
"claim_a2": false,
"claim_bilona": false,
"mrp": null,
"selling_price": null,
"unit_price_per_litre": null, // derived, not scraped
"stock_status": "listed_in_stock", // listed_in_stock | listed_oos | not_listed
"search_rank": null,
"is_sponsored": false,
"delivery_eta_min": null,
"parser_confidence": null,
"capture_id": "<uuid>"
}