Skip to content

TwoMore Platform Architecture — Features, Trust, Subscriptions

Status: Reference — Final Draft Date: 2026-04-04 Source of truth for: feature gating, subscription plans, trust system, revenue model Related: rating-system-summary.md · attendance-and-reviews.mdCode: subscription.entity.ts (plans, pricing, helpers)


Guiding Principle

Four independent systems, one unified experience:

SystemWhat It MeasuresHow EarnedWho Benefits
ELO Rating (실력)Skill levelPlaying matchesPlayer (matchmaking, leaderboard)
Trust Tier (신뢰)ReliabilityShowing up, manner tagsCommunity (social proof)
Individual Plan (개인 구독)Personal toolsPlayer paysThe player
Club Plan (클럽 구독)Club tools총무 paysAll club members

Never merge them. A free 새싹 with high ELO is valid. A paying 베테랑 with low ELO is valid. Mixing trust with payment creates pay-to-win perception.


1. The Core Loop — Always Free

Every player, from day one, with zero payment:

FeatureFreeNotes
Create account + onboardingYesELO seeded from self-assessment
Join clubs (unlimited)Yes
RSVP to sessionsYes
Play matches + submit scoresYes
ELO rating + tier badgeYesGender-adjusted display
Leaderboard (전체/남성/여성)Yes
Receive + give manner tagsYes
Trust tier progressionYesEarned, never paid
Basic stats (win rate, streak)Yes
Match history (recent)YesLast 3 months
Push notificationsYes
Discovery (find clubs/번개)Yes
Club dashboard + 소식Yes

Every 총무, with a free club:

FeatureFreeNotes
Create 1 club (max 15 members)Yes
Create sessions (unlimited)Yes
Generate match pairings (basic rotation)YesSocial + random presets
Score entry + ELO calculationYes
Basic attendance trackingYesIf enabled, no cooldown
Club leaderboardYes
Announcements (소식)Yes
Manual dues trackingYesMark paid/unpaid
Club challengesYes
Share invite linkYes

Why free: The core loop (join, RSVP, play, score, improve) must have zero friction. Paywalling any of these kills retention. TeamSnap, Spond, and Heja validate this.


2. Subscription Plans

2a. Individual Plans (Player Pays)

무료 (Free)플레이어 (Player)
Price₩0₩4,900/mo · ₩49,000/yr
Core loopYesYes
ELO + tier + trustYesYes
Basic statsYesYes
Match history3 monthsUnlimited
Head-to-head analysisYes
ELO trend graphYes
Form analysisYes
Shareable stat cardYes
Personal dues history (all clubs)Current clubAll clubs + aggregate
Spending summary (monthly/annual)Yes
Payment receipts exportYes
Upcoming dues remindersYes
Ad-freeNoYes
Discovery boostSlight

2b. Club Plans (총무 Pays, Club Benefits)

무료베이직프로클럽+
Price₩0₩8,900/mo₩18,900/mo₩37,900/mo
₩89,000/yr₩189,000/yr₩379,000/yr
Members1550UnlimitedUnlimited
Clubs managed113Unlimited
Session history3 monthsUnlimitedUnlimitedUnlimited
Match pairingsBasic (social, random)All presetsAll presetsAll + custom builder
Dues managementManualManual + remindersAuto (Toss Pay)Auto + auto-transfer
TournamentSingle bracketMulti + SwissFull (compass, group+KO)
Attendance trackingBasic (opt-in)FullFull + cooldownFull + GPS auto-checkin
Manner tag analyticsDashboardDashboard + trend alerts
Member reportsYesYes + notes
Session photos10/session3050Unlimited
Custom brandingColor + bannerFull branding
Inter-club eventsYes
Season managementYes
Export (Excel/PDF)YesYes
Priority supportCommunityEmail (48h)Email (24h)Chat (4h)
총무 gets Player featuresNoYesYesYes
ALL members get Player featuresNoNoYesYes
Ad-free for all membersNoNoYesYes

2c. How Plans Stack

Individual plan travels across all clubs. Club plan applies within that club only.

ScenarioPersonal AnalyticsClub ToolsAd-Free
Free player, Free clubBasicBasicNo
Free player, Basic clubBasicBasic+No
Free player, Pro clubFull (club-wide unlock)ProYes
Free player, Club+Full (club-wide unlock)Club+Yes
Player plan, Free clubFull (personal)BasicYes
Player plan, Basic clubFull (personal)Basic+Yes
Player plan, Pro clubFull (both)ProYes

