Appearance
Minigame platform: phasing and MVP
For the product owner. Companion to PRODUCT-OVERVIEW.md, which describes every feature. This document says what we launch first, what comes next, and how the business and the system work together.Draft of 2026-11-10. Phase contents are suggestions for you to confirm (see "Decisions for you" at the end).
1. The idea
Most features are already built. So the phases are not a build order. They are what we switch on, sell and promise at each stage, plus the few things still missing before we can honestly do that.
Rule for the MVP: a brand can be set up end to end, a real player can play and win, the brand can see whether it paid off, and we can start and stop the license, without us promising anything we can't keep.
The MVP is phase 1 only. Phase 2 is growth. Phase 1 is deliberately large, and that was a decision, not an accident (section 9 says how to keep it safe).
2. Phase summary
| Phase | Theme | Who it's for | Exit test |
|---|---|---|---|
| 1: MVP | The full direct-sales product: several brands, several campaigns each, three games, prizes and the prize library, ads and store links, analytics, survey and journey editor, templates, time-limited grants, games as grants, "client manages" switches, and licenses | Our first direct-sales customers (we are owner and agency) | A brand runs several real campaigns, sees what each earned, and we can switch it off when the contract ends |
| 2: Scale | Partner agencies, custom "powered by", tighter roles, anti-cheat | Reseller agencies | First partner agency live |
3. The selling model
We sell in phase 1 directly to brands. Everyone below the owner is a level of the same system, so adding a partner agency later (phase 2) needs no redesign.
Two sales cases, one system
What each level controls
What a brand can use is always the overlap of its own license and its agency's license. When the agency's license ends, all of its brands stop with it.
4. The operating model: how each actor acts on the system
4.1 Actors and what they do
4.2 Setting up a new customer (phase 1 checklist as a sequence)
4.3 A player plays and wins
4.4 Campaign lifecycle and prize stock
4.5 License lifecycle
5. Phase 1: MVP
5.1 Players (what the public sees)
| Item | Notes |
|---|---|
| Open the campaign link on a phone, no login | Root campaign at /, others at /c/{slug} |
| Journey: intro → player info → rules → play → result → prize wallet | Default journey only |
| Three games: wheel (Vòng quay), scratch card (Thẻ cào) and mystery bag (Túi mù) | Which games a client may use is a grant (see 5.2) |
| Custom journey: reorder or remove screens, show screens by condition (won or lost, first visit, lucky time, mobile or desktop) | Only if the client has the journey-editor grant |
| Survey after the prize | Only if the client has the survey grant |
| Video before the game, skippable after N seconds | Only if the client has the video grant |
| Prize drawn by the system, respecting stock and weights, safe under heavy traffic | |
| Prize wallet with an optional countdown | |
| Winners list (trophy button) | |
| One play per browser, and the last-chance notice | Per browser, not per person (section 8) |
| Branch and "referred by" fields | |
| Coming-soon page with countdown before the start date, closed page after the end date or license expiry | |
| Ads and product catalogue in the wallet: banners, a timed full-screen ad, products with Shopee, Lazada, TikTok Shop, Tiki or website links | Brands that buy the premium ads package |
| Native look on every screen size, with the brand's background, logo, colours and copy | |
| "Powered by Gomini" footer | Fixed in phase 1 |
5.2 Setup and operation (owner, agency and brand admin)
| Area | Item |
|---|---|
| Multi-client | Switch on Nhiều khách hàng. Add and rename clients. Each client has its own license, quota, grants and users. |
| Multi-campaign | Create, rename, archive and restore campaigns. Name, link (3–40 characters), change of link until the first player. Scheduled start date, end date. Quota shown as "Đã dùng n/max chương trình". |
| Switcher and invites | Pick a client and a campaign from the sidebar. Agency invites brand admins and owner invites agency staff by email sign-up. |
| Look | Default (Impakt) or Gym3 template, colours, fonts, background, copy, header and footer, phone preview. Template import and export for designers (owner, or agency with the import grant). |
| Games as grants (new build) | The owner decides which game types (wheel, scratch card, mystery bag) an agency may use. The agency decides which each client may use. Same two-level rule as the other features. |
| Journey editor and survey | Page Kịch bản (reorder, remove, conditions). Survey questions and the response page. |
| "Client manages" switches | Per client, the agency decides whether the brand edits its own prizes, look and journey, or the agency does it all (brand gets a read-only view). |
| Prize library (Kho giải thưởng) | A per-brand library. Assigning a prize to a campaign holds a share, and the unused share returns when the campaign ends. A stock log is kept. Agency edits it, or the brand edits it if the agency allows. |
| Prizes | Name, image, stock, weight, "no prize" slices. Lucky time slots and "every N-th play" prizes. |
| Rewards | Winners and their details, redeemed status, Excel export |
| Ads | Banner per screen, timed ad, product catalogue with store links. House ads fill the slots of brands without the premium package. Affiliate-link override by owner or agency, visible but locked to the brand, with the stale-link check. |
| Analytics (Thống kê) | Plays by hour and day, redemption rate, leads by phone, referrers, store-button clicks (own vs affiliate), prize payoff, compare clients for the agency. Test plays by logged-in admins are ignored. |
5.3 Licenses (in the MVP, because without them we can't stop a customer who doesn't pay)
| Item | Notes |
|---|---|
| Agency license (set by the owner): window, expiry mode, max clients, max campaigns | |
| Client license (set by the agency): window, expiry mode, max campaigns | New clients start with 1 campaign |
| Expiry mode per customer: lock everything, admin read-only, lock players only | |
| Warning banner in the last 7 days | |
| Play quota with grace period | How we sell "up to N plays" |
| Grants, permanent or time-limited, and the packages Cơ bản, Nâng cao and Premium quảng cáo; feature switches per brand | A grant can run for a date range ("premium ads for Nov and Dec"), and each feature in it can have its own dates. Analytics stays permanent only. |
| The owner is never locked out. The agency can always step into an expired client. | |
| Enforced on the server, so it can't be bypassed from the browser |
5.4 What is not in phase 1
Partner agencies, custom "powered by", roles below full admin, anti-cheat, live preview of a custom journey, real-brand demo copies. These are phase 2.
Packages: Cơ bản (including lucky times and "every N-th play"), Nâng cao (survey, video ad, mystery bag, journey editor) and Premium quảng cáo. The contents are still placeholders.
5.5 What must be done before we call it MVP
| # | Item | Why it blocks |
|---|---|---|
| 1 | Player data lockdown, second step | Today winners' names, phones and branches can technically be read by anyone with technical skills. The first step is built. The second step is built later and only after the first has been live on that site for at least a day. We can't take real players' data until it is done. |
| 2 | Games as grants | The one genuinely new build in phase 1. Everything else here exists. The owner and agency need a way to allow or deny each game per level, enforced on the server like the other grants. |
| 3 | Real packages and prices | Package contents are placeholders. |
| 4 | Staging site and release routine | Deploys are manual today. Automatic deploy from the main branch to staging is planned. |
| 5 | A full real-phone run, on all three games | A real prize, a real winner and a redemption at a counter, with several campaigns, a brand login, ads on, and the survey and journey editor switched on for one brand. |
| 6 | Load check on staging | A few hundred real plays before launch day. |
| 7 | Vietnamese copy sign-off | A few new strings were never approved by you. |
| 8 | Decisions in section 9 | Mostly the open rulings from the build, such as prize library and midnight end behaviour. |
Order of work: 1 first, because the prize library's end-of-campaign count must stay readable after the lockdown, so they must be tested together. Do 2 early too, since the other grants and the packages depend on how it is shaped.
5.6 Phase 1 exit test
- A brand is set up from nothing, following the checklist in 4.2, in under a day.
- The brand runs at least two campaigns, one live and one scheduled, with prizes from one library.
- Players win real prizes and a winner redeems at a counter.
- The brand reads its analytics and finds the numbers believable.
- A technical person cannot read players' details from outside.
- We end a license on its end date and the game closes by itself.
- For one brand we grant a game and the Nâng cao package for two months, then confirm both switch off by themselves when the dates pass.
- A brand set to "agency manages" sees a read-only view, and the same brand switched to "client manages" can edit.
6. Phase 2: scale
Exit test: the first partner agency is live and sells to its own brands without us touching their setup.
| Item | Why |
|---|---|
| Partner agencies: we are owner only, they resell | Bigger channel. Agency license, client limit, own staff. |
| Custom or hidden "powered by" per agency | Negotiated deals |
| Roles below full admin (viewer, staff) | Today every brand login is a full admin |
| Anti-cheat: spoof detection, harder "one play per person" | Today the limit is per browser |
| Live preview in the journey editor | |
| "Replace anyway" for unreadable saved templates | |
| Real-brand demo copies | For prospects, instead of the generic sample brand |
| Billing and self-service sign-up | Not planned. Full SaaS stays possible later. |
8. What not to promise in phase 1
| Don't promise | Why |
|---|---|
| "Player data is compliant (for example with Decree 13)" | Only after the data lockdown is live on that customer's site. Even then, check with the dev team. |
| "One play per person" | It is per browser |
| "Your own powered-by logo" | Phase 2 |
| "Different staff roles" | Phase 2 |
| "Partner agencies can resell now" | Phase 2 |
| "Preview of a custom journey in the editor" | Phase 2. Test with the full-screen preview or a real phone. |
| "Prices and package contents" | Placeholders until you decide them |
| "Analytics covers everything" | It covers plays, redemptions, leads, referrers and store clicks. It is not a full BI tool. |
9. Risks
| Risk | What to do |
|---|---|
| Phase 1 is large (accepted) | Run the exit test early and often, not once at the end. If time runs short, cut in this order: template import, then the Nâng cao package (survey, video, journey editor), then Premium ads. Brands can launch without them. Don't cut the lockdown, licenses or the prize library. |
| Games as grants is new work and touches the rules | Build it first among the new items, test it with the license rules tests, and use the same two-level pattern as the existing grants |
| Many switches interact (license, grants, client-manages, expiry mode) | Keep one test matrix of "who can do what in each state" and run it before every release |
| Customers start before the data lockdown is live | Make the lockdown a hard gate in the launch checklist |
| Packages and prices stay placeholders | Decide them before the first contract |
| Prize library settling is wrong at campaign end | Test ended, archived and manually ended campaigns, and the midnight end-date case |
| Heavy traffic on launch day | Test on staging first |
| One person doing setup, demo, release and support | Keep the setup checklist short and use the demo environment to practise |
10. Decisions for you
- Direct sales only in phase 1 (we are owner and agency), as drawn in section 3? Or a partner agency is ready now?
- Ads in phase 1 means brand ads and house ads. Do affiliate links ship too? Suggested: yes, since they are what makes the store links earn.
- Analytics is permanent-grant only. Is that OK for phase 1?
- Packages and prices. What is in Cơ bản, Nâng cao and Premium quảng cáo? And does the mystery bag sit in Nâng cao, or is it sold on its own?
- Video before the game was not in your list. I put it in phase 1 with Nâng cao because it belongs with survey and the journey editor. Confirm.
- Games as grants: is it enough to allow or deny per game type, or do you also want limits, such as "one game at a time per brand"?
- Midnight end-date behaviour. A campaign that ends at midnight replaces a game in progress with the closed screen. Accept, or let the player in progress finish?
- Prize library rulings the build made for you: converting to "no prize" keeps remaining stock as the cap, and settling counts winners of merged prizes. Accept?
- Who may edit the prize library? Suggested: the agency by default, with a per-brand switch to let the brand do it.
- When do you want the demo environment in front of prospects? It exists now and could be used before the MVP launch.