← back to Dw Yolo Loop

TK-10451-bucketB-feed-fix-scope.md

57 lines

# TK-10451 — GMC $4.25 leak: primary Google feed submits the sample variant, not the roll

**Opened:** 2026-08-10 (from TK-10446) · **Owner:** vp-dw-commerce / google-merchant-agent · **Store:** designer-laboratory-sandbox (LIVE)

## The problem (live-verified 2026-08-10)
A live scan of all 86,065 ACTIVE products found **48,931 products currently on the "Google & YouTube" channel
whose feed price is $4.25** — i.e. Google Shopping is advertising them at the $4.25 memo-sample price.

Split (live variant prices, NOT the mirror flag):
- **Bucket A = 11** — TRUE orphans (only a $4.25 sample variant exists, no sellable roll). Handled separately
  under TK-10446 (complete their roll variant, or exclude). Negligible.
- **Bucket B = 48,920** — **real, sellable products** (they DO have a roll variant, $100–$300+), but the feed
  still shows $4.25 because the channel submits the **minimum-price variant** (the sample) as the product's price.

This is the real GMC disapproval/trust risk: ~49k legitimate products mispriced at $4.25 to Google.

## Root cause (already established by the `gmc-425-supplemental-feed` project, 2026-08-10)
Shopify's "Google & YouTube" sales channel submits **one variant per product** to the primary feed and, for
these products, picks the **$4.25 Sample** variant. Reorder-of-variants does NOT fix it; a supplemental feed
CANNOT inject the missing roll price when the roll variant isn't the submitted one. Conclusion from that project:
> "The durable fix is in the primary Shopify→Google feed (make it submit the Roll / all variants)."

## Why the obvious "quick fix" is WRONG
`gmc-feed-exclude.js` (unpublish min=$4.25 from Google) would delist **~49k real sellable products** from Google
Shopping. That's not a fix — it removes the catalog from Google. Delisting is ONLY correct for the 11 Bucket-A
orphans.

## Investigation update (2026-08-11, read-only)
Probed real Bucket-B products live (Knoll Ultrasuede colorways): **Roll = position 1, `forSale=true`,
inventory 2026, $416.04**; Sample = position 2, $4.25. Everything on the Shopify side is correct.
Ruled OUT as the cause: variant inventory, availability, and variant ORDER (roll is already first).
⇒ Confirms the leak is in the **channel→Google submission**, not the Shopify product data.

**Count correction:** the "48,920 Bucket B" figure is an **UPPER BOUND** = products that merely *have* a $4.25
sample variant. It is NOT the confirmed-leaker count (the 425 project already found some such products feed
CLEAN). The true leaker count requires reading **Merchant Center's actual feed** per product, not the Shopify
min-price. → Next step: run `gmc-425-supplemental-feed/classify-leakers.mjs` over the full set (needs the
wallsandfabrics@gmail.com Merchant Center login — vp-dw-commerce / Steve-gated).

## The actual work (to scope/build)
Make the primary feed advertise the **roll price** for Bucket-B products. Candidate approaches to evaluate:
1. **Variant selection at the channel/feed level** — ensure the roll (sellable) variant is the one submitted as
   the product's offer, not the $4.25 sample. (Investigate whether the Google channel's variant-submission rule
   is configurable, or whether product-level "default variant" / variant ordering drives it.)
2. **Split samples out of the offered variant set** — e.g. sample as a separate non-fed product/variant so the
   min-price the feed sees is the roll, not $4.25. (Coordinate with the sample-product model — see TK-10446.)
3. **Supplemental feed price override** — only viable for products where the roll IS in the feed; per the 425
   project, most leakers have the roll ABSENT, so this alone is insufficient.

## Assets
- Live scanner + buckets: `~/Projects/dw-yolo-loop/gmc-feed-exclude.js` (dry-run reports A/B split).
- Worklist snapshot: `~/.claude/yolo-queue/gmc-feed-exclude-worklist.json`.
- Prior investigation: `~/Projects/gmc-425-supplemental-feed/` (classify-leakers, README root-cause).

## Gate
Any feed/channel change is customer-facing → Steve-gated. This ticket is SCOPING; no live feed writes yet.