Sanity CMS — marketing layer over NetSuite products (9 brands)
Work at Orlando Foods. Internal details and brand names anonymized where appropriate.
TL;DR
I built a Sanity CMS that sits on top of NetSuite, which stays the source of truth for products. It adds a marketing content layer where our team prepares content for 9 brands — from social media to websites — with custom spec-sheet generators, views that show what’s missing, and a product dashboard.
Context
- NetSuite is the ERP and single source of truth for product data (SKUs, pricing, specs)
- The company runs 9 brands, each with its own marketing needs — social media, websites, SEO, optimization
- Before this, marketing content lived in scattered spreadsheets and documents, with no clear way to see what was done, what was missing, or what was ready to publish
- Product spec sheets were made by hand — slow, error-prone, and inconsistent across brands
What I built
Marketing content layer
A structured content setup in Sanity where each NetSuite product gets a layer of marketing fields: descriptions, images, social copy, website content, and brand-specific fields. The NetSuite data stays the source of truth — the CMS only adds what marketing needs.
Custom spec sheet generators
Custom generators inside Sanity build formatted product spec sheets straight from the structured data. What used to be assembled by hand now takes a few clicks — same formatting every time, correct data, ready to export.
Product views that show what’s missing
Views that let the team filter and group products by brand, category, completeness, and status. Missing fields show up right away — no need to open each product to find them. Content audits are fast, and it’s obvious what to fix first.
Product dashboard
A dashboard that shows product counts — total, by category, by brand, by completeness — so the team can see the state of the catalog at a glance, with no reports to run.
What it solved
- Speed: spec sheets went from assembled by hand to generated from structured data
- Visibility: one place to see all products across all 9 brands, with clear gaps
- Consistency: the structured model keeps the same fields and format across brands
- What to do next: missing fields show up on their own, so the team knows where to focus
Related notes
- Don’t sync everything: one owner, one direction per field — the field-ownership rule behind the ERP↔CMS setup used here.