[object Object]

← back to Norma Platform

IG reshare: curate real populated community hashtags for all 32 accounts (drop dead handle-tags) — previously-empty accounts now find vendor-matched posts; regen preserves curation

aca7fab94c918e33215c2acaa572237f4cfe0308 · 2026-08-14 16:03:14 -0700 · Steve

Files touched

Diff

commit aca7fab94c918e33215c2acaa572237f4cfe0308
Author: Steve <steve@designerwallcoverings.com>
Date:   Fri Aug 14 16:03:14 2026 -0700

    IG reshare: curate real populated community hashtags for all 32 accounts (drop dead handle-tags) — previously-empty accounts now find vendor-matched posts; regen preserves curation
---
 agents/instagram-agent/build-ig-data.js           |   7 +-
 agents/instagram-agent/data/account-hashtags.json | 216 ++++------------------
 2 files changed, 38 insertions(+), 185 deletions(-)

diff --git a/agents/instagram-agent/build-ig-data.js b/agents/instagram-agent/build-ig-data.js
index 8fa13c8..841cfa7 100644
--- a/agents/instagram-agent/build-ig-data.js
+++ b/agents/instagram-agent/build-ig-data.js
@@ -20,8 +20,11 @@ for (const h of accounts.list().map((a) => a.handle)) {
   kw.split(/\s+/).filter((w) => w.length > 3).forEach((w) => tags.add(w.toLowerCase()));
   tags.add('interiordesign'); map[h] = [...tags].slice(0, 4);
 }
