G Gaia

Switch factory

CYTO-11 — Balakong Jaya CTSB CYTO-29 CTSB CYTOWELL-54 — Taming Jaya PIC/S CTWSB CYTOCNGZ-602 — Guangzhou CTCNGZ

Only factories you are granted appear here (Filament tenant menu).

Leo Lim

leo@navi.my · Owner / Admin

Profile settings Change password

Theme

Sign out
RetailSellR&DMakeBuyStockPlanItemsGMPOpsAdminInsights

Retail CRM — customer book

+ Sale
The book replaces staff memory, not a sales pipeline: retail CRM is a customer book — who buys what, at what price, on what rhythm. Follow-ups are derived from cadence, not a task list anyone maintains. OEM deals keep their pipeline in Sell → CRM; same people underneath when a customer is both.
Follow-ups today 2 due to reorder derived: now > last order + 1.5× cadence — nothing to tick off, it clears itself when they buy
  • Farmasi Seri Taming DUE TO REORDER

    Double Root Coffee @ 7.50 · rhythm ~3 weeks · last order 2026-06-10 (29 days ago) · note: call before 6pm

    New sale
  • Coach Rizal (gym) DUE TO REORDER

    STC30 @ 40.00 · rhythm ~monthly · last order 2026-06-05 (34 days ago) · note: pays transfer same day

    New sale

Owing total

1,337.40 MYR

Herbs & Health PJ — 1,080.00 · due 17 Jul
Farmasi Seri Taming — 257.40 · overdue

5 retail customers in the book · it remembers prices and rhythm so staff don't have to
Customer Phone Usual products · last price Orders Cadence Last order Follow-up Owing Notes
New sale — what staff see (price memory in action — same variant_prices floor as OEM, but soft-enforced here; see Retail → Price lists)

Customer: Aunty Mei

Double Root Coffee / 2024-02

auto-filled: last paid 8.00 · band 7.50–8.00 · floor 5.00

✓ within band — staff can confirm

Customer: Kedai Pak Din

STC30 / 2025-06

BELOW FLOOR 36.00

Retail is a soft floor: the sale completes immediately and the owner gets a notification. The 36.00 floor is untouched for the next attempt.

Project Gaia — static mockup in Filament v3 idiom. No backend. Retail module; customer data shared with OEM underneath (channel-flagged), screens separated. The Double Root RM 5–8 band is the founder's real example.

Retail CRM — field manifest

FieldFilament componentTypeSourceFK target
Customer bookTable over customersviewONE customers table shared with OEM, channel enum (oem / retail / both); this view scoped to channel ∈ {retail, both}. Sell > CRM shows the same people as a deal pipelinecustomers
Usual products · last priceTagsColumn, derivedderivedfrom retail sale-line history: most-frequent variants + last price paid per variant (price memory)retail_sale_lines
CadenceTextColumn, derivedintervalmedian days between this customer's sales — recomputed on every posted sale, never typed in
Follow-upBadge, derivedflagDUE TO REORDER when now > last_order + 1.5× cadence. A derived flag, NOT a task table — no follow_ups table exists; the queue clears itself when the customer buys
Call / WhatsAppTable actionsactiontel: link + wa.me link pre-filled with usual product and last price (concept — no message log stored)
New sale price fieldTextInput + memory hintmoneyauto-fills last paid for customer+variant; floor from SHARED variant_prices — below floor is a SOFT floor in retail: the sale completes immediately and notifies the owner (no lock). OEM sales in Sell keep the hard lockvariant_prices
Owing (column + total)TextColumn + StatsOverview, derivedmoneysum of retail_sales.total where payment_status = unpaid, per customer; red when past due_date, amber when still within terms — same running balance shown on Retail (Today strip), Retail → Customers and Insights → Retailretail_sales

Engine notes

  • Shared-data doctrine: ONE customers table (channel enum oem / retail / both) and ONE variant_prices table — data shared, views scoped. What separates Retail from Sell: screens, numbering series (RS- vs SO-), CRM shape (book vs pipeline), e-invoicing path (consolidated vs per-order).
  • Cadence formula: cadence = median(days between consecutive sales); follow-up flag = now > last_order + 1.5 × cadence. Derived on read — deleting a sale re-derives everything.
  • The book is deliberately not a pipeline: no stages, no deal values. Small repeat buyers need "who's overdue and what do they pay", nothing more.