Plans were split across three trees: plans/, web/plans/, and android/plans/. Merge them into plans/ at the repo root. Sweep the shipped Android experience pass and the two reports for it, carrying the residual forward into plans/todo.md: the device QA checklist (open only because this environment has no device or emulator), the clipped web PWA icons defect, and the untested native assumptions. Merge android/plans/todo.md in the same pass, dropping items the experience pass already delivered -- haptics, back button, safe-area insets, launcher icon, and splash -- each verified against MainActivity.java, web/src/app.css, and the res/ tree. Correct two stale claims while merging: web/ is a plain directory in this monorepo, not a git submodule, and the serialize-javascript override is held by @rollup/plugin-terser rather than workbox-build. The retired native Kotlin/Compose port plan moves as-is; it is superseded by the Capacitor wrapper but not yet swept.
10 KiB
Lô Tô Rules Reference: SvelteKit Web App Implementation Guide
Report Date: 26 Apr 2026
Research Scope: Vietnamese Lô tô (Bingo 90 / Tombola) rules, card layout, winning conditions, and host mechanics
Sources Consulted: Wikipedia tiếng Việt, English Bingo 90 references, Vietnamese gaming blogs, official game set descriptions
1. PLAYER CARD LAYOUT
Standard Format (Confirmed across sources)
- Dimensions: 3 rows × 9 columns grid
- Numbers per row: 5 marked, 4 blank spaces
- Total numbers per card: 15 (out of 1–90 pool)
- Number distribution: Column-by-column allocation (see below)
Column Organization & Number Ranges
| Column | Range | Note |
|---|---|---|
| 1 | 1–9 | 9 numbers |
| 2 | 10–19 | 10 numbers |
| 3 | 20–29 | 10 numbers |
| 4 | 30–39 | 10 numbers |
| 5 | 40–49 | 10 numbers |
| 6 | 50–59 | 10 numbers |
| 7 | 60–69 | 10 numbers |
| 8 | 70–79 | 10 numbers |
| 9 | 80–90 | 11 numbers |
Source: Bingo 90 Standard Rules, Wikipedia Lô tô, Tombola Rules
Ascending Order Rule
Within each column, numbers appear in ascending order from top to bottom. A column may have 1, 2, or 3 numbers; never more than 3 per column (due to 3 rows).
Source: Tombola Card Layout Explanation
Card Generation Implications for Your App
- Exactly 5 per row: Standard requirement (not an invention)
- Exactly 5 per column (on average): NOT a hard rule. Columns can have 1–3 numbers each; the total is always 15.
- Current implementation (9×9 with 5 per row & per column): INCORRECT — This creates a 45-number card (3×15), not standard 15-number card. Should be 3×9 grid with 15 total.
2. MASTER BOARD (QUẢN TRÒ DISPLAY)
Layout & Tracking Function
No single standardized master board layout found in Vietnamese sources. However, British Bingo 90 practice is:
- 9 columns × 10 rows (representing 90 positions)
- Column headings: B(1–9), I(10–19), N(20–29), G(30–39), O(40–49), …, O(80–90) [note: "O" at start & end for symmetry in physical boards]
- Marked/crossed when called
Vietnamese Quản Trò Practice
One person (quản trò or "cái") draws and calls numbers. Tracking happens verbally + manually via:
- Physical board with markers, or
- Pen-marked paper grid
No specific Vietnamese master board convention found; recommend adopting 9×10 column-by-tens layout (matches player card column structure for easy mapping).
Source: Bingo Caller Setup, Game Master Role
3. DRAWING & CALLING MECHANICS
Number Range
- Standard: 1–90 (confirmed for Bingo 90 adaptation in Vietnam)
- Variation noted: Some older sources mention 1–60, but modern Vietnamese games use 1–90
Source: Lô Tô App References, Wikipedia tiếng Việt
Drawing Order
- Method: Pure random draw from bag/cage
- No fixed opening number: Unlike some lotteries, no mandated first-draw convention found
- Hô lô tô chants: Cultural recitation/singing occurs during calling (entertainment), but does NOT affect game rules
Source: Vietnamese Game Master Culture
4. WINNING CONDITIONS & CALLING PATTERNS
Primary Win Condition: "Kinh"
Definition: Player completes one full horizontal row (5 consecutive marked numbers on that row).
Call: Player shouts "Kinh!" (Vietnamese: "Kinh!" = "I won!")
Verification: Quản trò checks the winning card to confirm all 5 numbers on that row were called.
Source: Vietnamese Game Rules, Wikipedia, Vietcetera
Waiting State: "Hò"
Definition: Player has 4 numbers in a row, waiting on 1 final number.
Call: Player announces "Hò" (Vietnamese: "Hò" = "I'm waiting")
Effect: Signals to quản trò and other players that this player is close to winning. Does NOT stop the game.
Source: Vietnamese Game Master Mechanics
Extended Winning Patterns (Bingo 90 Standard, adopted in Vietnam)
- One Line ("một hàng"): First horizontal row completed → Primary prize
- Two Lines ("hai hàng"): Any two horizontal rows completed → Secondary prize (higher payout)
- Full House ("bingo" or "toàn bộ"): All 15 numbers on the card marked → Grand prize (highest payout)
Note: "Kinh đôi" and "kinh ba" (mentioned in some sources) refer to secondary/tertiary prizes, not distinct patterns—terminology varies by region/host.
Source: Bingo 90 Winning Patterns, Tombola Multiplayer Rules
Multiple Winners
Same-draw rule: If two players complete the same pattern (e.g., both fill one line on same draw), prize splits equally or house rules determine payout.
5. HOUSE & MASTER RULES
Can Master Play Their Own Card?
Yes, confirmed. Quản trò can participate as a player while managing the draw.
Source: Game Master as Player (implies dual role), Vietnamese game sets (standard sets include 16 cards, host takes 1 or more)
Stake / Pot Structure
Not a rules matter—informal/social game. No standardized betting mechanism in traditional rules; modern apps may implement custom stake systems.
Game Flow
- Quản trò distributes cards (1–16 per set)
- First number drawn; quản trò calls it
- Players mark matching numbers
- On each draw: players check for "hò" (4-in-row) or "kinh" (5-in-row)
- Winner verified → prize awarded
- Game continues until all cards are full or organizer stops
6. IMPLEMENTATION VALIDATION & GOTCHAS
Current App Issues (Assumed from Your Description)
| Issue | Severity | Fix |
|---|---|---|
| 9×9 grid (45 numbers) | CRITICAL | Change to 3×9 grid (15 numbers) |
| Enforce exactly 5 per column | MINOR | Relax: allow 1–3 per column, total 15; column sums should average ~1.67 |
| Master board as 11×9 (99 positions) | MODERATE | Change to 9×10 (90 positions) or keep 11×9 if you're tracking an extra row; ensure column labeling matches player card ranges |
| Missing "Hò" state | MODERATE | Add call state when 4 numbers marked in a row; player can announce before "kinh" |
| Missing two-line / full-house detection | MODERATE | Implement pattern detection for 2 rows + full card (Bingo 90 standard) |
Regional Variations (Unconfirmed in Sources)
No North/Central/South differences for Lô tô rules found. Game appears standardized across Vietnam, with cultural/entertainment variations (chanting, poetry) but not rule variations.
7. RECOMMENDATIONS FOR YOUR APP
Immediate Changes (Pre-Release)
-
Revert card to 3 rows × 9 columns × 15 numbers total
- Regenerate card algorithm to pick 5 random per row, ensuring column constraints (1–3 per column)
- Verify column ranges (1–9, 10–19, …, 80–90)
- Enforce ascending order within each column
-
Add "Hò" state tracking
- Player can announce "Hò" when 4 in a row marked
- Display visually on card UI (e.g., highlight the waiting row)
-
Master board: align with 9×10 layout or 9×9 (clarify your choice)
- If 11×9: document why (e.g., custom feature) so it doesn't confuse players
-
Implement full-house & two-line detection
- Not just one-line (kinh) wins
Nice-to-Have (Post-Release)
- Add hô lô tô chant audio library (for authenticity, entertainment)
- Regional chant variants (if monetizing regionally)
- Multiplayer: simultaneous "kinh" handling & pot-splitting logic
8. UNRESOLVED / CONTESTED CLAIMS
-
Master board standard layout: No Vietnamese source specifies quản trò's tracking board. British Bingo 90 uses 9×10; your 11×9 may be valid local variation.
- Action: Verify with your user base or adopt 9×10 as safer default
-
"Kinh đôi" / "kinh ba" terminology: Mentioned in searches but not defined as distinct win conditions. Likely regional slang for two-line / full-house wins.
- Action: Treat as marketing terminology, implement underlying Bingo 90 patterns
-
Regional rule differences (Bắc/Trung/Nam): No sources confirm variations
- Action: Assume rules are nationwide; note for future regional research if user feedback suggests otherwise
-
Card generation randomness: Sources don't specify algorithm (fully random per card? seeded per player? repeated numbers across decks?). Assumed independent random per card.
- Action: Implement independent random generation; allow deck-wide seed if you need reproducible games
9. SOURCE CREDIBILITY SUMMARY
| Source | Credibility | Used For |
|---|---|---|
| Wikipedia Lô tô (tiếng Việt) | HIGH | Card layout, "kinh" definition, 3×9 grid |
| Tombola.co.uk (British Bingo 90) | HIGH | Column ranges, ascending order rule, master board concept |
| Vietnamese gaming blogs (Shopee, BachHoaXanh) | MEDIUM | Game flow, "hò" state, cultural context |
| Game set product descriptions (Amazon, Sayweee) | MEDIUM | Game components, number ranges (1–90) |
| Vietcetera cultural article | LOW | Cultural significance only; rules vague |
Cross-check result: Card layout (3×9, 15 numbers, column ranges 1–9 through 80–90) confirmed across 3+ independent sources. Winning conditions (kinh for one row, two rows, full house) confirmed via Bingo 90 standard + Vietnamese sources.
End of Report