Core States (summarized)
- OPEN – Created, no opponent yet.
- PENDING OUTCOME – Two players locked in, waiting for outcome.
- FROZEN – Outcomes conflict, admin intervention needed.
- FINALIZED (Tie) – Tie, no rep change.
- FINALIZED & CLOSED – Winner/loser agreed, transfer + fee confirmed, rep awarded.
2. Enhancements to the flow (what’s “missing”)
These are things you’ll almost certainly want once you start building it.
A. Extra Statement States / Timeouts
- DRAFT (optional)
- User starts a statement but doesn’t submit yet.
- Good for more complex Statements or mobile users.
- EXPIRED (no opponent joined in time)
- If no one clicks “Agree to Statement” before the outcome date (or some time limit), set
Status = EXPIREDand remove from Open list.
- If no one clicks “Agree to Statement” before the outcome date (or some time limit), set
- AWAITING OUTCOME SUBMISSION
- After outcome date, system nags both users to submit outcome.
- Add timeouts:
- If one submits, the other doesn’t → after X days, auto-mark as forfeit or send to FROZEN for admin.
- AWAITING TRANSFER
- After winner/loser are agreed:
- Status =
AWAITING TRANSFERuntil loser confirms transfer.
- Status =
- If loser never confirms → possible “non-payment” flag / admin escalation.
- After winner/loser are agreed:
- AWAITING WINNER CONFIRMATION
- Once loser clicks “I transferred,” move to
AWAITING RECEIPT CONFIRMATIONby winner.
- Once loser clicks “I transferred,” move to
- AWAITING SITE FEE / ADMIN CONFIRMATION
- As you already described; formally model this as distinct states so the UI can show progress steps.
- Statement Maker must accept each users (application to the statement)
B. Player Reputation System – more detail
Right now, you only give rep points to the losing player after they pay up. That’s a cool twist: rewarding honorable losers.
You might want:
- Separate stats per user:
- Total Statements entered
- Wins / Losses / Ties
- Total amount risked
- Total amount paid in losses
- Number of disputes / FROZEN cases involving them
- Reputation score formula (examples):
- Base points per loss paid (scaled by risk amount)
- Small bonus if they self-report “I lost”
- Penalty or flag for frozen disputes where admin rules against them
- Badges or tiers:
- “Honorable Loser (Bronze/Silver/Gold)”
- “Never Dodges a Loss”
- “High Stakes Player”
This gives the platform a “social proof” vibe, not just gambling.
C. Admin Tools / Flows You’ll Need
- Admin dashboard for Statements
- Filters for:
OPEN,PENDING OUTCOME,FROZEN,AWAITING FEE CONFIRM,FINALIZED,EXPIRED
- Ability to:
- Manually set winner/loser
- Override outcomes
- Mark transfers/fees as complete
- Add internal notes / reasons
- Filters for:
- Evidence & Disputes for FROZEN Statements
- Allow each user to:
- Upload screenshots / links
- Type their side of the story
- Admin view showing:
- Original Statement details (including “Where to find result”)
- Both users’ claimed outcomes
- History of actions (timestamps)
- Allow each user to:
- Audit log
- Every action logged: who clicked what, when.
- Needed if you ever have real money disputes or need to debug.
D. UX / Product Enhancements
- Clear “Statement Profile” page
- Show:
- Statement text & all variables
- Status + step progress bar (e.g., 1/6 Created → 2/6 Awaiting Outcome → …)
- Both players’ avatars / usernames
- Timeline of events (created, agreed, outcome submitted, etc.)
- Show:
- My Dashboard
- Tabs:
- My Open Statements (I created, awaiting opponent)
- Statements I Joined
- Pending Actions (where I owe an outcome, transfer, confirmation, etc.)
- Past Statements (filter by Won/Lost/Tied)
- Tabs:
- Notifications
- In-app + email:
- Someone agreed to your Statement
- Outcome date reached – “submit outcome”
- Opponent submitted outcome – “review & submit yours”
- You’re marked as loser – “please confirm transfer”
- Admin decision in a frozen dispute
- In-app + email:
- Filters & categories on Open Statements
- By:
- Risk currency (USD, points, whatever)
- Amount range
- Category (Sports, Personal Bet, Business, Fitness Challenge, etc.)
- Option for private / invite-only Statements (not visible to everyone).
- By:
E. Money Flow & Safety (concept level)
Right now, the model is:
- Money sent directly between users (off-platform).
- Site fee also paid manually, then confirmed by admin.
At the very least, you’ll want:
- UI text clearly saying you don’t escrow funds (unless you decide to).
- Flags when:
- Loser never confirms transfer
- Winner claims they didn’t receive transfer
- Potential enhancement (later):
- True escrow flow where funds go through the platform for auto-verified completion.
(More complex + legal/regulatory implications.)
- True escrow flow where funds go through the platform for auto-verified completion.
F. Anti-abuse & Social Layer
- Ability to block other users from making or joining your Statements.
- Report user / “Report this Statement” buttons.
- Rate your opponent afterwards (cooperative, toxic, etc.) – contributes to a “trust score.”
- Limit maximum risk per new user or per time period to avoid whales abusing or newbies getting wrecked.
3. Slightly Upgraded Overall Lifecycle
If we compress all enhancements into a clean lifecycle, you get:
- Create Statement → DRAFT → OPEN
- Opponent joins → PENDING OUTCOME
- Outcome date hits → AWAITING OUTCOME SUBMISSION
- Outcomes:
- Both agree winner/loser → AWAITING TRANSFER
- Both say tie → FINALIZED (Tie)
- Disagree or timeouts → FROZEN (Admin)
- Transfer + fee confirmations:
- Loser confirms transfer → AWAITING WINNER CONFIRM
- Winner confirms → AWAITING SITE FEE
- Winner pays fee → AWAITING ADMIN CONFIRMATION
- Admin confirms → FINALIZED (Closed), rep assigned to loser
- Side paths:
- No opponent in time → EXPIRED
- Admin can override at several points.
