← Back to all projects
Complete PREP (Claude builds, Cole deploys in NetSuite) RBD Site Search & Product Discovery (rileyblakedesigns.com) Created 2026-04-01 0/17 tasks

Plan: Athos Commerce Product Data Feed — RBD


Objective

Build a SuiteScript 2.x scheduled script that generates a product data feed from NetSuite, saves it to the File Cabinet at a stable public URL, and runs daily. Athos Commerce will poll this URL to power search and product discovery on rileyblakedesigns.com.


Context

  • Site: rileyblakedesigns.com — SuiteCommerce Standard (NOT SCA, NOT headless, NOT SPA)
  • Athos feed spec: ~/Downloads/Data Sources Guide – Athos Search & Product Discovery.pdf
  • Feed format: ndJSON or CSV, hosted at stable HTTPS URL
  • Hosting: NetSuite File Cabinet (permanent, stable URL — no external hosting needed)
  • Athos pulls: Daily re-index, can manually trigger
  • warehouseAPI explored but ruled out — missing image URLs + product URLs, SuiteScript is cleaner with full item record access
  • Session 7 has full research context

Athos required fields: | Field | Source in NetSuite | |---|---| | Unique ID | ns_item_id / item internal ID | | SKU | itemId / rbd_item_id | | Name | displayName | | Product URL | TBD — need URL format from Cole | | Price | cost or online price field — TBD | | Thumbnail URL | TBD — need image field name from Cole |

Athos recommended fields (we have these):

  • __parent_id — Matrix parent ID (if matrix items)
  • __in_stock — derived from quantity_available > 0
  • __in_stock_pct — variants in stock / total variants
  • Category — category field
  • Filter attributes — color, theme, pattern, designer (artist_1), fiber_content, width
  • Search keywords — search_keywords, store_detailed_description
  • Date created — anticipated_release_date or item create date
  • Inventory levels — quantity_available

Blocked On (resolve before writing script)

  1. Item record type — Matrix Items (parent + child variants) or individual inventory items?
  2. Product URL format — what does a product URL look like on rileyblakedesigns.com?
  3. Image field — where do images live on the item record? (storeDisplayThumbnail? custom field?)
  4. Online price field — what field holds the customer-facing price?
  5. NetSuite account ID — needed for File Cabinet URL construction

Implementation Plan

Phase 1: SuiteScript Feed Generator

  • Write SuiteScript 2.x scheduled script (athos_feed_generator.js)
  • Query all active, online items (is_online = true, is_inactive = false)
  • Map required + recommended fields to Athos spec
  • Handle matrix parent/child relationships with __parent_id
  • Generate ndJSON file (one product object per line)
  • Save to File Cabinet folder (e.g., /SuiteScripts/Athos/)
  • Return stable public URL

Phase 2: Deploy & Schedule

  • Cole uploads script to NetSuite Script Manager
  • Creates Script Record (Scheduled Script type)
  • Creates Script Deployment with daily schedule
  • Runs manually once to verify feed file generates
  • Confirms File Cabinet URL is publicly accessible
  • Provides URL to Athos Commerce

Phase 3: Validate with Athos

  • Athos ingests feed and confirms indexing
  • Verify minimum 10 products indexed
  • Check variant grouping (__parent_id) is working
  • Verify filters (color, designer, category) appear correctly

Deployment Steps (for Cole)

Once script is written:

  1. In NetSuite: Go to Customization > Scripting > Scripts > New
  2. Select script type: Scheduled Script
  3. Upload the .js file
  4. Set entry point function: execute
  5. Go to Deployments tab → New Deployment
  6. Set schedule: Daily (suggest 2am to avoid peak traffic)
  7. Status: Released
  8. Run manually first: Deployments → click script → Save & Execute
  9. Check File Cabinet for generated feed file
  10. Copy the file's public URL → give to Athos

Notes

  • SuiteScript has direct access to all item fields — no schema gaps like warehouseAPI
  • File Cabinet URLs format: https://{accountId}.app.netsuite.com/core/media/media.nl?id={fileId}
  • Can also use SuiteCommerce's CDN path if configured
  • Filter data (color, designer, etc.) must be clean in NetSuite — any typos will show as separate filter options in Athos (they don't merge/clean on their end)
  • RBD uses artist_1 as designer field — map this to a designer field in the feed for Athos filtering
  • If RBD uses quantity-based pricing or wholesale pricing, those price fields must all be included per Athos spec