The Pro club unlock is the key upsell: "프로로 업그레이드하면 모든 멤버가 개인 통계, 회비 내역, 광고 제거를 무료로 이용해요."

Player plan still valuable when:

  • Player is in Free/Basic clubs (no club-wide unlock)
  • Player wants features across ALL clubs (Pro unlock is per-club)
  • Player is not in any club yet (solo discovery mode)

2d. Upgrade Paths

Individual:    무료 ──→ 플레이어

                            ▼ (becomes 총무)
Club:       무료 ──→ 베이직 ──→ 프로 ──→ 클럽+
  • Mid-cycle upgrade: prorated billing (pay difference for remaining days)
  • Downgrade: takes effect at next billing cycle. Data preserved, access limited.
  • 총무 gets Player features: any club plan (Basic+) bundles Player features for the subscribing 총무
  • 30-day free trial: all paid plans include trial (TRIAL_DURATION_DAYS = 30)
  • Graceful degradation: on downgrade, data beyond free limits is hidden, not deleted

2e. Transactional Revenue

ServiceFeeAvailable From
Auto dues (Toss Pay / KakaoPay)3%Pro+ clubs
Pickup game entry fees3%Pro+ clubs
Tournament entry fees3%Pro+ clubs

Transaction fee is 3% of processed amount. Our cost is 2.2% (Toss Payments), margin is 0.8%.


3. Trust Tiers — Social Proof, Not Access Control

4 Tiers

TierBadgeHow EarnedSignals
🌱 새싹(none)Account createdNew user
🎾 활동Small5+ confirmed sessions"Actually plays"
신뢰Prominent20+ sessions, 90%+ att, 10+ tags"Reliable, well-liked"
🏅 베테랑Gold50+ sessions, 6+ months, 20+ tags"Club pillar"

What Tiers Do

  • Profile badge: visible to club members + discovery
  • Recruitment filter (optional): hosts CAN set minimum tier, default is "전체"
  • Discovery ranking: higher tiers appear slightly higher in search
  • 총무 dashboard: tier shown alongside attendance

What Tiers Do NOT Do

  • Block joining clubs
  • Block RSVPing (unless host explicitly filters)
  • Block any core feature
  • Interact with subscription in any way

Progression Algorithm

Hidden (VRChat model). Players see their tier and a vague hint ("신뢰 등급까지 조금 더!"), never exact numbers. Prevents gaming.

Inputs: sessions confirmed, attendance rate, manner tags, account age, mutual confirmations, 총무 endorsement. Negative signals: no-show strikes, member reports (both silent).

Demotion: silent. Privileges disappear, no notification. Triggered by 3+ no-shows or 3+ unique reports.


4. Manner Tags — Praise-Only

Post-session, players tap positive tags for others they played with:

TagKorean
🤝매너가 좋아요
시간 약속을 잘 지켜요
🎯실력이 정확해요
💬소통이 잘 돼요
🔥열정적이에요

No negative feedback UI. Bad behavior goes through: Report → 총무 → silent demotion. Praise is public, penalties are private (당근 model).

Display: 🤝 ×24 ⏰ ×18 🎯 ×15 — counts only, not who tagged.


5. Attendance — Club Opt-In

OFF by default. 총무 enables per club.

  • Not RSVPing = no impact. People have lives.
  • RSVPing then not showing = the problem this solves.

Cancellation tiers: 24h+ = free, 12-24h = 0.5 strike, <12h/no-show = 1.0 strike. Consequences (rolling 20 sessions): nudge → cooldown → 총무 flag. Never auto-expel. Visibility: private to self + 총무. Never shown to other members.


6. Recruitment Filters

Hosts can set optional minimums on sessions:

FilterOptions
ELO tierGold III+, Platinum+, etc.
Trust tier활동+, 신뢰+, etc.
Attendance rate80%+, 90%+, etc.
Gender남성, 여성, 전체

Shown on session card: 🎾 Gold+ · ⭐ 신뢰+ · 참석률 85%+ If player doesn't qualify: "참가 조건을 확인해 주세요" with specific unmet requirement.


7. Visibility Matrix

DataSelfMembers총무DiscoveryRecruitment
ELO + tierFull (±RD)Rating + tierFullTier onlyTier + rating
Korean divisionYesYesYesYes
Trust badgeYesYesYesYesYes
Manner tagsYesYesYesTop tagYes
Attendance rateYesNoYesNoAs filter*
No-show countYesNoYesNoNo
ReportsNoNoYesNoNo
SubscriptionOwn planClub badgeClub badge
Match historyYesShared matchesYesNoNo
Advanced statsIf unlocked**If Pro+ clubYesNoNo

