Each claim ships with concrete evidence — env vars, table names, cadence chips. No marketing fluff.
◆DesignCompliance automation by law — the cutoff is a query, not a sweep
Each SKU's total-THC fraction (total = THCa × 0.877 + Δ9 + synthetics) is computed once at Wix → Medusa migration time and stored on the product. The Phase 2 Sunset cutoff is a database query — WHERE total_thc <= 0.003 — not a hand-curated list, so there is no room for a missed delisting on Nov 12. State ship-blocks (HI/ID/IA/MS/NH/SD) and container-cap audits run at every add-to-cart and checkout.
- Before
- Wix had no cannabis-specific compliance tooling; Brendon manually tracked SKU legality
- After
- Medusa workflows reject non-compliant SKUs at the API level, surfacing inline errors to the customer UI
◉Retention142 historical orders + a consent-stratified customer archive
Exported the Wix order transaction API and materialized 142 orders (#10001–10142) into Medusa Postgres with exact payment/fulfillment history. 16,881 email / 11,354 phone / 7,043 phone-only SMS customers were migrated to Medusa + Neon ops DB with import-source=wix_archive tags and full consent preservation. Separately, all 23,924 legacy Wix contacts were audited and classified into five legal tiers; only 116 cleared as marketable, while 16,712 bulk-import leads were written CRM-only (crm_only=true) so no Klaviyo/AIQ sync ever touches them. CAN-SPAM/TCPA compliance is a column, not a promise.
- Before
- Wix warehouse; orders + subscribers live only on Wix (not portable)
- After
- Orders + customers live in Medusa/Neon, queryable, archivable, consent-tiered
- ▸142 orders (#10001–10142) live in Medusa Postgres, queryable and not dependent on Wix
- ▸23,924 contacts audited via the Wix Contacts v4 API; 116 green-tier marketable; 0 red-tier ever written
- ▸Stratifier: scripts/wix-customer-import-stratified.ts (5-tier classifier)
◉RetentionThree-phase strategy baked into the schema
Phase 1 (Liquidation, Apr 19 → Oct 31): full catalog on current rails. Phase 2 (Sunset, Nov 1–11): only compliant SKUs visible, fallback payment rail. Phase 3 (Post-ban, Nov 12 →): adaptogen coffee + CBD/CBG wellness + compliant smokable hemp. The phase is a runtime flag; product visibility, payment rail, and compliance copy all consult it — so the pivot is a flag flip, not a content emergency.
- Before
- Wix had no concept of a future-dated catalog cutover
- After
- A runtime phase flag drives visibility, payment rail, and compliance copy in lockstep
△Agent backboneA Slack-driven, human-gated approval pipeline — agents draft, the owner ships
Staff and superusers queue content and design work into Slack; a 5-minute cron ingests it, an AI classifier routes it into one of eight action kinds across two review lanes, and nothing reaches a customer or production without a human tap. Content drafts (SMS/email/blog) wait on the brand owner; site-design changes assemble a Vercel preview and wait on the account owner to promote. The agents operate on real store data and hand edge cases to a review queue instead of guessing.
- Before
- Wix inbox locked; no AI assistance; no custom order-approval workflows
- After
- In-house chat + email threading; AI-classified approval queue; ops queue visible in admin
- ▸Neon bmh-storefront-ops: triage_queue, superuser_uploads, design_requests, approval_audit
- ▸canPromoteToProd() = owner-only hard gate, re-checked server-side on every ship action
- ▸Every state transition written to an append-only approval_audit table
- ▸Wix inbox port (PR #70): live-visitor presence + multi-threaded email (Wix-parity)
▲Real-time pushOrder → confirmed → shipped → delivered, verified end-to-end to a real inbox
The transactional spine isn't a stub. An order fires confirmation, shipping (with carrier tracking), and delivery emails — each rendered, sent, and confirmed landing in a real IMAP inbox. The send path is Resend → AWS SES → a self-hosted Stalwart mail server on verified domains. Customer SMS rides AlpineIQ's v2 transactional endpoint, consent-gated against AIQ's own opt-out suppression so it never texts a stranger.
- Before
- Square-via-WIX-PAY-PRO with email-only, platform-controlled comms
- After
- Direct Clover REST + 3 IMAP-verified transactional emails + consent-gated SMS
- ▸3/3 lifecycle emails delivered + IMAP-confirmed (Resend → SES → Stalwart)
- ▸AIQ migrated off dead v1.1 → POST /api/v2/sms + GET /api/v2/loyalty/lookup
- ▸Order-placed webhook fans out: email + consent-gated SMS + AIQ retention tag
- ▸SES bounce/complaint → identity suppression, fail-closed
▲Real-time pushPayment processor escape from Square via Wix
Clover high-risk processor (hemp-friendly ISO reseller) is wired as primary with Aeropay (ACH) as backup; Square is abandoned. Medusa payment modules handle tokenization, capture, void, and webhook reconciliation; a Phase-2 Stripe rail is planned through the same abstraction. Sandbox creds are wired; production MID awaits GPS ISO approval.
- Before
- Square-via-WIX-PAY-PRO (subject to platform bans during reputational cycles)
- After
- Direct Clover REST integration; full SLA and risk control owned by Brendon
◆DesignAn operating surface, not just a storefront — live Medusa-backed admin on mobile
The old store had a Wix dashboard. The rebuild has an admin that reads live from Medusa over a Bearer-JWT bridge: orders with payment + fulfillment status pills, a per-order activity timeline (placed/paid/shipped/delivered), search and filters, and an iOS-style bottom nav so it runs as an installable PWA from a phone. A customer preferences page round-trips consent to the cross-brand OG.Life identity layer so a shopper never opts in four times. Every component, page, and workflow is TypeScript in git — 76 storefront pages + 38 backend modules, AI-editable from day one.
- Before
- Wix drag-and-drop; custom code required Wix HTML-widget knowledge
- After
- Next.js App Router + RSC; shadcn/ui; Tailwind; Medusa workflows in TypeScript
- ▸/admin/orders renders 'Live from Medusa' over admin.bigmoosehemp.com (JWT-authed)
- ▸Per-order timeline + status pills + search/filter; mobile bottom-nav PWA
- ▸/preferences/[token] ↔ OG.Life biz-preferences webhook (HMAC-signed)
- ▸76 storefront pages + 38 backend modules; no page-builder black box
◉RetentionSEO parity maintained via 301s + ISR
Wix URLs redirect to Medusa equivalents (generated by scripts/generate-301-redirects.ts). ISR (revalidate: 3600) + RSC drive SEO, and a dynamic sitemap filters by compliance phase after Nov 12. A middleware-owned redirect map prevents losing organic equity through the platform change.
- Before
- Wix-hosted URLs with Wix domain authority; risk of lost traffic on platform change
- After
- Owned domain; ISR caching; 301-protected old URLs; dynamic compliance filtering in sitemap