-fs.writeFileSync(path.join(DATA, 'account-hashtags.json'), JSON.stringify(map, null, 1));
-console.log(`account-hashtags.json: ${Object.keys(map).length} accounts`);
+// account-hashtags.json is HAND-CURATED (real populated community hashtags) — only seed it if
+// missing, never overwrite the curation with the auto-derived (weaker) version.
+const AHPATH = path.join(DATA, 'account-hashtags.json');
+if (!fs.existsSync(AHPATH)) { fs.writeFileSync(AHPATH, JSON.stringify(map, null, 1)); console.log(`account-hashtags.json: seeded ${Object.keys(map).length} accounts (derived — curate by hand)`); }
+else { console.log('account-hashtags.json: exists (hand-curated) — preserved'); }
 // 2) dw-vendors.txt baseline — vendor_registry + scrub (skip if psql/db unavailable)
 try {
   const raw = cp.execSync(`psql "host=/tmp dbname=dw_unified" -tAc "SELECT DISTINCT lower(vendor_name) FROM vendor_registry WHERE vendor_name IS NOT NULL"`, { encoding: 'utf8' });
diff --git a/agents/instagram-agent/data/account-hashtags.json b/agents/instagram-agent/data/account-hashtags.json
index 594a425..54e334d 100644
--- a/agents/instagram-agent/data/account-hashtags.json
+++ b/agents/instagram-agent/data/account-hashtags.json
@@ -1,184 +1,34 @@
 {
- "asseeninhotels": [
-  "asseeninhotels",
-  "hospitality",
-  "interiordesign"
- ],
- "beverlyhillsvideos": [
-  "beverlyhillsvideos",
-  "metallic",
-  "gold",
-  "glamour"
- ],
- "borninbeverlyhills": [
-  "borninbeverlyhills",
-  "glamour",
-  "metallic",
-  "interiordesign"
- ],
- "chinoiseriewallpaper": [
-  "chinoiseriewallpaper",
-  "chinoiserie",
-  "interiordesign"
- ],
- "commercialwallcoverings": [
-  "commercialwallcoverings",
-  "commercial",
-  "vinyl",
-  "interiordesign"
- ],
- "customwallcoverings": [
-  "customwallcoverings",
-  "mural",
-  "interiordesign"
- ],
- "designerlaboratory": [
-  "designerlaboratory",
-  "modern",
-  "geometric",
-  "interiordesign"
- ],
- "designerwallcoverings": [
-  "designerwallcoverings",
-  "luxury",
-  "wallcovering",
-  "interiordesign"
- ],
- "fabric_fridays": [
-  "fabricfridays",
-  "fabric",
-  "interiordesign"
- ],
- "ffepurchasing": [
-  "ffepurchasing",
-  "woven",
-  "texture",
-  "interiordesign"
- ],
- "grassclothwallpaper": [
-  "grassclothwallpaper",
-  "grasscloth",
-  "interiordesign"
- ],
- "hollywoodwallcoverings": [
-  "hollywoodwallcoverings",
-  "hollywood",
-  "glamour",
-  "interiordesign"
- ],
- "hospitalitywallcoverings": [
-  "hospitalitywallcoverings",
-  "hospitality",
-  "vinyl",
-  "interiordesign"
- ],
- "interiordesignervideos": [
-  "interiordesignervideos",
-  "interior",
-  "design",
-  "interiordesign"
- ],
- "linenwallpaper": [
-  "linenwallpaper",
-  "linen",
-  "interiordesign"
- ],
- "metallicwallpaper": [
-  "metallicwallpaper",
-  "metallic",
-  "interiordesign"
- ],
- "patterndesignlab": [
-  "patterndesignlab",
-  "geometric",
-  "pattern",
-  "interiordesign"
- ],
- "philliperomanodesigns": [
-  "philliperomanodesigns",
-  "phillipe",
-  "romano",
-  "interiordesign"
- ],
- "restorationwallpaper": [
-  "restorationwallpaper",
-  "traditional",
-  "damask",
-  "interiordesign"
- ],
- "retrowalls": [
-  "retrowalls",
-  "retro",
-  "century",
-  "interiordesign"
- ],
- "roomsettings": [
-  "roomsettings",
-  "room",
-  "setting",
-  "interiordesign"
- ],
- "screenprintedwallpaper": [
-  "screenprintedwallpaper",
-  "screen",
-  "printed",
-  "interiordesign"
- ],
- "sheltermagazines": [
-  "sheltermagazines",
-  "editorial",
-  "interior",
-  "interiordesign"
- ],
- "suedewallpaper": [
-  "suedewallpaper",
-  "suede",
-  "interiordesign"
- ],
- "textilewallpaper": [
-  "textilewallpaper",
-  "textile",
-  "interiordesign"
- ],
- "thedesignerlibrary": [
-  "thedesignerlibrary",
-  "classic",
-  "damask",
-  "interiordesign"
- ],
- "thesetdecorator": [
-  "thesetdecorator",
-  "dramatic",
-  "scenic",
-  "interiordesign"
- ],
- "traditionalwhimsy": [
-  "traditionalwhimsy",
-  "traditional",
-  "whimsical",
-  "interiordesign"
- ],
- "velvetwallpaper": [
-  "velvetwallpaper",
-  "velvet",
-  "interiordesign"
- ],
- "wallpaperhistory": [
-  "wallpaperhistory",
-  "vintage",
-  "damask",
-  "interiordesign"
- ],
- "wallpaperinstallers": [
-  "wallpaperinstallers",
-  "textured",
-  "wallcovering",
-  "interiordesign"
- ],
- "wallpaperwednesdays": [
-  "wallpaperwednesdays",
-  "designer",
-  "wallcovering",
-  "interiordesign"
- ]
-}
\ No newline at end of file
+ "asseeninhotels": ["hospitalitydesign", "hoteldesign", "hotelinteriors", "interiordesign"],
+ "beverlyhillsvideos": ["luxuryinteriors", "glamdecor", "metallicwallpaper", "interiordesign"],
+ "borninbeverlyhills": ["luxuryinteriors", "glaminterior", "beverlyhills", "interiordesign"],
+ "chinoiseriewallpaper": ["chinoiserie", "chinoiseriewallpaper", "handpaintedwallpaper", "interiordesign"],
+ "commercialwallcoverings": ["commercialdesign", "contractinteriors", "hospitalitydesign", "interiordesign"],
+ "customwallcoverings": ["wallmural", "custommural", "wallpaperdesign", "interiordesign"],
+ "designerlaboratory": ["geometricwallpaper", "modernwallpaper", "wallpaperdesign", "interiordesign"],
+ "designerwallcoverings": ["wallpaper", "wallcovering", "luxuryinteriors", "interiordesign"],
+ "fabric_fridays": ["fabricfriday", "fabrics", "textiledesign", "interiordesign"],
+ "ffepurchasing": ["ffe", "hospitalitydesign", "contractdesign", "interiordesign"],
+ "grassclothwallpaper": ["grasscloth", "grassclothwallpaper", "naturalwallcovering", "interiordesign"],
+ "hollywoodwallcoverings": ["hollywoodregency", "glamdecor", "luxurywallpaper", "interiordesign"],
+ "hospitalitywallcoverings": ["hospitalitydesign", "hoteldesign", "contractinteriors", "interiordesign"],
+ "interiordesignervideos": ["interiordesign", "interiordesigner", "designinspo", "homedecor"],
+ "linenwallpaper": ["linenwallpaper", "naturalwallcovering", "texturedwalls", "interiordesign"],
+ "metallicwallpaper": ["metallicwallpaper", "goldwallpaper", "luxurywallpaper", "interiordesign"],
+ "patterndesignlab": ["surfacedesign", "patterndesign", "textiledesign", "interiordesign"],
+ "philliperomanodesigns": ["luxurywallpaper", "corkwallpaper", "wallcovering", "interiordesign"],
+ "restorationwallpaper": ["traditionaldecor", "damaskwallpaper", "historichomes", "interiordesign"],
+ "retrowalls": ["retrowallpaper", "midcenturymodern", "vintagedecor", "interiordesign"],
+ "roomsettings": ["interiorstyling", "homedecor", "roomdecor", "interiordesign"],
+ "screenprintedwallpaper": ["screenprint", "handprintedwallpaper", "wallpaperdesign", "interiordesign"],
+ "sheltermagazines": ["designinspo", "interiorstyling", "homedecor", "interiordesign"],
+ "suedewallpaper": ["suede", "texturedwalls", "luxurywallpaper", "interiordesign"],
+ "textilewallpaper": ["textiledesign", "textiles", "texturedwalls", "interiordesign"],
+ "thedesignerlibrary": ["damaskwallpaper", "traditionaldecor", "classicinteriors", "interiordesign"],
+ "thesetdecorator": ["setdecor", "setdesign", "productiondesign", "interiordesign"],
+ "traditionalwhimsy": ["grandmillennial", "traditionaldecor", "whimsicaldecor", "interiordesign"],
+ "velvetwallpaper": ["velvet", "flockedwallpaper", "luxurywallpaper", "interiordesign"],
+ "wallpaperhistory": ["vintagewallpaper", "historicinteriors", "damaskwallpaper", "interiordesign"],
+ "wallpaperinstallers": ["wallpaperinstallation", "wallpaperinstaller", "wallpaperhanger", "interiordesign"],
+ "wallpaperwednesdays": ["wallpaperwednesday", "wallpaper", "wallcovering", "interiordesign"]
+}

← d165d00 IG reshare: fix robustness gap — track vendor list + hashtag  ·  back to Norma Platform  ·  chore: lint fixes (guard JSONL parses, __dirname paths, fix 039ad5d →