GIANT weekly ad, complex deals, in the deals row format. Prepared by 248.ai (Ora), 2026-09-21.

Ad week: 2026-09-18 to 2026-09-24.
Scope: Store 6273, Reading, PA (ZIP 19607), which receives one of the 17 regional versions GIANT prints this week (flyer 8138402). The ad is read from the banner's public circular, which carries each tile but not its eligible-items list.

Files:
  giant-complex-deals-2026-09-18.csv   one row per store and participating sku_id, 19 columns
  README.txt   this file

Rules applied to every row:
  1. Complex deals only: N for $X, buy X get Y free or Z percent off, and buy X save $Y. Plain single-item sale prices are not in this file.
  2. Digital coupons are excluded. A price that needs a coupon clipped online is not honored at the shelf, so those tiles are left out and counted below.
  3. Delivery is CSV: UTF-8, comma separated, one header row, a blank cell is null, dates are UTC.

Columns, in this order (the 12 deal columns first, then 7 provenance columns):
  store_id                           the retailer's own store number
  sku_id                             the item code under this merchant's convention (see below); digits only
  promotion_type                     BUY_X_FOR_Y, BUY_X_GET_Y_Z_PERCENT_OFF, or BUY_X_SAVE_Y
  promotion_purchase_quantity        X: how many the shopper must buy
  promotion_total_price              BUY_X_FOR_Y only: the price for X; blank otherwise
  promotion_quantity                 BUY_X_GET_Y_Z_PERCENT_OFF only: Y, how many are discounted; blank otherwise
  promotion_percentage               BUY_X_GET_Y_Z_PERCENT_OFF only: Z, 100 when the Y items are free; blank otherwise
  promotion_price_off                BUY_X_SAVE_Y only: the amount off in dollars; blank otherwise
  promotion_quantity_limit_per_cart  the limit printed in the ad; 0 when the ad states none
  promotion_start_time               UTC, ISO-8601 ending in Z
  promotion_end_time                 UTC, ISO-8601 ending in Z
  promo_group_id                     one id per offer; rows that share it are one mix-and-match group
  loyalty_offer_required             True when the price needs a loyalty offer loaded to the shopper's account
  mapping_note                       how the row was derived, when there is something to say; blank otherwise
  item_name                          the item as the retailer names it
  source_deal_text                   the ad copy the row was parsed from
  sku_source                         which field and rule produced sku_id (values listed below)
  flyer_id                           the retailer's circular id; blank when the retailer publishes none
  ad_version                         the regional version of the ad the store receives

sku_id for GIANT is Ahold's internal item number zero-padded to 14 digits, as the merchant's delivery catalog lists it (Our Brand Black Beans 15.5 oz = 00000000127698). It appears nowhere on giantfoodstores.com; one item number serves both GIANT and MARTIN'S.
sku_source values in this file:
  ddmsid:group                117 rows   the tile names a product family and was fanned out to every catalog item sharing the name

Fan-out: this merchant's ad carries no item code, so sku_id is the item id in the merchant's delivery catalog, joined to the ad tile by name at store Giant6273.
A tile that names a product family (select varieties, a size range) is fanned out to every catalog item whose name carries the tile's brand and product words, one row per item, tagged sku_source = ddmsid:group. The count of items each tile fanned out to is in mapping_note.
A tile with no matching listed item is left out and counted below. No sku_id is ever guessed.

Buy one get one is BUY_X_GET_Y_Z_PERCENT_OFF with X=1, Y=1, Z=100; the ad's save-up-to amount, where printed, is in mapping_note.
Each price when you buy N or more is BUY_X_FOR_Y with X=N and the total = N x the unit price; mapping_note says so.

Counts:
  rows                                   117
  offers (distinct promo_group_id)       27
  stores                                 1
  BUY_X_FOR_Y                            73
  BUY_X_GET_Y_Z_PERCENT_OFF              25
  BUY_X_SAVE_Y                           19
  loyalty_offer_required = True          0
  digital coupon tiles excluded          29
  complex tiles left out, no listed item 75
  loyalty points or fuel points, no promotion type for it 39
  spend threshold (with $N purchase), no promotion type for it 33

Each file is a dated read of the retailer's public website; 248 reports what was published.
