Product definition and locked scope for the token launcher + house games platform (Dice live in pad; American Blackjack next). Brand is FLYWHEEL.GAMES; $SUITED is the pairing / ecosystem token, not the product brand. Domain flywheel.games is owned.
Companion design refs (workspace assets / chat attachments):
- Coming Soon landing (pre-launch waitlist) — primary first ship surface
- Earlier FLYWHEEL.GAMES marketing / how-it-works comps (style inspiration only)
- SUITED-style launcher form mock (launch UX inspiration for post–Coming Soon)
One-paragraph product
Anyone can launch a meme token on Robinhood Chain via Flywheel. Every token is paired with $SUITED. At launch the creator picks exactly one registered game; a fixed 50% of supply goes to that game’s house vault (not choosable); the rest (50%) seeds a Model C $TOKEN / $SUITED V4 ask book (early depth bands + deep α≈2 tail). One token → one game (no multi-game split). Players buy the token from the pool to play that game. Games without a related pad token show Practice Mode Only. Pad v1 ships Dice first; American Blackjack remains in the registry for launches. Creators earn $USDG yield from permanently staked $SUITED LP fees (not liquid $SUITED) via a transferable Flywheel Creator NFT (one per launch); the house is funded by launch allocation, $TOKEN-side LP fees, and 100% of public-table rake. Private rooms keep today’s SBJ rake split.
Locked architecture choices
| ID | Choice |
|---|---|
| A2 | Add launcher-pad/ beside existing blackjack/; do not relocate BJ yet |
| B2 + B4 | One game per token at launch (dropdown); fixed 50% house → that game’s vault, not an EOA |
| C1 | One vault per (game × token); many tokens may fund the same game over time |
| D1 | Brand FLYWHEEL.GAMES; $SUITED is pair asset only |
| Tokens in play | Pad-launched only (auto-enabled). Arbitrary external tokens later |
| Existing SBJ | Freeze MockUSDG / USDG vault path; rebuild for multi-token C1 |
| Deploy | Ship launcher + BJ together when ready; cut over live SBJ then |
| Poker / Suited.club | Out of v1; coordinate later with Suited devs |
| Model C LP | 6 early FDV/SUITED-depth asks + deep tail → max tick (~50% supply) |
| Creator LP fees | $SUITED → shared StakeVault (keyed by token) → permanent stake; $USDG claim rights = holder of that launch’s Flywheel Creator NFT |
| Creator NFT | Transferable ERC-721, one per launch, minted to launcher at launch; no mint fee; no royalties; unclaimed $USDG follows the NFT |
In scope for v1
- Coming Soon page on
flywheel.games(exact visual match to the Coming Soon reference; waitlist / notify; promote while building). - Token launcher (after Coming Soon): name, symbol, supply, description; dropdown: pick one registered game; fixed 50% house to that game’s vault (not choosable); seed
$TOKEN/$SUITEDpool. - Immutable on-chain game registry + app registry (
src/lib/games.ts) — fixed set of games / vault factories; lobby + launch dropdown read the app list; deploy registers the samegameIds on-chain. - Dice (pad) + American Blackjack (rebuild): each accepts pad-launched tokens that allocated to that game; no related token → Practice Mode Only; C1 vault per token; public rake → house; private rooms as current SBJ policy.
- Fee split
- LP:
$SUITED→ StakeVault → SuitedStaking (one-way);$TOKEN→ house - NFT holder claims
$USDGstaking rewards only (no principal); claim tx must be from the current owner - Public tables: 100% rake → house
- Private rooms: unchanged (host / platform split as SBJ today)
- Flywheel Creator NFT — ERC-721 per launch; on-chain SVG
tokenURIwith token identity + live Total Staked / Total Claimed; UI on token detail + gallery.
Out of scope for v1
- Bonding-curve / full Pons-clone graduation (may come later)
- Non–pad-launched tokens as play currency
- Roulette, slots, craps, baccarat (registry may reserve slots; no playable v1)
- Geoblocking (defer; product framing is meme tokens, not USDG)
- Integrating Suited NLHE as a Flywheel game house
- Moving
blackjack/underlauncher-pad/games/(revisit after co-deploy) - Creator withdrawing or redirecting staked
$SUITEDprincipal - Creator NFT royalties, mint fees, or secondary-market fee skims
Domain model (commitments)
- Game — immutable registry entry (id, name, vault factory / house path); also listed in the app registry for lobby + launch UI.
- Launch — creator, token address, supply, single game + fixed 50% house, pool address, timestamp.
- HouseVault(game, token) — holds launch allocation +
$TOKENLP fees + public rake; pays wins; settler-controlled like today’s Suited/SBJ vault model. - Pool —
$TOKEN↔$SUITEDV4; Model C trenches; fee sides routed as above. - StakeVault — single contract; keyed by launched token address; tracks staked
$SUITEDper token; stakes into SuitedStaking; splits$USDGrewards pro-rata by token stake. Claim payee / permission =FlywheelCreator.ownerOf(tokenIdOf[token]). - FlywheelCreator — ERC-721 collection; one NFT per pad launch; maps launch token ↔ tokenId;
tokenURIis on-chain SVG (name/ticker + live staked / claimed from StakeVault). Optional off-chain art URI settable by holder. - Creator (NFT holder) — current owner of that launch’s Creator NFT; earns
$USDGonly; does not take public table rake; does not receive liquid$SUITEDfees. Transfer moves claim rights and unclaimed balance. - Player — buys
$TOKENfrom pool; deposits into that token’s BJ vault; plays.
Model C launch book (locked)
| Stage | FDV band (at 10k SUITED = $1) | SUITED to clear | TOKEN (approx) |
|---|---|---|---|
| Early 1 | $10k → $50k | 1M | ~4.47M |
| Early 2 | $50k → $100k | 1M | ~1.41M |
| Early 3 | $100k → $1M | 8M | ~2.53M |
| Early 4 | $1M → $2M | 5M | ~0.35M |
| Early 5 | $2M → $4M | 10M | ~0.35M |
| Early 6 | $4M → $8M | 10M | ~0.18M |
| Deep tail | $8M → ∞ (max tick) | α=2 deep book | ~490.7M residual |
Open: 1 SUITED = 10 TOKEN (P = 0.1). Bid: 10k $SUITED thin floor from ~$0 → open (min usable tick → just under open); always a bid, very little depth per tick. House: exactly 50% of supply (fixed; not choosable).
Balanced house allocation
| Rule | Value (current pad) |
|---|---|
| Games per token | exactly one (AllocationLib + launch dropdown) |
| Total to house | exactly 50% (HOUSE_BPS) to that game |
| Remainder | 50% Model C LP |
| Choosable? | No — protocol + UI fixed at 50%; launch form shows read-only |
Flow (launch → play → creator yield)
- Creator launches via Flywheel (paired with
$SUITED), picks one game (Dice / Blackjack / …); house is fixed 50% to that game. - Factory mints token; FlywheelCreator.mint (1 NFT → launcher); sends house % to HouseVault(game, token); remainder → FeeSplitter Model C positions; StakeVault.register(token) (NFT must exist).
- Players buy
$TOKENfrom the pool to play that game. Games with no related token stay Practice Mode Only. FeeSplitter.collect():$TOKENfees → houses;$SUITEDfees → StakeVault.creditFees(token) → stake into SuitedStaking (one-way).- NFT holder claims
$USDGfrom StakeVault for that token; principal$SUITEDstays locked / relocked in staking. Unclaimed follows NFT transfers.
Flywheel Creator NFT (locked)
| Rule | Value |
|---|---|
| Standard | ERC-721, transferable |
| Supply | Exactly one NFT per pad launch |
| Mint | At launch, to msg.sender (launcher); no mint fee |
| Royalties | None (no EIP-2981 / marketplace skim) |
| Claim rights | Only current ownerOf may call StakeVault.claim(token) |
Unclaimed $USDG | Accrues to the token bucket; paid to whoever holds the NFT when claiming |
| Art | On-chain SVG tokenURI (ticker/name + live Total Staked / Total Claimed); holder may set an optional image URI for metadata |
| Surfaces | Token detail (claim + NFT ref) + /gallery of all Creator NFTs |
Repo / delivery sequence
- Brief (this doc) — updated for Model C + StakeVault + Creator NFT.
- Coming Soon under
launcher-pad/— pixel-faithful to reference. - Launcher contracts + UI — Model C, StakeVault, FlywheelCreator NFT, SuitedStaking + MockUSDG on local; fee routing + gallery as above.
- BJ rebuild — freeze USDG path; C1 multi-token vaults; pad-token allowlist.
- Co-deploy launcher + BJ; wire mainnet SuitedStaking / USDG when ready.
Open questions (follow-up)
- Exact public rake rate for meme-token BJ / Dice.
- Side bets in multi-token BJ.
- Mainnet: use live SuitedStaking (0x1071…18dC) vs Flywheel-owned instance.
- StakeVault lock tier (default max / 30d) and permissionless relock cadence.
Whether creator can allocate to multiple games→ locked: one game per token.
Design note for Coming Soon
Build the landing exactly from the Coming Soon reference image.
Non-goals / framing
- Do not market as a USDG casino; tokens are meme / game fuel.
- Geoblocking later if needed.
- Minimum centralization: immutable registry after deploy; no admin re-pointing of house destinations for a given launch.