GFS Platform

Admin dashboard

Internal: APIs, services, integrations, data health, sync status, infra

Worker
api.ai-globalfoodsolutions.co
D1 rows
185,500+
18 tables
Last sync
every 15 min
Integrations
22 active
16 inactive
Open gaps
72

Service health

Live checks against the Worker. If api.ai-globalfoodsolutions.co is unreachable, the page falls back to the workers.dev URL.

ServiceEndpointStatus
Worker — healthapi.ai-globalfoodsolutions.co/api/health
Worker — sync-statusapi.ai-globalfoodsolutions.co/api/sync-status
D1 databasegfs-netsuiteProvisioned
KV namespaceCACHE (e880e40b…)Provisioned
R2 bucketgfs-filesProvisioned
Custom domainapi.ai-globalfoodsolutions.co

Risk register

Strategic risks (separate from per-item GAPS tracker). Source: data/risk-register.json.

RiskDescriptionMitigation
Chartstone SPOFEntire sync pipeline depends on Chartstone Pro running on a single Mac. If machine is off/asleep/broken, D1 stops updating. No monitoring, no alerting, no failover.Move to Worker-based sync via SuiteAPI RESTlet (eliminates localhost dependency)
Single AdminOnly Michael Levine can deploy Workers, manage D1, rotate secrets, and access all CF/NS admin. Bus factor = 1.Document all procedures (done in runbook). Cross-train second admin. Share CF access.
No BackupsNo D1 backup strategy, no NS data export schedule, no disaster recovery plan. If CF account compromised, D1 data could be lost.D1 has point-in-time recovery (paid plan). Schedule regular wrangler d1 export.
48 Public SuiteletsInternal ops portal, all broker portals, and product program portals accessible without NS login. Data exposure risk.Audit each isonline=T deployment. Restrict internal ops immediately. Broker portals may need to stay public.

Known issues

Operational truth board — current bugs and limitations with status. Source: data/known-issues.json.

IssueStatusImpactFix
sync.sh had macOS quarantine (com.apple.provenance)FIXEDlaunchd sync was failing with "Operation not permitted"xattr -d com.apple.provenance sync.sh
Custom domain SSLPENDINGapi.ai-globalfoodsolutions.co not yet serving HTTPSCheck CF dashboard Edge Certificates
Worker sync cron is stubTODOhandleSync() only writes sync_log, doesn't call SuiteAPIImplement RESTlet delta sync in Worker
Worker daily report emailTODOhandleDailyReport() only logs to consoleImplement via Cloudflare Email
KV and R2 bound but unusedFUTURENo endpoints read/write KV or R2Phase 4: KV caching, R2 file storage
vb_lines coverageRESOLVED100% of bills with inventory items (11,631/11,631). 11,285 expense-only bills have no item lines by design.No action needed
No DKIM TXT record foundCHECKEmail deliverability may be affectedVerify in CF dashboard Email Routing

Build status

Live snapshot of platform component readiness.

ComponentStatusNotes
Worker — REST endpointsComplete20+ endpoints, CORS, security headers, Bearer auth
D1 — schema + initial loadComplete18 tables, 185K rows loaded via 45 SQL files
KV — namespace provisionedProvisioned, not usedBound to Worker but no endpoints read/write to it
R2 — bucket provisionedProvisioned, not usedBound to Worker, only File Upload RESTlet writes to it via SuiteAttach
Sync — local launchdRunningsync.sh every 15 min via launchd
Sync — Worker scheduled() handlerStubCron declared in wrangler.jsonc but no handler in src/index.ts
Pages — gfs-netsuiteDeployedConsolidated platform live
Pages — legacy gfs-system-guideDeprecatedPre-consolidation deploy, kept until migration confirmed
Cloudflare Access on PagesNot configuredTier 1 GAP — Pages site is wide-open
Period close (NS)OpenAll 154 periods open since 2018; Tier 1 GAP
Custom domain SSLPendingapi.ai-globalfoodsolutions.co not yet serving HTTPS
DKIM recordCheckEmail deliverability may be affected
git baseline commitNot committedRepo init'd, zero commits
Backup strategy (D1)Not configuredNo scheduled export; rely on initial-load SQL only

Sync status

15-min NetSuite-to-D1 sync runs locally via launchd. Worker scheduled() is stub. See Tier 2 → Infrastructure.

JobSourceCadenceFunctionCurrently
NS → D1 syncsync.shevery 15 minChartstone delta query → D1 upsertLocal (launchd)
Worker cron */15wrangler.jsoncevery 15 minDeclared but no handlerStub
Worker cron 0 19wrangler.jsonc7pm dailyDeclared but no handlerStub

Integrations

Full inventory at NetSuite reference → integrations.

IntegrationInternal IDStatus
SuiteAttach File Upload RESTlettba:11/app:318active
NetSuite Analytics Warehousetba:2/app:11active
Atlas Agent (Read Only) - 315tba:10/app:315inactive
Atlas Agent (Read Only) - 314tba:9/app:314inactive
Twin Agenttba:8/app:313inactive
integrator.io (Celigo) 1tba:7/app:112inactive
integrator.io (Celigo) 2tba:6/app:112inactive
integrator.io (Celigo) 3tba:5/app:112inactive
Zapier 1tba:4/app:12inactive
Zapier 2tba:3/app:12inactive
Tray.IOtba:1/app:4inactive
Chartstone Toolkit RESTletrestlet:2949active
SuiteAPI RESTletrestlet:2948active
File Upload RESTlet (SuiteAttach)restlet:2512active
Attach File - Zapier RESTletrestlet:989active
Celigo IO RESTlets (5)restlet:1805-1811active
Zapier Suite (13 RESTlets)restlet:990-2747active
ECOB Bill of Lading Integrationbundle:312584active
Cash 360 Bundlebundle:cash360active
Costed BOM Bundlebundle:costedbomactive
APM Bundlebundle:apmactive
Last Sales Activity Bundlebundle:lsaactive
Allergen Statement Bundlebundle:allergeninactive
Dashboard Tiles Bundle (185219)bundle:185219active
Dunning Bundle (392827)bundle:392827active
Electronic Payments Bundle (533070)bundle:533070active
Supply Chain Management Bundle (47193)bundle:47193active
Tax Audit Files Bundle (4599)bundle:4599active
Prompt Payment Discount Bundle (STC)bundle:stcactive
NetSuite PS/PM Bundle (39609)bundle:39609active
Vendor Bill Bundle (240841)bundle:240841inactive
Client Audit Trailbundle:catactive
File Drag and Dropbundle:filedragdropactive
SII (Spain) Bundlebundle:siiinactive
Intrastat Bundlebundle:intrastatinactive
Norway SAF-T Bundlebundle:saftnoinactive
UAE Emirate Bundlebundle:uaeinactive
France Tax Bundlebundle:frinactive

Data quality

Grades reflect coverage of mandatory or important fields per entity.

EntityRowsGradeNotes
Customers283B71% have terms set (28 missing), category gaps on ~10%
Vendors484F93% missing payment terms (451), 70% missing emails (341)
Items1,148F78% missing GTIN/UPC (765), 71% missing case weight (694), 75% missing storage temp
Transactions102,367AFull coverage 2018-2027, all 20 types, sync running
Customer pricing1,264CStale-price alert exists, manual refresh
Employees116BAll active employees, some role assignments incomplete
GL accounts152AFull chart of accounts
Contacts490BCoverage adequate, email/phone gaps on some entities

NetSuite reference at a glance

Scripts
1,141