# 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)*
