Vendor $ Exposure (per case, summed across all items)
Expiry Timeline · Next 12 Months
Average Cost per Case · by Program
Price Freshness · How old are my prices?
Locked Methodology · 2026-05-05
Select an item from the list to view its full card.
↑ ↓ to navigate · Esc to deselect
Master Database — Every BOM line × every item
Item CodeDescriptionProgram BOM CodeItemVendor $/Unit$/Case Source ↗UpdatedExpiresDays Until
Activity Feed — All notes, sign-offs, and item changelogs
Loading…
System Health Issues
Loading…
How to run locally: python3 scripts/system_health_check.py — outputs a markdown report at mnt/outputs/HEALTH_CHECK_<date>.md and updates health.json for this dashboard.
Live Open-Items Tracker
IDSectionItemStatusAction
GFS Assembly Costing — Quick-Start Guide

What this dashboard is: the working space for GFS finished-goods cost tracking — vendor inputs, BOM line items, FOB dock costs, and ongoing reviews. NetSuite is the live/selling system; this is where the team works on cost models, vendor changes, and item reviews before they go live.

📍 Sidebar Navigation

  • Action Center — landing page · expiring prices · stale quotes · vendor concentration · expiry timeline · price freshness
  • Items — master list (left) + full item card (right) · click any item to open
  • Database — every BOM line × every item, flattened · search + filter + CSV export
  • Vendors — alphabetical list with Internal/External tags · click into Vendor Detail with Profile + Contact + Pricing Tiers + Documents + Activity
  • Activity — running log of notes, sign-offs, item changelogs across all 146 items
  • Open Items — live AUDIT tracker (placeholder rates, missing pricing, methodology decisions)
  • System Health (admin) — full health audit + NetSuite Reconciliation panel
  • Chat with Claude — AI assistant with full dataset context

▤ Item Card · 3 view modes

Top of every item: Cost Master Analysis toggle.

  • Cost — sales-ready FOB summary · big readable numbers · $/case + $/unit + FOB location · NetSuite link
  • Master — Cost Composition Summary · BOM rolled into 6 buckets (Components / Packaging / Labor / Plant Overhead / Production Overhead / Inbound Freight) · top vendors · line count
  • Analysis — full deep dive · BOM table with Code/Item/$/Case/$/Unit/Source/Updated/Expires/Days Until · packaging sub-breakdown · notes (KV-backed) · sign-off history · outstanding questions · change log

Selection persists per-browser. ↑ ↓ arrow keys move through items list when on Items tab. Esc deselects. URL hash #/items/CODE deep-links to a specific item.

🟢 Live in NetSuite vs 🟡 Workspace only

  • The orange NetSuite ● bubble means the item is mapped to a NetSuite SKU (ID shown). Click → opens the NS record in a new tab.
  • The amber Workspace only bubble means the item lives only in this dashboard — could be R&D, draft, variant, or a new product not yet promoted to NS.
  • Same logic for vendors. Internal vs External tags are shown alphabetically in the Vendors list.

📅 Per-line source · updated · expires

Every BOM line carries: a clickable Source (opens the original quote/spec PDF/XLSX), the Updated date (when price was last set), Expires date, and Days Until. Color-coded:

  • Green — > 60 days until expiry
  • Amber — ≤ 60 days · renewal coming
  • Red bold — EXPIRED · with day count
  • Gray italic — methodology line · no expiry

📝 Notes + Sign-off (KV-backed)

Set your name once in Settings (⚙ icon). Then on any item or vendor page, add notes (multi-user, persisted on Cloudflare KV) or sign off (records reviewer + comment + timestamp). Activity tab shows everything chronologically.

💬 Chat with Claude

Full dataset cached as system prompt — Claude has visibility into all 146 items, BOM-line source attribution, vendors, methodology, and open items. Ask things like:

  • "Top 5 most expensive PUB kits"
  • "Which BOM lines expire in 60 days?"
  • "If Damascus raises ciabatta 8%, what's the per-case impact?"
  • "Which items have stale pricing >1 year old?"
  • "Compare MJM-locked PUBs vs Keebler equivalents — show cost delta"

🔄 Refresh pipeline (admin)

python3 scripts/generate_meal_kit_items.py
python3 scripts/generate_inferred_meal_kits.py
python3 scripts/enrich_item_sources.py
python3 scripts/fetch_website_mappings.py        # photos + product URLs
python3 scripts/extract_pricing_tiers.py          # vendor price tier matrices
python3 scripts/resolve_netsuite_ids.py           # NetSuite ID mapping
python3 scripts/netsuite_gap_report.py            # bidirectional reconciliation
python3 scripts/system_health_check.py            # health audit
python3 scripts/generate_fob_rollup.py
python3 scripts/generate_cloudflare_dashboard.py  # rebuild this dashboard
cd cloudflare-deploy && npm run deploy

📥 Future enhancements (planned)

  • Pull richer NetSuite vendor data — primary contact, email, phone, address, terms (Net 30 etc), tax ID, balance, last PO date, comments — when MCP tools come back online
  • Pull richer NetSuite item data — base price, last purchase price, average cost, quantity on hand, preferred vendor, weight, item type
  • Per-line price tier expand on item BOM (when line maps to a known vendor item, click to see all bracket tiers)
  • Customer pricing / margin overlay — "What's the margin if we sell at $X?"
  • Daily email/Slack digest of expiring prices
  • Bulk operations (raise all Damascus prices 5%)
  • PWA / offline support

🔑 Quick reference — color & icon legend

ElementMeaning
ConfirmedConfirmed status · all required pricing on file
Placeholder / TBDPricing or methodology is a placeholder · needs verification
InferredItem BOM was inferred from sister SKU · needs ops verification
InternalInternal vendor (GFS-internal sourcing / methodology lines)
ExternalExternal third-party supplier
MJM-LOCKEDThis item must use MJM grahams per customer spec — DO NOT switch to Keebler
NetSuiteLive in NetSuite · click to open NS record
Workspace onlyWorkspace-only · not yet in NetSuite
Ask Claude anything about your assembly costing system.
All 146 items + per-line source attribution + vendors + methodology — Claude has full context.
Top 5 most expensive items Expiring prices in 60 days Stale price audit Damascus +8% scenario
Model: Sonnet 4.6 · Context: 146 items · Prompt cached