Gopuff product fields, pack ladders and stock flags in every export
The product record is the spine of a Gopuff data feed. Each card carries the brand, the merchandising name with its pack format written into it, the price, the unit price in dollars per ounce, the pack size and a stock state. Page markup adds sku, category, description, image and an offer with price, currency and availability, so the parsed row and the published row can be reconciled line by line.
Size is not a single field but a ladder. One line renders every format the retailer stocks, each with its own price and its own unit price: Tito's Handmade Vodka runs 50ml, 200ml, 375ml, a twelve-pack of 50ml, 750ml, 1L and 1.75L, and the cheapest per ounce is flagged BEST VALUE. That ladder is why Gopuff price monitoring has to be run per format rather than per brand, and why a bare brand average is worthless here.
Grocery lines publish a full nutrition block: calories, fat, cholesterol, sodium, carbs and protein in the summary, then servings per container, serving size, percent daily values and the ingredient statement in full. Dietary tags sit next to it - Low Sugar, Trans Fat Free, Gluten Free, Kosher - with the allergen line spelled out as a plain sentence such as Contains Milk Ingredients. SNAP eligibility is a badge on the card and is repeated in the page title.
Alcohol swaps the nutrition block for a spirits block: ABV, Type, Style, Country and State, plus the Proposition 65 wording and the licensed merchant the bottle is sold by. Stock speaks the retailer's own grammar - OUT OF STOCK, SIZE OUT OF STOCK, SOLD OUT, Only 2 left - and promotions arrive as a struck-through reference price beside a badge: Cheapest on the Planet, New Lower Price, a percentage off, FAM Exclusive, LOCAL or AD. We extract Gopuff data for all of it, including the substitution preference the basket offers, which is either remove if out of stock or substitute with best available.