Customer Management
Optional but strategic. Includes Customer profile Customer profile is “optional” only for MVP speed — but strategically it becomes one of the most valuable entities in the whole system.cu Customer profile enables: loyalty store credit reservations layaway returns lookup segmentation marketing analytics Here’s what to add for Customer Management → Customer profile. What “Customer profile” means (business meaning) A customer profile is a persistent identity that stores: contact info purchase history financial relationship (store credit, layaway) preferences segmentation In retail → relationship + analytics In restaurants → frequency + loyalty Core concept (important) Customer = identity + relationship + behavior Meaning the profile must support: Identity (who they are) Contact (how to reach them) Commerce linkage (transactions) Derived insights (lifetime value, frequency) Do not design customer as just a contact table. What you must track (minimum data) Identity id name phone (very important in LATAM) email (optional but useful) document id (optional) Commerce linkage default location customer type (walk-in, registered, VIP, wholesale later) created_at created_by Status active merged blocked (fraud edge case) Recommended additional fields (high value) Address (optional MVP but useful) multiple addresses shipping vs billing Preferences preferred contact channel notes tags Derived metrics (computed, not stored initially) lifetime value last visit purchase frequency Database additions (recommended)
- customer table Core fields: id business_id name phone (indexed — very important) email document_number status created_at created_by Phone should be the main lookup in many markets.
- Customer contact normalization (optional Phase 2) customer_contact customer_id type (phone/email) value primary flag Useful later for omnichannel.
- Address table (recommended) customer_address customer_id label (home/work) address fields default flag Needed for delivery, invoices, e-commerce later.
- Customer tags / segmentation Simple but powerful: customer_tag customer_tag_assignment This enables: VIP Wholesale Influencer Staff Loyalty tiers later Backend functionality you need Core endpoints create/update customer search customer (phone first) merge customers (important later) attach customer to sale Validation rules phone uniqueness (soft) merge rules audit changes permissions for editing sensitive fields Frontend screens (PWA) POS quick flow (critical) Customer must be fast: search by phone quick create inline attach to sale in seconds If this is slow → adoption drops. Customer profile screen Tabs: summary purchases store credit layaway reservations notes Even if tabs are empty initially, design for them. Reports / analytics (Metabase) Customer unlocks huge value: top customers lifetime value frequency cohort analysis retention average ticket by segment VIP identification customer return rate This is where POS becomes CRM-lite. MVP vs Phase 2 ✅ MVP customer profile customer table phone-first lookup attach to sale purchase history link basic profile screen simple tags 🚀 Phase 2 merge workflow loyalty points store credit wallet segmentation engine marketing consent multi-contact support customer scoring omnichannel identity Biggest edge cases (important) Duplicate customers (very common) Phone reuse across people Merging customers with transactions Guest vs registered logic Data privacy / deletion rules Customer returns without profile Multi-location identity consistency These need policies. Strategic insight for FlowPOS (important) Customer profile is the anchor for: loyalty promotions targeting personalization CRM features AI recommendations marketing automation Meaning: Even if “optional”, the schema must be correct now. You don’t need many features — but you need the right structure. If you want, next I can give you: Minimal Kysely schema for customer profile ⭐ recommended Customer merge design (hard but important) Loyalty architecture (next natural step) Store credit wallet design Customer analytics model for Metabase Restaurant-specific customer usage patterns