*Filter only: host sets threshold, system filters silently. Host never sees actual %. **Unlocked via: Player plan, or membership in Pro+ club.


8. Profile Card

Self-View

[Avatar]  김민수
Gold II · 1,380 (±65)
신인부 ~ 오픈부 · NTRP 3.0-3.5

🏅 베테랑 멤버

🤝 ×30  ⏰ ×22  🎯 ×18  💬 ×12  🔥 ×8

참석률 94% · 연속 12회          ← private

Club Member View

[Avatar]  김민수
Gold II · 1,380
🏅 베테랑 멤버
🤝 ×30  ⏰ ×22  🎯 ×18

Discovery View

[Avatar]  김민수
Gold II
🏅 베테랑
🤝 ×30

Club Card

테니스 친목 모임  ⭐ Pro
32명 · 매주 토요일 · 서울 강남

9. User Journeys

Player Journey

Week 1 (Free, 새싹)
  Download → Onboarding (신인부 선택) → ELO 950 (Silver II)
  Join club → RSVP Saturday → Play 3 matches → ELO 978
  Get tags: 🤝×2 ⏰×1
  Profile: Silver II · 978 · (no badge)

Month 1 (Free, 활동)
  5+ sessions → 🎾 활동 badge appears
  ELO 1,045 · Tags: 🤝×8 ⏰×5 🎯×3
  Joins second club → cross-pool confidence +0.05
  Taps blurred head-to-head graph → Player plan upsell

Month 3 (Free player in Pro club)
  총무 upgraded to Pro → all members get Player features
  Full analytics, dues history, ad-free — without paying
  20+ sessions, 94% attendance, 15 tags → ⭐ 신뢰 badge
  ELO 1,230 (Gold III)

Month 6 (베테랑)
  50+ sessions, 6 months, 30+ tags → 🏅 베테랑
  Featured in discovery
  ELO 1,380 (Gold II, approaching 오픈부)

총무 Journey

Week 1 (Free)
  Create club → Invite 12 members → Saturday session
  Match pairings (social rotation) → Scores entered
  ELO leaderboard appears → "이거 편하다"

Month 1 (Free → Basic)
  Club grows to 14 → approaching 15 limit
  Upgrades to Basic (₩8,900/mo)
  → 50 members, all presets, dues reminders
  → Gets Player features (personal analytics, ad-free)

Month 3 (Basic → Pro)
  Club at 40 members → wants auto dues
  Upgrades to Pro (₩18,900/mo)
  → Auto dues (Toss Pay), tournament hosting
  → All members get Player features (club-wide unlock)
  → 총무 dashboard: attendance + manner analytics

Month 6 (Pro → Club+)
  Starts 2nd club (weekday group)
  Upgrades to Club+ (₩37,900/mo)
  → 3+ clubs, inter-club events, season management
  → GPS auto-checkin for outdoor courts

10. Structural Verification (Replaces Honor System)

ProblemStructural Solution
Skill sandbaggingELO K=40/48 convergence + strike system
No-showsAttendance tracking + RSVP cooldown + recruitment filters
Score disputesMutual confirmation (both teams verify)
Bad mannersReport → 총무 → silent tier demotion
Fake accountsTrust tiers (signal, not gate)
Club hoppingGlobal trust tier + manner tags follow across clubs
Pay-to-winTrust is earned (free). Subscription is tools (paid). Never mixed.

11. Revenue Model

StreamPricingTrigger
Player subscription₩4,900/moPersonal analytics, blurred graph upsell
Basic club₩8,900/moClub hits 15 members
Pro club₩18,900/moWants auto dues, member-wide unlock
Club+₩37,900/moMulti-club 총무
Transaction fee3% per paymentEvery auto-dues/entry processed

Revenue math example:

  • Pro club with 40 members paying ₩30,000/mo dues
  • Subscription: ₩18,900/mo
  • Transaction: 40 × ₩30,000 × 3% = ₩36,000/mo
  • Total per club: ₩54,900/mo

References

  • TeamSnap: org-pays model, free for single teams
  • Spond: free for all, 2.5% payment processing fees
  • Playtomic: dual model (club SaaS + player premium), trust separate from payment
  • Airbnb: Superhost badge (automated, silent loss)
  • 당근마켓: praise-only manner temperature
  • VRChat: hidden progression trust tiers
  • Stack Overflow: reputation unlocks privileges
  • Korean market: ₩4,900-9,900/mo sweet spot for individual subscriptions
  • subscription.entity.ts: canonical plan definitions

Markdown remains the source of truth. Run yarn docs:check before handoff.