[object Object]

← back to Sample Followup Sweep

contacts.json: route VAH + BRU + bare-1838 — 27 of 28 live vendors now reachable (TK-11255)

5c0d68e10d65510978d0f912ac44d18ba22a7748 · 2026-09-12 07:48:51 -0700 · Steve Abrams

Closes most of the silent-skip gap measured today: of 129 live overdue sample
records, 11 across 7 vendor codes resolved to NO contact and were dropped with no
error and no log line.

  vah  Vahallan -> info@vahallan.com, acct "On File"
       Verified live before adopting: Annie Kaufman, Senior Sales Coordinator,
       replied "Thank you for your sample request. We will get these sent out"
       to our own request YESTERDAY (2026-09-11) and again 2026-09-03.
  bru  Brunschwig & Fils (@ Kravet) -> matt.schoffman@kravet.com, acct 10087117
       Canonical says "Brunswig and fils @ Kravet" and Brunschwig is a Kravet
       house, so it shares Kravet's desk and account. Held to the same bar
       rather than assumed: Matt Schoffman replies to our sample requests with
       UPS tracking, most recently 2026-09-10.
  1838 bare vid routed to the existing 1838-wallcoverings contact via
       SLUG_ALIASES — same vendor (Scott Myer), so this is a routing alias
       rather than a duplicated contact record.

Measured effect, live: routable vendors 24 -> 27 of 28; unroutable records
8 -> 2.

NOT adopted: FUT (2 records). Canonical has no FUT row. It is probably the same
vendor as FTR ("future Textile", ftg1@futuretextiles.com) on a name-shaped hunch,
and that is exactly the kind of guess that put Sanderson memos at Gimmersta
earlier in this ticket. It stays unroutable until something confirms it.

Both new accounts use the house "On File"/inherited-account convention rather
than an invented number, and the scheduled job runs --draft, so the effect is a
reviewable draft per vendor, never an automatic send.

Undo: restore data/contacts.json.bak-1789224483

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Files touched

Diff

commit 5c0d68e10d65510978d0f912ac44d18ba22a7748
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sat Sep 12 07:48:51 2026 -0700

    contacts.json: route VAH + BRU + bare-1838 — 27 of 28 live vendors now reachable (TK-11255)
    
    Closes most of the silent-skip gap measured today: of 129 live overdue sample
    records, 11 across 7 vendor codes resolved to NO contact and were dropped with no
    error and no log line.
    
      vah  Vahallan -> info@vahallan.com, acct "On File"
           Verified live before adopting: Annie Kaufman, Senior Sales Coordinator,
           replied "Thank you for your sample request. We will get these sent out"
           to our own request YESTERDAY (2026-09-11) and again 2026-09-03.
      bru  Brunschwig & Fils (@ Kravet) -> matt.schoffman@kravet.com, acct 10087117
           Canonical says "Brunswig and fils @ Kravet" and Brunschwig is a Kravet
           house, so it shares Kravet's desk and account. Held to the same bar
           rather than assumed: Matt Schoffman replies to our sample requests with
           UPS tracking, most recently 2026-09-10.
      1838 bare vid routed to the existing 1838-wallcoverings contact via
           SLUG_ALIASES — same vendor (Scott Myer), so this is a routing alias
           rather than a duplicated contact record.
    
    Measured effect, live: routable vendors 24 -> 27 of 28; unroutable records
    8 -> 2.
    
    NOT adopted: FUT (2 records). Canonical has no FUT row. It is probably the same
    vendor as FTR ("future Textile", ftg1@futuretextiles.com) on a name-shaped hunch,
    and that is exactly the kind of guess that put Sanderson memos at Gimmersta
    earlier in this ticket. It stays unroutable until something confirms it.
    
    Both new accounts use the house "On File"/inherited-account convention rather
    than an invented number, and the scheduled job runs --draft, so the effect is a
    reviewable draft per vendor, never an automatic send.
    
    Undo: restore data/contacts.json.bak-1789224483
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---
 data/contacts.json        | 10 ++++++++++
 scripts/scheduled-run.mjs |  4 +++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/data/contacts.json b/data/contacts.json
index dc8b074..ee16066 100644
--- a/data/contacts.json
+++ b/data/contacts.json
@@ -348,5 +348,15 @@
     "name": "LBI Boyd (Jill Carol)",
     "sample_email": "jill@lbiboyd.com",
     "account_number": "On File"
+  },
+  "vah": {
+    "name": "Vahallan",
+    "sample_email": "info@vahallan.com",
+    "account_number": "On File"
+  },
+  "bru": {
+    "name": "Brunschwig & Fils (@ Kravet)",
+    "sample_email": "matt.schoffman@kravet.com",
+    "account_number": "10087117"
   }
 }
\ No newline at end of file
diff --git a/scripts/scheduled-run.mjs b/scripts/scheduled-run.mjs
index 728073a..379620a 100644
--- a/scripts/scheduled-run.mjs
+++ b/scripts/scheduled-run.mjs
@@ -157,7 +157,9 @@ function vidContactMap(liveVids = []) {
   // slug is derivable from vid, so derive the bridge directly from contacts.json
   // and treat fleet as an ADDITIVE source. Union only -- this can never make a
   // vendor that resolves today stop resolving.
-  const SLUG_ALIASES = { 'ANNA FRENCH': 'thib', ANNA: 'thib', ARTE: 'arte-international', 'AS CREATION': 'san', BM: 'green' };
+  const SLUG_ALIASES = { 'ANNA FRENCH': 'thib', ANNA: 'thib', ARTE: 'arte-international', 'AS CREATION': 'san', BM: 'green',
+    // bare vid '1838' and '1838 Wallcoverings' are the same vendor (Scott Myer).
+    '1838': '1838-wallcoverings' };
   const slugForVid = (vid) => SLUG_ALIASES[vid] || String(vid).toLowerCase().replace(/[^a-z0-9]+/g, '-');
   const put = (key, slug) => {
     if (!key || map[key]) return;

← 6771f15 scheduled-run: decouple the vid->contact bridge from the fle  ·  back to Sample Followup Sweep  ·  lib/slug-aliases.cjs: one source of truth for slug routing — 8e1807b →