[object Object]

← back to Designerwallcoverings

Google feed: hard-exclude showroom-only vendors (Phillip Jeffries) via isShowroomVendor (TK-11186)

2cce80e97a8699f26c1f8a1cbc28c6361842940c · 2026-09-03 11:21:05 -0700 · Steve Abrams

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BgCcr9t5zNGdb43pS4f1ks

Files touched

Diff

commit 2cce80e97a8699f26c1f8a1cbc28c6361842940c
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Sep 3 11:21:05 2026 -0700

    Google feed: hard-exclude showroom-only vendors (Phillip Jeffries) via isShowroomVendor (TK-11186)
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01BgCcr9t5zNGdb43pS4f1ks
---
 scripts/google-feed/feed-eligibility.mjs | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/scripts/google-feed/feed-eligibility.mjs b/scripts/google-feed/feed-eligibility.mjs
index 7804a77..4623b18 100644
--- a/scripts/google-feed/feed-eligibility.mjs
+++ b/scripts/google-feed/feed-eligibility.mjs
@@ -21,6 +21,11 @@
  */
 import fs from 'node:fs';
 import path from 'node:path';
+import { createRequire } from 'node:module';
+// Canonical showroom-vendor primitive (list + logic live in fix-live-board/config).
+// Never hardcode a vendor name here — edit showroom-vendors.json to change the set. TK-11186.
+const require = createRequire(import.meta.url);
+const { isShowroomVendor } = require(process.env.HOME + '/Projects/fix-live-board/config/showroom-vendor.cjs');
 
 const SHOP = 'designer-laboratory-sandbox.myshopify.com';
 const VER = '2024-10';
@@ -136,6 +141,12 @@ function evaluate(p) {
   const priceMode = (p.priceMode?.value || '').trim().toLowerCase();
   if (priceMode === 'quote_only' || (p.vendor || '').trim() === 'Fentucci Naturals')
     reasons.push('quote_only_no_advertised_price');
+  // Showroom-only vendors (e.g. Phillip Jeffries) are addressable-but-not-discoverable —
+  // hard-exclude them from the Google feed regardless of price. Belt-and-suspenders with
+  // quote_only above: PJ is sample-only ($4.25) today so it's excluded incidentally, but a
+  // future >$5 or roll-priced PJ variant would otherwise leak into the feed (disapproval
+  // risk). Keyed off showroom-vendors.json via the shared primitive. TK-11186.
+  if (isShowroomVendor(p.vendor)) reasons.push('showroom_only_addressable_not_discoverable');
   if (!hasImg) reasons.push('no_image');
   if (rollPrice == null) reasons.push('no_roll_variant_price');
   else if (rollPrice < FLOOR) reasons.push(`roll_price_below_floor_${rollPrice}`);

← 751fb7d auto-data-snapshot: 2026-09-03T11:10:51 (3 data files) — scr  ·  back to Designerwallcoverings  ·  auto-data-snapshot: 2026-09-03T11:49:57 (8 data files) — dat cda6d43 →