# Product Manager Audit — GoodGo POS System > **Auditor**: Product Manager Agent > **Date**: 2026-03-20 > **Scope**: Feature completeness, user flows, product gaps, roadmap alignment > **Working Directory**: `/Users/velikho/Desktop/WORKING/pos-system` --- ## Executive Summary GoodGo POS là nền tảng multi-vertical mạnh, với 5 vertical đều có core POS hoạt động (~85–95% feature-complete cho Restaurant, Karaoke, Cafe, Spa, Retail). Tuy nhiên, toàn bộ marketing/CRM ecosystem — được quảng bá là key differentiator so với KiotViet, Sapo, iPOS — là **UI stub hoàn toàn, không có backend integration**. Đây là rủi ro sản phẩm cao nhất cần giải quyết trước demo/launch. --- ## Critical Issues ### CI-1: Marketing Suite là Demo 100% — Zero Backend Integration **File paths**: - `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/AiChatbot.razor` (210 lines) - `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/CustomerCrm.razor` (173 lines) - `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/LivechatConsole.razor` (192 lines) - `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/AiContentStudio.razor` (176 lines) - `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/ChatbotAutomation.razor` (145 lines) - `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/SocialHub.razor` (162 lines) **Pattern** (identical trong tất cả 6 trang): ```csharp // EN: Demo customer data / VI: Dữ liệu khách hàng demo private record CustomerInfo(string Name, string Phone, ...); private readonly CustomerInfo[] _customers = new[] { new CustomerInfo(...), ... }; ``` **Impact**: Merchant đăng ký plan Growth/Pro vì tin vào tính năng CRM, AI Chatbot, và Social Hub — khi vào dùng sẽ thấy dữ liệu giả. Đây là **churn risk** và **trust damage** lớn. Đây là điểm mà GoodGo tuyên bố vượt KiotViet và Sapo nhưng thực tế là không có gì. **Recommended action**: Ẩn Marketing section khỏi Starter/Growth plan. Chỉ show cho Pro+ với label "Coming Soon" hoặc implement thực tế — không nên để merchant dùng thử demo data như product thật. --- ### CI-2: Voucher/Promotion Redemption bị gián đoạn hoàn toàn **Backend** (hoạt động): `services/promotion-service-net/src/PromotionService.API/Application/Commands/` — có `ClaimVoucher`, `RedeemVoucher`, `CreateCampaign`. **Frontend gap**: Không có UI nào trong payment flow để nhập mã voucher. Kiểm tra: - `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Shared/Payment/MethodSelect.razor` — không có "Apply Voucher" field. - `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPromotions.razor` — có form tạo voucher nhưng khép lại tại UI. **Impact**: Merchant tạo được voucher nhưng customer không thể redeem tại quầy. Merchant nghĩ mình đã chạy campaign — thực tế campaign không có tác dụng gì. Đây là **broken promise** trong mỗi giao dịch. --- ### CI-3: Payment Gateway — Trạng thái Live/Sandbox không rõ ràng `services/wallet-service-net/src/WalletService.API/Application/Commands/Payments/` có `CreatePayment`, `ProcessPaymentCallback` — architecture tốt với `IPaymentGateway` abstraction. Tuy nhiên: - Không rõ gateway nào đang live (VNPay? MoMo? ZaloPay?) - Webhook callback security (HMAC signature verification) không được documented - TipEntry UI tồn tại nhưng tip logic tới wallet service chưa được verify **Impact**: Nếu team demo payment cho khách hàng mà không biết gateway nào đang hoạt động, sẽ fail live demo. Đây là **P0 trước bất kỳ investor/merchant demo**. --- ### CI-4: Analytics & Reporting — 0% Wired to Real Data **Frontend** (đầy đủ UI): Revenue Dashboard, Staff Performance, EOD Report tồn tại. **Backend**: `order-service-net` có `CloseDayCommand` nhưng không có aggregation queries cho trend analytics. **Gap**: All KPI cards (revenue, transactions, avg order value, growth %) là hardcoded demo values trong Razor `@code` blocks. **Impact**: Merchant đưa ra quyết định kinh doanh dựa trên số liệu giả. Với SMB Việt Nam, quyết định nhập hàng/thuê staff dựa trên báo cáo — nếu báo cáo sai họ sẽ mất tiền thật. --- ## Warnings ### W-1: Promotion-to-POS Gap Ảnh Hưởng Toàn Bộ Marketing Funnel Backend promotion service exists và functional. Frontend marketing UI exists nhưng disconnected. Kết quả: Merchant create campaign → customer không thể redeem → merchant không thấy ROI → churn. Theo user flow chuẩn: **Merchant tạo voucher** (Admin Shop → Promotions) → **Customer nhận voucher** (qua gì? SMS/QR? Chưa có) → **Customer redeem tại quầy** (POS Payment screen — không có input field) → **Order được discount** (backend ready). Bước 2 và 3 bị vỡ. ### W-2: Spa Vertical — Appointment Logic chưa End-to-End - UI: Appointment calendar, therapist assignment, treatment timer có (`Pages/Pos/Spa/`) - Backend: `booking-service` có CreateAppointment, therapist CRUD - Gap: Khi khách walk-in không book trước, flow "new appointment from POS" không rõ ràng. "Book from POS" button và "Customer lookup" có trong UI nhưng integration path chưa documented. ### W-3: Onboarding Wizard — Device Pairing bước 5 chưa rõ `Pages/Admin/Onboarding/OnboardingDevice.razor` — Step 5 có UI pairing device nhưng mechanism (QR code? token? physical device ID?) không visible trong code. Nếu merchant dùng iPad/tablet mới và step này fail, họ sẽ stuck ngay bước cuối onboarding. ### W-4: QR Menu Customer Ordering — Post-Cart Flow Bị Hở `Pages/Customer/TableMenu.razor`: Cart management hoạt động tốt. Tuy nhiên sau khi customer bấm "Checkout": - Navigates to payment method selection - Nhưng customer context (tableId, sessionId) cần được passed qua payment flow - Không rõ order được submit vào order-service như thế nào, staff có nhận notification không **Risk**: Customer submit order nhưng staff không thấy → order bị miss → bad experience → review kém. ### W-5: Neon PostgreSQL Shared Credentials (Security) `deployments/` — Staging/production sử dụng shared DB credentials cho tất cả 23+ services. Nếu 1 service bị compromise, attacker có access tới toàn bộ DB tier. **PM impact**: Đây là compliance risk (PDPA Việt Nam, payment data security) sẽ block enterprise deals. ### W-6: Marketing mkt-* Services thiếu trong Docker (4 services) `mkt-facebook-service-net`, `mkt-whatsapp-service-net`, `mkt-x-service-net`, `mkt-zalo-service-net` không có trong `deployments/local/docker-compose.yml`. Team không thể test marketing integration locally. --- ## Improvements ### IMP-1: Triển khai "Voucher Redemption" tại điểm bán — ROI cao nhất trong 1 sprint **User Story**: *As a cashier, I want to enter a voucher code during checkout so that the customer gets the promised discount.* **Effort**: 3 ngày backend (new Query: `ValidateVoucher`), 2 ngày frontend (thêm input vào `MethodSelect.razor`). **RICE Score**: Reach=500 merchants × Impact=3 (high) × Confidence=90% / Effort=1 week = **1,350** (highest priority). ### IMP-2: Wire Analytics Dashboard vào Real Data — Quick Win `services/order-service-net` đã có order data. Thêm: - `GetDailyRevenueQuery` → trả về revenue by day/payment method - `GetTopProductsQuery` → trả về best-sellers - Wire `Pages/Admin/Dashboard/RevenueDashboard.razor` thay demo arrays **Effort**: 5 ngày backend (2 queries + aggregation), 2 ngày frontend (replace mock data). **Impact**: Merchant có real business intelligence → quyết định tốt hơn → giảm churn. ### IMP-3: Vertical-Specific Reporting — "Quick Wins" per persona | Vertical | Missing Report | Effort | Value | |----------|---------------|--------|-------| | Karaoke | Per-room revenue, peak hour heatmap | 5 ngày | High | | Cafe | Daily queue throughput, popular items | 3 ngày | High | | Restaurant | Table turnover rate, avg dwell time | 4 ngày | High | | Spa | Therapist utilization, rebooking rate | 4 ngày | Medium | | Retail | Inventory aging, return rate by SKU | 5 ngày | Medium | ### IMP-4: Customer Feedback Loop — Differentiate từ Competitors Sau khi payment success, hiện QR code cho customer rate experience (1-5 stars + comment). Feed data vào merchant dashboard. Không competitor nào (KiotViet, Sapo, iPOS) có feature này tích hợp trong POS flow. **Effort**: 2 tuần (new `feedback-service` đơn giản hoặc add vào order-service). **Competitive impact**: Cao — là unique differentiator có thể quảng cáo. ### IMP-5: Marketing Section — Quyết Định Rõ Ràng về Roadmap Có 3 lựa chọn: **Option A — Hide & Honest (Recommended ngắn hạn)**: - Ẩn Marketing section với "Coming in Q2 2026" label - Giữ mockup làm prototype cho user research - Không gây trust damage với merchants **Option B — Stub with Real Data**: - Giữ UI, thay demo arrays bằng real API calls (customer list from IAM/order service, basic stats) - 2 tuần effort, delivers "real feel" - Không có full chatbot/social media nhưng CRM list sẽ có data thật **Option C — Full Implementation**: - Build MCP-powered chatbot integration (Zalo, Facebook, WhatsApp) - 8-12 tuần, cần dedicated team - Align với Q2 2026 roadmap target ### IMP-6: Onboarding Post-Completion — First Order Tutorial Sau bước 6 "Complete" của onboarding wizard, hiện guided walkthrough: - "Bước tiếp theo: Tạo đơn hàng đầu tiên" với checklist - Link tới tutorial video **Effort**: 2 ngày, impact rất cao với new merchant activation rate. ### IMP-7: Mobile App Completeness cho Staff `app-client-base-swift` iOS app: 9 pages, auth flows và basic navigation. Staff cần mobile app để: - Clock in/out khi không ở quầy - Nhận order notifications - Check lịch làm việc Priority: Medium, nhưng cần để tránh staff dùng browser mobile (poor UX). --- ## Action Items (Prioritized) ### Sprint 1 (Week 1-2) — Revenue-Critical | # | Action | Owner | Effort | Priority | RICE | |---|--------|-------|--------|----------|------| | A1 | Xác nhận payment gateways nào đang live, document & test | CTO + Backend | 3 ngày | P0 | — | | A2 | Implement Voucher Redemption field trong payment flow | Backend + Frontend | 1 tuần | P0 | 1,350 | | A3 | Ẩn/label "Coming Soon" cho Marketing section | Frontend | 1 ngày | P0 | — | | A4 | Wire Revenue Dashboard tới real order data | Backend + Frontend | 1 tuần | P1 | 900 | ### Sprint 2 (Week 3-4) — Merchant Retention | # | Action | Owner | Effort | Priority | |---|--------|-------|--------|----------| | A5 | Vertical-specific reporting (Karaoke + Cafe ưu tiên) | Backend + Frontend | 2 tuần | P1 | | A6 | Fix QR Customer Menu → Order submission flow | Backend + Frontend | 3 ngày | P1 | | A7 | Clarify & fix Onboarding Device Pairing (bước 5) | Frontend + Backend | 2 ngày | P1 | | A8 | Add post-onboarding "First Order" tutorial | Frontend | 2 ngày | P2 | ### Sprint 3 (Week 5-8) — Differentiation | # | Action | Owner | Effort | Priority | |---|--------|-------|--------|----------| | A9 | Customer Feedback post-payment (QR rating) | Backend + Frontend | 2 tuần | P2 | | A10 | Marketing Section — Option B (stub with real data) | Backend + Frontend | 2 tuần | P2 | | A11 | iOS Mobile App — Staff clock-in/order notifications | Mobile | 3 tuần | P2 | | A12 | Audit Neon PostgreSQL credentials (per-service isolation) | DevOps | 1 tuần | P1 | --- ## Success Metrics | Metric | Baseline | Target (3 months) | How to Measure | |--------|----------|-------------------|----------------| | Merchant activation rate (first order after onboarding) | Unknown | >70% | Analytics: orders/merchant in first 7 days | | Voucher redemption rate | 0% (feature broken) | >15% orders with voucher | Order service: count orders with promotion_id | | Marketing section churn trigger | Unknown | <5% abandon after seeing stub | Frontend: page bounce rate on Marketing | | Dashboard daily active usage | Unknown | >60% merchants view weekly | Analytics: dashboard page views/week | | Payment failure rate | Unknown | <2% | Wallet service: failed payments / total | | NPS (Merchant) | Baseline needed | >50 | Survey via in-app prompt | --- ## Competitive Positioning Assessment | Feature | GoodGo Status | KiotViet | Sapo POS | iPOS | |---------|:-------------:|:--------:|:--------:|:----:| | Multi-vertical POS | ✅ 5 verticals | ❌ Retail only | ❌ | ✅ 2 | | KDS Kitchen Display | ✅ | ❌ | ✅ | ✅ | | AI-powered Operations | ✅ MCP (Cafe) | ❌ | ❌ | ❌ | | Loyalty stamps/levels | ✅ Working | Basic | Basic | ✅ | | Marketing CRM | ⚠️ Stub only | Basic | ✅ | ❌ | | Real-time analytics | ⚠️ Demo data | ✅ | ✅ | ✅ | | Omnichannel (Web+Mobile) | ✅ Architecture | ✅ | ✅ | ❌ | | Booking/Scheduling | ✅ | ❌ | ❌ | ✅ | | Multi-tenant (shops) | ✅ | ✅ | ✅ | ✅ | **Assessment**: GoodGo dẫn đầu về multi-vertical và AI integration (MCP server là unique). Nhưng Real-time Analytics và Marketing CRM — nơi Sapo và KiotViet đang mạnh — đang là liability. Cần fix analytics trước mọi marketing effort. --- ## Product Gaps Summary (MoSCoW) ### Must Have (cho MVP launch) - ✅ Multi-vertical POS order flow - ✅ Payment methods UI - ❌ **Real payment gateway integration verified** - ❌ **Voucher redemption at POS** - ❌ **Real analytics data (not demo)** ### Should Have (launch + 30 days) - ❌ Marketing section với real data (Option B) - ❌ Customer feedback loop - ❌ Per-vertical reporting - ✅ Loyalty stamps working - ✅ KDS Kitchen Display ### Could Have (Q2 2026) - ❌ Full AI Chatbot (Zalo/Facebook/WhatsApp) - ❌ AI Content Studio - ❌ Social Hub management - ❌ iOS mobile app complete - ❌ Customer segmentation CRM ### Won't Have (không ưu tiên) - Enterprise multi-location analytics - 3rd-party ERP integration - Marketplace integration (Shopee, Lazada) --- *Audit completed: 2026-03-20* *Next review: After Sprint 1 completion (2026-04-03)* *Related: [ROADMAP.md](../../ROADMAP.md) | [CTO_REPORT_SHOP_DELETE.md](../../CTO_REPORT_SHOP_DELETE.md)*