← back to Sample Followup Sweep
contacts.json: unblock POI + 1838, both silently skipped by the mailer (TK-11255)
a1c761affe134281802fc31e2907bcc0fcef16aa · 2026-09-12 07:44:15 -0700 · Steve Abrams
Measured against LIVE FileMaker: 11 of 129 overdue sample records in the current
10-60 day window resolve to no contact and are skipped with no error and no log.
These are two of them, and both are now recoverable.
poi -- already had samples@justindavid.com as of today, but
vidContactMap requires email AND account_number, so it
was still being skipped. Canonical carries a blank
account, so it takes the house "On File" convention
(already used by 32 of 58 contacts: pj, mor, green,
maya, twi, olp, con...).
1838-wallcoverings -- canonical VID '1838' = scott.myer@gmail.com. Verified
live before adopting: Scott replied "memo has been
ordered. thank you scott" to our own sample request on
2026-09-01, and an earlier thread quotes stock and euro
roll pricing. A personal gmail looks wrong for a vendor
desk, but it clears the hardened bar on its own evidence
(human-authored, sample-topical, current) and matches the
known small-brand pattern already accepted for twi.
Note account_number is customer-facing -- send-reconciled.mjs prints "Our account
number is X" -- so "On File" is a deliberate reuse of the existing convention,
not an invented number.
Safe by construction: the scheduled job runs scheduled-run.mjs --draft, and the
code is explicit that "Nothing sends -- the draft is still the human gate." These
two vendors now produce a reviewable draft instead of silently producing nothing.
Still unroutable and NOT touched here: VAH, BRU, 1838 (bare vid) and FUT are
absent from data/fleet.json entirely, so a contacts entry alone cannot reach them
-- vidContactMap iterates fleet rows. They need the fleet regenerated first.
Undo: restore data/contacts.json.bak-1789224232
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Files touched
Diff
commit a1c761affe134281802fc31e2907bcc0fcef16aa
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sat Sep 12 07:44:15 2026 -0700
contacts.json: unblock POI + 1838, both silently skipped by the mailer (TK-11255)
Measured against LIVE FileMaker: 11 of 129 overdue sample records in the current
10-60 day window resolve to no contact and are skipped with no error and no log.
These are two of them, and both are now recoverable.
poi -- already had samples@justindavid.com as of today, but
vidContactMap requires email AND account_number, so it
was still being skipped. Canonical carries a blank
account, so it takes the house "On File" convention
(already used by 32 of 58 contacts: pj, mor, green,
maya, twi, olp, con...).
1838-wallcoverings -- canonical VID '1838' = scott.myer@gmail.com. Verified
live before adopting: Scott replied "memo has been
ordered. thank you scott" to our own sample request on
2026-09-01, and an earlier thread quotes stock and euro
roll pricing. A personal gmail looks wrong for a vendor
desk, but it clears the hardened bar on its own evidence
(human-authored, sample-topical, current) and matches the
known small-brand pattern already accepted for twi.
Note account_number is customer-facing -- send-reconciled.mjs prints "Our account
number is X" -- so "On File" is a deliberate reuse of the existing convention,
not an invented number.
Safe by construction: the scheduled job runs scheduled-run.mjs --draft, and the
code is explicit that "Nothing sends -- the draft is still the human gate." These
two vendors now produce a reviewable draft instead of silently producing nothing.
Still unroutable and NOT touched here: VAH, BRU, 1838 (bare vid) and FUT are
absent from data/fleet.json entirely, so a contacts entry alone cannot reach them
-- vidContactMap iterates fleet rows. They need the fleet regenerated first.
Undo: restore data/contacts.json.bak-1789224232
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---
data/contacts.json | 57 ++++++++++++++++++++++++++++--------------------------
1 file changed, 30 insertions(+), 27 deletions(-)
diff --git a/data/contacts.json b/data/contacts.json
index 974448a..dc8b074 100644
--- a/data/contacts.json
+++ b/data/contacts.json
@@ -107,17 +107,17 @@
"account_number": "On File"
},
"san": {
- "name": "Sancar (AS Création) — inferred",
+ "name": "Sancar (AS Cr\u00e9ation) \u2014 inferred",
"sample_email": "sales@sancarwallcovering.com",
"account_number": "1674444"
},
"chin": {
- "name": "China Seas by Quadrille — inferred",
+ "name": "China Seas by Quadrille \u2014 inferred",
"sample_email": "Rhaiza@quadrilleinc.com",
"account_number": "37017"
},
"jofa": {
- "name": "Lee Jofa (Kravet family) — inferred",
+ "name": "Lee Jofa (Kravet family) \u2014 inferred",
"sample_email": "matt.schoffman@kravet.com",
"account_number": "10087117"
},
@@ -127,7 +127,7 @@
"account_number": "On File"
},
"sand": {
- "name": "Sanderson Design Group — Zoffany/William Morris @ Jasper Showroom",
+ "name": "Sanderson Design Group \u2014 Zoffany/William Morris @ Jasper Showroom",
"sample_email": "Sample@jaspershowroom.com",
"account_number": "On File"
},
@@ -142,20 +142,20 @@
"account_number": "On File"
},
"spn": {
- "name": "Spoonflower (online — no rep desk)",
+ "name": "Spoonflower (online \u2014 no rep desk)",
"disposition": "no-chase",
- "disposition_reason": "online print-on-demand — no sample-order desk to email (vendor type has no rep)",
+ "disposition_reason": "online print-on-demand \u2014 no sample-order desk to email (vendor type has no rep)",
"disposition_set": "2026-08-15"
},
"pf": {
"name": "Pierre Frey",
"sample_email": "hbarragan@kneedlerfauchere.com",
"account_number": "On File",
- "contact_source": "DW Sent history — Kneedler Fauchère (PF LA rep), order correspondence 2026-08-12; CONFIRM before send"
+ "contact_source": "DW Sent history \u2014 Kneedler Fauch\u00e8re (PF LA rep), order correspondence 2026-08-12; CONFIRM before send"
},
"rad": {
"disposition": "no-chase",
- "disposition_reason": "item Dig-4350114V shares Spoonflower DIG- digital-print prefix — POD/no sample desk (INFERRED; reverse if RAD is a real chaseable vendor)",
+ "disposition_reason": "item Dig-4350114V shares Spoonflower DIG- digital-print prefix \u2014 POD/no sample desk (INFERRED; reverse if RAD is a real chaseable vendor)",
"disposition_set": "2026-08-15",
"sample_email": "scott@radfordgraphics.com, jason@radfordgraphics.com"
},
@@ -185,10 +185,10 @@
"sample_email": "samples@designtex.com",
"account_number": "On File",
"needs_confirm": true,
- "contact_source": "George: Donna Dawson, Representative (LA), price-check corr 8/6/2026 — rep not sample desk, CONFIRM"
+ "contact_source": "George: Donna Dawson, Representative (LA), price-check corr 8/6/2026 \u2014 rep not sample desk, CONFIRM"
},
"mom": {
- "name": "Momentum (→Hollywood, INTERNAL chase only)",
+ "name": "Momentum (\u2192Hollywood, INTERNAL chase only)",
"sample_email": "ddedic@momtex.com",
"account_number": "On File",
"needs_confirm": true,
@@ -199,12 +199,12 @@
"sample_email": "sales@sancarwallcovering.com",
"account_number": "1674444",
"needs_confirm": true,
- "contact_source": "George: 'sancar (VERSACE)' memo 8/17/2026 — Versace ordered through Sancar desk"
+ "contact_source": "George: 'sancar (VERSACE)' memo 8/17/2026 \u2014 Versace ordered through Sancar desk"
},
"sch": {
"name": "Schumacher (F. Schumacher)",
"disposition": "no-chase",
- "disposition_reason": "self-service online sample ordering; only noreply@mailer.fschumacher.com exists — no rep desk to chase (George-verified 8/20)",
+ "disposition_reason": "self-service online sample ordering; only noreply@mailer.fschumacher.com exists \u2014 no rep desk to chase (George-verified 8/20)",
"disposition_set": "2026-08-20",
"sample_email": "la-samples@schumacher.com"
},
@@ -213,7 +213,7 @@
"sample_email": "sales@sir-edward.com",
"account_number": "On File",
"needs_confirm": true,
- "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): Désirée Ouweneel <sales@sir-edward.com>, active sample/sales corr; DWFM40xxx file-requested art items"
+ "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): D\u00e9sir\u00e9e Ouweneel <sales@sir-edward.com>, active sample/sales corr; DWFM40xxx file-requested art items"
},
"cow": {
"name": "Cowtan & Tout / Colefax & Fowler / Jane Churchill",
@@ -244,11 +244,11 @@
"contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): Therese Stachowiak <therese@egg-and-dart.com>, same desk as arte; BEC SKU"
},
"coor": {
- "name": "Coordonné (via NewWall)",
+ "name": "Coordonn\u00e9 (via NewWall)",
"sample_email": "tricia@newwall.com",
"account_number": "On File",
"needs_confirm": true,
- "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): Tricia Robb <tricia@newwall.com> handles NWD/Coordonné; DWDC 'Bike ride Fawn' A00907"
+ "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): Tricia Robb <tricia@newwall.com> handles NWD/Coordonn\u00e9; DWDC 'Bike ride Fawn' A00907"
},
"christian-lacroix-europe": {
"name": "Christian Lacroix (via Osborne & Little / Designers Guild)",
@@ -262,12 +262,12 @@
"sample_email": "info@hyggeandwest.com",
"account_number": "On File",
"needs_confirm": true,
- "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): only Hygge & West address on file is support@hyggeandwest.com (marketing/support); DWHW2 'Be Good' SKU — CONFIRM it accepts trade sample requests"
+ "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): only Hygge & West address on file is support@hyggeandwest.com (marketing/support); DWHW2 'Be Good' SKU \u2014 CONFIRM it accepts trade sample requests"
},
"fol": {
"name": "Folia Fabrics (RETIRED)",
"disposition": "no-chase",
- "disposition_reason": "Folia source decommissioned 2026-08-18 (folia-scraper retired); Ralph LWP items were Folia-distributed — no live desk to chase",
+ "disposition_reason": "Folia source decommissioned 2026-08-18 (folia-scraper retired); Ralph LWP items were Folia-distributed \u2014 no live desk to chase",
"disposition_set": "2026-08-20",
"contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns)",
"sample_email": "customerservice@folia-fabrics.com"
@@ -275,19 +275,19 @@
"phillipe-romano": {
"name": "Phillipe Romano (private label)",
"disposition": "no-chase",
- "disposition_reason": "DW private label (Command54/RIGO/Justin David umbrella) — internal only, never chase a customer-facing vendor desk; PI-ACOUSTIC DWPN SKU",
+ "disposition_reason": "DW private label (Command54/RIGO/Justin David umbrella) \u2014 internal only, never chase a customer-facing vendor desk; PI-ACOUSTIC DWPN SKU",
"disposition_set": "2026-08-20",
"contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns)"
},
"carl": {
"name": "Carlsten / Desima (private label, archived)",
"disposition": "no-chase",
- "disposition_reason": "Carlsten/Desima private-label line (Steve: Desima/Kravet); TTF Capitone items — archived line, no live sample desk",
+ "disposition_reason": "Carlsten/Desima private-label line (Steve: Desima/Kravet); TTF Capitone items \u2014 archived line, no live sample desk",
"disposition_set": "2026-08-20",
"contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns)"
},
"ftr": {
- "name": "(unresolved) metallic-leaf vendor — GLM/GLMG SL08/B20 gunmetal/bronze/copper codes",
+ "name": "(unresolved) metallic-leaf vendor \u2014 GLM/GLMG SL08/B20 gunmetal/bronze/copper codes",
"needs_confirm": true,
"unresolved_email": true,
"contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): no vendor identity found in George; metallic/gilded-leaf line, distributor unknown",
@@ -297,20 +297,23 @@
"name": "Ulrich Welter",
"needs_confirm": true,
"unresolved_email": true,
- "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): George: our sample requests addressed 'Attn: Sample Dept Ulrich Welter' (J-codes, DWS prefix) — vendor NAME confirmed but no reply-email captured; needs an Ulrich Welter sample-desk address before it can draft"
+ "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): George: our sample requests addressed 'Attn: Sample Dept Ulrich Welter' (J-codes, DWS prefix) \u2014 vendor NAME confirmed but no reply-email captured; needs an Ulrich Welter sample-desk address before it can draft"
},
"1838-wallcoverings": {
"name": "1838 Wallcoverings",
"needs_confirm": true,
"unresolved_email": true,
- "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): real line (1838-scraper-manager); likely distributed via Maxwell Fabrics (distribution@postmark.pdfsystems.com is order-only, not a sample desk) — no inbound sample-desk contact captured; CONFIRM the 1838/Maxwell sample email"
+ "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): real line (1838-scraper-manager); likely distributed via Maxwell Fabrics (distribution@postmark.pdfsystems.com is order-only, not a sample desk) \u2014 no inbound sample-desk contact captured; CONFIRM the 1838/Maxwell sample email",
+ "sample_email": "scott.myer@gmail.com",
+ "account_number": "On File"
},
"poi": {
"name": "Pointe (via Justin David private label)",
"needs_confirm": true,
"unresolved_email": true,
- "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): PI- codes DWPR/DWPN, 'from pointe'; Justin David desk jackie@justindavid.com is the likely source but POI may be an internal PR/JD private-label — CONFIRM whether to chase externally at all",
- "sample_email": "samples@justindavid.com"
+ "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): PI- codes DWPR/DWPN, 'from pointe'; Justin David desk jackie@justindavid.com is the likely source but POI may be an internal PR/JD private-label \u2014 CONFIRM whether to chase externally at all",
+ "sample_email": "samples@justindavid.com",
+ "account_number": "On File"
},
"paul": {
"name": "Paul Montgomery",
@@ -326,7 +329,7 @@
"contact_source": "George/Gmail mining 2026-08-25 (grounded on live outstanding-memo Mfr Patterns + account#); MDC Customer Service <cs@mdcwall.com>"
},
"eli": {
- "name": "Elitis (USA — Annalisa Dominguez)",
+ "name": "Elitis (USA \u2014 Annalisa Dominguez)",
"main_email": "ANNALISA@elitis.us",
"account_number": "1062120",
"needs_confirm": true,
@@ -338,7 +341,7 @@
"main_email": "rebecca.cragg@lincrusta.com",
"account_number": "1062465",
"needs_confirm": true,
- "contact_source": "George/Gmail mining 2026-08-25 (grounded on live outstanding-memo Mfr Patterns + account#); active rep Rebecca Cragg (corr. through 8/18/2026) — main/rep fallback per Steve 8/25",
+ "contact_source": "George/Gmail mining 2026-08-25 (grounded on live outstanding-memo Mfr Patterns + account#); active rep Rebecca Cragg (corr. through 8/18/2026) \u2014 main/rep fallback per Steve 8/25",
"sample_email": "federico.contigiani@lincrusta.com"
},
"lbi": {
@@ -346,4 +349,4 @@
"sample_email": "jill@lbiboyd.com",
"account_number": "On File"
}
-}
+}
\ No newline at end of file
← e343b5f sample-followup: strip CR/whitespace from FileMaker vid — it
·
back to Sample Followup Sweep
·
scheduled-run: decouple the vid->contact bridge from the fle 6771f15 →