14 KiB
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):
// 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-servicecó 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 methodGetTopProductsQuery→ trả về best-sellers- Wire
Pages/Admin/Dashboard/RevenueDashboard.razorthay 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 | CTO_REPORT_SHOP_DELETE.md