Skip to content

Fantasy Word - Game Design Document v5.5 ​


Reconciliation note (2026-06-18): the scoring (§2), portfolio/economy (§3, §6) and tournament (§4) sections have been reconciled to the locked design. The canonical scoring & economy spec is docs/domain/scoring-system.md together with the ADRs (docs/adr/0001–0004) and the domain glossary in CONTEXT.md. Where this document disagrees with those, the ADRs win; superseded mechanics below are marked and point to their source.


Executive Summary ​

FantasyWord is a full-stack web application inspired by fantasy soccer, where players instantly purchase words with a virtual budget, accumulate points based on Wikipedia search volume, and compete with other players in private and global leagues.

Target Audience ​

The gameplay combines:

  • Tactical strategy (word selection + portfolio balancing)
  • Budget management (limited budget, time urgency)
  • Weekly competition (all players in 1 common tournament)
  • Tangible rewards (bonus points in main game, not cosmetics)
  • Elite prestige (Monthly Power Tournament, anti-AFK)

Audience: Casual-core players who love fantasy soccer, trading card games, and social competition. Age range: 18-45 years.

Glossary (Ubiquitous Language) ​

  • User: Person that visits the website
  • Account: Login credentials and personal profile information
  • Player: A user authenticated inside the system
  • Article: An entity representing a unique Wikipedia article (excluding disambiguation, redirect, stub as explained here)
    • Free-agent Article: An article which is not currently bound to a contract in a given league
  • Language: Language of the Wikipedia article
  • Contract: Time-bounded possession of an article by a Team
  • Team: An aggregate of multiple contracts owned by a single player in a given League
  • League: An aggregate of multiple Teams with one language.
    • Public/Private League: Leagues can be created by players and can be public or private. Players can join private leagues only by invitation from the league admin. Public leagues do not require invitation to be joined.
    • League Admin: The player that created the league
  • Credit: The game currency used by teams to buy and sell articles
  • Point: A value representing the performance of an article in a fixed time span, linked to pageviews (definition)

User Stories ​

User Onboarding ​

When a user visits the website and is not authenticated, they see the introduction page explaining the rules and a call to action for logging in.

User Login ​

When a user presses the login button, they can perform a login with a Google account. If authentication is successful, they are redirected to their personal dashboard containing their info. They are also automatically added to the Public League.

Player Can See Their Dashboard ​

When a player enters the dashboard page, they can see the leagues they have joined and are able to create or join new leagues.

A player can Logout ​

When a player presses the logout button, they are logged out of the system and redirected to the login page.

Player Can Create a League ​

When a player enters the league creation page, they can create a league by specifying:

  • Name of the League
  • Language of the League (dropdown menu, single choice)
  • Duration of the League (months/weeks from the time of creation)

If creation is successful, the player is notified and added to the league. They also receive a code and an invitation link to share with other players that want to join.

Player Can Join Private League from the Site ​

When entering the join league page, a player can enter a private league by submitting the invitation code. If the code is valid, the player joins the corresponding league and is redirected to the team creation page.

User Cannot Visit Pages Other Than Login and Onboarding If Not Authenticated ​

When a user tries to visit a page on the website while not authenticated, they are redirected to the login page. Exceptions are made for the onboarding and login pages.

Player Can Join Private League by Invitation Code ​

When a player visits the invitation link, they join the league and is redirected to the team creation page.

A Player Can Create a Team in a League They Have Joined ​

As soon as a player joins a league, the team creation page is shown. This page contains a form which asks for:

  • Team name (team names must be unique within a given league)

A submit button is shown below and, when pressed, directs to the team dashboard.

A Team Can Buy a Free-Agent Article in the League Market ​

When a team wants to buy a new article, they can search for articles they like in a search bar. While typing, articles with similar titles are suggested. When the search button is pressed (or Enter is pressed), all matching results are displayed.

Results are shown in a table containing the following columns:

  • Article's title
  • Article's performance indicator
  • Article's price indicator
  • Article's owner (if not free-agent)
  • Article's contract expiration date (if not free-agent)
  • A "buy" button, which is present only if the article is free-agent. When pressed, a contract creation popup is shown.

A Team Can Sign a Contract for a Free-Agent Article ​

This operation is performed in a popup. This popup contains:

  • The article's title
  • An input field for inserting the contract's duration
  • The contract price, which is determined by:
    • The article's performance over the last month
    • The contract duration length
  • A button for signing the contract. When pressed, the system checks if the current team's balance is sufficient to buy the article. If so, the article joins the team; otherwise, an error is shown
  • A cancel button, which closes the popup

A Player Can Visit the Team Dashboard ​

The page shows three panels:

  • Team Performance Summary
    • Yesterday's points of the team
    • The team's standing in the league
    • The team's credits
  • Team's Articles (when you click on this, you are directed to the team management page)
    • The list of articles owned by your team, with:
      • Article's name
      • Yesterday's points
      • Current price
  • League Leaderboard, which is a table of all teams with:
    • Team's standing
    • Team's name
    • Team's cumulative points

A Player Can Choose the Team Formation ​

The main panel shows the graphical formation of the team as a 4-3-3 with a goalkeeper. Links are shown between close players in formation (see FUT 2020 as reference).

The line between articles A and B carries a chemistry level.

Superseded, canonical: docs/scoring-system.md §4, CONTEXT.md "Chemistry Level", ADR 0001. Chemistry contributes additive flat points, not a percentage multiplier: Excellent (mutual link) +1.5, Good (one-way link) +0.5, Weak and Empty 0, summed to a team total. The percentage multipliers below (+20%/+10%/+5%) are historical and retained only for context; the color mapping (green/yellow/orange/gray) still drives the UI.

  • Excellent (green): +20%
  • Good (yellow): +10%
  • Weak (orange): +5%
  • Empty (gray): 0%

A user can switch color themes ​

When a user press es the theme switch button, the website switches between light and dark themes.


2. Scoring System ​

2.1 Base Scoring ​

Superseded, canonical: ADR 0001/0002 + docs/domain/scoring-system.md. Base points are computed from Normalized Views (raw pageviews × the per-language Language Scale Factor; en.wp = 1.0) via a continuous geometric (log) model, max(0, log₂(views / 2000)) (decimal-valued, crosses zero at 2,000 views; the "+1 per doubling" rule is just the headline at the rungs), with a convex linear tail of +1 point per 50,000 views above a 150k kink, validated against real en.wp data. The 5k/20k three-tier model below is historical and retained only for context.

Each article earns points based on its Wikipedia pageviews using a tiered model to prevent viral articles from completely dominating and allow synergy to matter strategically.

TIERED_BASE_POINTS = Tier1 + Tier2 + Tier3

Where:
├─ Tier 1 (0–5,000 views): 1 point per 1,000 views (100% rate)
├─ Tier 2 (5,000–20,000 views): 0.5 points per 1,000 views (50% rate)
└─ Tier 3 (>20,000 views): 0.1 points per 1,000 views (10% rate)

EXAMPLES:
├─ 2,000 views = 2.0 points (all Tier 1)
├─ 10,000 views = 5.0 + (5,000×0.5/1,000) = 7.5 points
├─ 30,000 views = 5.0 + (15,000×0.5/1,000) + (10,000×0.1/1,000) = 13.5 points
└─ 100,000 views = 5.0 + (15,000×0.5/1,000) + (80,000×0.1/1,000) = 20.5 points

Rationale:

  • Viral articles still dominate but with diminishing returns (100k views ≠ 50× more points)
  • Mid/low traffic becomes viable when paired with excellent synergy
  • Chemistry multiplier actually matters: A team with 3 synergized mid-traffic articles can now compete with 1 viral article without synergy
  • Encourages tactical diversity: Building thematic clusters is now more valuable than hoarding viral pages

2.2 Synergy Bonus (Additive Chemistry) ​

Superseded, canonical: CONTEXT.md (Chemistry Link / Chemistry Level) and the "Choose Team Formation" user story. Chemistry is not computed over every owned pair. It is an additive flat-point bonus evaluated only between schema-adjacent formation positions (FUT-style), graded by the four-step Chemistry Level (Excellent / Good / Weak / Empty). The all-pairs Mutual/One-Way model below is historical.

Articles in your portfolio earn additive bonuses based on direct Wikipedia links to other articles in the same team. Only articles with at least one link earn synergy; isolated articles get zero bonus.

Link Classification:

  • Mutual Link (Green in UI): Article A → B AND B → A (worth 0.75 points)
  • One-Way Link (Yellow in UI): Article A → B XOR B → A (worth 0.25 points)
  • No Link (Red in UI): No connection between articles (0 points bonus)

Formula (Per Article):

SYNERGY_BONUS = (Mutual_Links × 0.75) + (One_Way_Links × 0.25)
Cap: Maximum 3.0 points per article

ARTICLE_FINAL_SCORE = BASE_POINTS + SYNERGY_BONUS

Example (5-Article Team):

Bitcoin (100,000 views):
├─ Base: 20.5 points
├─ Links: 4 mutual + 1 one-way = (4×0.75) + (1×0.25) = 3.25 (capped at 3.0)
└─ Final: 20.5 + 3.0 = 23.5 points

Blockchain (12,000 views):
├─ Base: 5.5 points
├─ Links: 3 mutual + 0 one-way = 3×0.75 = 2.25
└─ Final: 5.5 + 2.25 = 7.75 points

DeFi (8,000 views, low traffic):
├─ Base: 4.5 points
├─ Links: 2 mutual + 2 one-way = (2×0.75) + (2×0.25) = 1.75
└─ Final: 4.5 + 1.75 = 6.25 points

Crypto (2,000 views, very low):
├─ Base: 2.0 points
├─ Links: 1 mutual + 1 one-way = (1×0.75) + (1×0.25) = 1.0
└─ Final: 2.0 + 1.0 = 3.0 points

Mining (1,500 views, isolated):
├─ Base: 1.5 points
├─ Links: 0
└─ Final: 1.5 + 0 = 1.5 points

TEAM_DAILY_TOTAL = 23.5 + 7.75 + 6.25 + 3.0 + 1.5 = 42.0 points

Why This Works:

  • ✅ Only linked articles get boosted (isolated articles get 0 synergy)
  • ✅ Small additive bonus scales linearly (clear, predictable math)
  • ✅ Low-traffic articles benefit most: A 2k-view article with 2 mutual links gets +1.5 bonus (75% gain), while a 100k-view article gets +3.0 bonus (15% gain)
  • ✅ Encourages mutual links over one-way: Mutual links are 3× more valuable
  • ✅ Both centric and sparse formations viable: Centric hubs get high mutual count; sparse meshes get distributed mutuals across nodes
  • ✅ Chemistry cap (3.0) prevents any single article from being broken by synergy alone

2.3 Weekly Event Bonus ​

Frequency: 1 randomized event per week (Monday 09:00 UTC).

Each week, one of the following events is triggered (calibrated to real Wikipedia distributions):

Event Type 1: Momentum Surge ​

  • Tier A (Hot Movers): Articles with growth > 150% in the past week: +4 points
  • Tier B (Top Performers): Top 50 articles globally by views: +3 points
  • Rationale: Unifies trending + volatility into one event. Tier A rewards emerging hot articles (mid-tier gaining traction), Tier B rewards established powerhouses (top 50 stable). A mid-tier article spiking +150% gets +4; a top-50 stable article gets +3. Momentum slightly outweighed, but both matter strategically.

Event Type 2: Low Views Protection ​

  • Articles with < 500 views/day: +1 point (prevents extinction of niche words)
  • Rationale: Niche articles average 0.2-0.5 base points. +1 is a 2-5× multiplier, making them briefly competitive without being overpowered. Allows low-traffic strategies a spiky but not dominant week.

Event Type 3: Double Synergy ​

  • Synergy bonus is doubled this week (max cap increases to 6.0 points per article)
  • Rationale: For a team with avg. 1.5 synergy bonus per article, doubling pushes them +1.5 × 10 articles = +15 points total. Significant but not game-breaking given typical team scoring (40-250 points/day).

Event Type 4: Cluster Bonus ​

  • If 3+ articles in your portfolio have semantic similarity (Jaccard Index > 0.40): +5 bonus points for the cluster
  • Rationale: Cluster bonuses reward thematic coherence. +5 per cluster encourages players to build around 2-3 tight groups, adding 5-15 points/day for well-constructed teams.

Event Generation ​

Seed = hash(user_id + week_number) mod 4
Event = available_events[seed]

This ensures variety and prevents players from gaming a single event type.

Impact Summary ​

  • Momentum Surge (Tier A: +4, Tier B: +3): Rewards both emerging trends (better) and established dominance (good). Differentiated from pure trending.
  • Low Views Protection (+1): Makes niche articles briefly viable as a risky strategy
  • Double Synergy (+15 max): Synergy-heavy teams have one week of dominance per cycle
  • Cluster Bonus (+5): Thematic teams consistently rewarded with small bonuses

3. Portfolio Management ​

3.1 Portfolio Constraints ​

  • Maximum active contracts per team: 22 (canonical: Lineup Rules, a starting eleven plus a bench of the same size). This §3.1's "10" and the "11, one per formation position" that replaced it are both superseded; 11 is now the number of contracts that can be placed, not the number a team may hold
  • Budget: Players start with 1,000 credits
  • Duration: locked tiers SHORT = 3 days, MEDIUM = 7 days, LONG = 14 days (ADR 0005); the earlier "1 week–24 months" range is superseded
  • Economy (canonical: ADR 0003, pricing formula superseded by ADR 0005): 15 credits/day base stipend · 8% transaction fee on sales · +10% renewal premium per consecutive renewal · 3-day minimum hold · soft wealth ceiling (pending re-simulation under the new pricing formula)
  • Price formula (see §6.1 / ADR 0005 for the canonical, convex Normalized-Views form: this §3.1 form and ADR 0003's earlier linear form are both superseded):
    CONTRACT_PRICE = Base_Performance_Score × Contract_Duration_Weeks / 4

3.2 Daily Scoring Calculation ​

Triggered: once per day at ~05:00 UTC, scoring the previous UTC day. (The 00:00-UTC target is superseded: the Wikimedia Pageview Complete daily dump for day D only publishes ~02:15–03:00 UTC on D+1. See ADR 0004.)

For each article in your portfolio:

  1. Read the previous day's pageviews from the per-article Analytics (AQS) API, one range request per contracted article (Pageview Complete dumps remain the scale-out fallback, see ADR 0004)
  2. Calculate Base Points (log-binned Normalized-Views model, §2.1 / ADR 0001-0002)
  3. Add Synergy Bonus (mutual + one-way links, capped at 3.0)
  4. Check if a weekly event applies → add event bonus
  5. Sum all articles for daily total
ARTICLE_SCORE = TIERED_BASE + SYNERGY_BONUS + EVENT_BONUS
DAILY_SCORE = Σ(all articles)
CUMULATIVE_SCORE = Previous_Total + Daily_Score

Update Frequency: standings are recomputed once per day, after the dump lands (~05:00 UTC); the leaderboard reflects the latest computed standings.


4. Tournament System (CORE MECHANIC) ​

4.1 Main Game Leaderboard ​

Concept: The ongoing competition where all players compete simultaneously.

Update Frequency: Every hour (real-time)

Main Leaderboard:
- Ranked by cumulative points across all articles
- Shows player's points, rank, and daily change
- Reflects all active contracts in the team

Scoring: Identical to daily scoring system (tiered base + synergy + events)


4.2 Weekly Tournament (Automatic, All Players) ​

Concept: Every Monday, all active players automatically enter a 1-week tournament (the public league naturally spans everyone; private leagues also get weekly standings). The Monday-snapshot model below is retained in the locked scope; scoring uses the canonical model (§2 corrections, ADR 0001/0002).

4.2.1 Timeline ​

MONDAY 09:00 UTC:
├─ New Weekly Tournament begins
├─ ALL players enter AUTOMATICALLY (no opt-in required)
├─ Portfolio snapshot taken from current main game team
├─ Scoring methodology identical to main game
│
TUESDAY-SUNDAY (6 days):
├─ Scoring continues daily
├─ Separate leaderboard updated hourly
├─ Player sees: "4th in Weekly Tournament! +25 points today"
│
SUNDAY 21:00 UTC:
├─ Tournament ends
├─ Final standings calculated
├─ Bonus points awarded to main game (one-time, based on ranking)
├─ Weekly badges distributed
│
MONDAY 09:00 UTC:
├─ New Weekly Tournament begins
└─ Cycle repeats

4.2.2 Portfolio Handling (Snapshot Model) ​

Key Principle: Tournament portfolio is linked to main game but separate.

SCENARIO:

Monday 09:00: Main Game = [Bitcoin, AI, Cloud]
              ↓ [SNAPSHOT TAKEN]
              Tournament = [Bitcoin, AI, Cloud]

Tuesday 14:00 (During tournament):
├─ Player SELLS Bitcoin from main game
│  ├─ Main Game: Bitcoin removed, credits received
│  └─ Tournament: Bitcoin continues to score (frozen at snapshot)
│
├─ Player BUYS Ethereum in main game
│  ├─ Main Game: Ethereum added immediately
│  └─ Tournament: Ethereum does NOT enter (locked to Monday snapshot)

Sunday 21:00:
├─ Tournament ends: Points calculated with original [Bitcoin, AI, Cloud]
├─ Main Game: Now contains [Ethereum, AI, Cloud, + others]
├─ Tournament points finalized
├─ Bonus points applied to main game (one-time lump sum)

Monday 09:00 (New Tournament):
├─ New snapshot taken: [Ethereum, AI, Cloud, + others]
└─ New tournament begins with updated portfolio

Rationale: This design prevents mid-week tactical manipulation while rewarding long-term, thoughtful team building.

4.2.3 Tournament Scoring ​

Identical to main game (tiered base + synergy + events):

PER ARTICLE, EACH DAY:
├─ Tiered Base Points (as per 2.1)
├─ + Synergy Bonus (as per 2.2)
└─ + Weekly Event Bonus

DAILY TOTAL = Σ(all articles)
TOURNAMENT TOTAL = 7-day cumulative sum

EXAMPLE - Day 1:
Bitcoin 23.5 + Blockchain 7.75 + DeFi 6.25 + Crypto 3.0 + Mining 1.5 = 42.0 points

TOURNAMENT TOTAL (7 days) = Daily_1 + Daily_2 + ... + Daily_7

4.2.4 Weekly Tournament Leaderboard ​

┌──────────────────────────────────────────────────────┐
│ 🏆 WEEKLY TOURNAMENT RANKING                         │
│ Week 1 / 2025-12-08 → 2025-12-15                     │
├──────────────────────────────────────────────────────┤
│                                                      │
│ Rank | Player       | Tot Points | Avg/Day | Tier   │
│ ─────┼──────────────┼────────────┼─────────┼────────┤
│ 1    | CryptoGod    | 294.0      | 42.0    | 🥇    │
│ 2    | WordHunter   | 276.8      | 39.5    | 🥈    │
│ 3    | BullishBot   | 245.2      | 35.0    | 🥉    │
│ 4    | YOU          | 225.6      | 32.2    | Top 10 │
│ 5    | Strategist   | 189.3      | 27.0    | Top 10 │
│ ...  | ...          | ...        | ...     | ...    │
│ 100  | TradeQueen   | 98.5       | 14.1    | Top 100│
│ 1000 | NoobTrader   | 42.3       | 6.0     | Rest   │
│                                                      │
│ You are: 4th (225.6 points)                         │
│ Tier: Top 10 → +84 bonus points (one-time)          │
│                                                      │
└──────────────────────────────────────────────────────┘

4.2.5 Weekly Tournament Rewards (Main Game Bonus) ​

Applied Sunday 21:00 UTC (when tournament ends):

BONUS POINTS AWARDED (one-time lump sum added to main game):

Top 1:         +126 bonus points
Top 10:        +84 bonus points
Top 50:        +42 bonus points
Top 100:       +21 bonus points
Top 500:       +7 bonus points
Rest:          +0 bonus points

PLUS: Weekly badges (cosmetic, non-playing value)

EXAMPLE:
├─ Week 1: Tournament runs Mon-Sun
├─ Sunday 21:00: Tournament ends, you finish 8th (Top 10)
├─ Reward: +84 bonus points added to your main game score immediately
├─ Badge: "Top 10 Finisher" displayed on profile
└─ You now have +84 more cumulative points in main game leaderboard

Rationale:

  • Immediate reward for tournament performance (psychological satisfaction)
  • Bonus added once to cumulative score (permanent advantage)
  • Clear, simple prize structure
  • Badges provide cosmetic prestige (social proof)

4.3 Monthly Power Tournament (Elite Prestige), DEFERRED (post-MVP) ​

Deferred: not in the locked scope. To be added only if time permits; retained below as a design sketch.

Concept: An invite-only, high-stakes tournament for top 100 players globally.

4.3.1 Eligibility ​

  • Must be Top 100 in main game leaderboard at month-end
  • Must have logged in at least 3 times in the past month (anti-AFK)
  • Automatic qualification; no application required

4.3.2 Format ​

MONTHLY POWER TOURNAMENT:

Duration: Entire month (auto-reset 1st of next month)

Selection: Top 100 players at month-end
├─ Re-ranked separately from main game
├─ Scoring identical to weekly/main game
├─ Updated daily, leaderboard shown in "Power" tab

Rewards (one-time lump sum at month-end):
├─ Top 1: +126 bonus points + Special badge
├─ Top 10: +84 bonus points
├─ Top 25: +42 bonus points
├─ Top 50: +21 bonus points
└─ Top 100: +7 bonus points + Prestige badge (cosmetic)

Rationale:

  • Prevents AFK farming of bonus points
  • Creates aspirational content (players want to reach Top 100)
  • Monthly cycle prevents permanent inequality
  • Qualification to Top 100 itself is the major advantage; bonus points same as weekly
  • Elite prestige comes from the badge and leaderboard position, not disproportionate rewards

5. Tactical Gameplay Elements ​

5.1 Formation Strategy ​

The synergy system supports two viable formation archetypes:

Centric Formation (Hub & Spoke):

  • One article (the "hub") links to many others
  • Hub accumulates multiple mutual links → high synergy bonus
  • Satellites around hub get moderate bonuses
  • Example: Bitcoin (hub) links to Blockchain, Crypto, DeFi, Mining
  • Optimal for exploiting one strong thematic anchor

Sparse Formation (Distributed Mesh):

  • Multiple articles all link to each other mutually
  • Each node gets synergy from several neighbors
  • More balanced, less dependent on one "star"
  • Example: Blockchain ↔ Crypto ↔ DeFi (all mutual pairs)
  • Optimal for finding tight semantic clusters

Good Centric beats Bad Sparse: A strong hub with 4 mutual links (3.0 bonus) outperforms a weak mesh with only one-way connections (0.25 per article).

Good Sparse beats Bad Centric: A balanced mesh with 6+ mutual pairs distributes synergy across the team and outperforms a weak hub.

Quality > Type: Both formations are equally viable: execution and article selection matter more than topology choice.

5.2 Dynamic Portfolio Management ​

Key strategic decisions:

  • Buy/Hold/Sell timing: When to exit an article before its views drop
  • Portfolio rebalancing: Rotating articles to capture different event types each week
  • Budget allocation: Whether to invest in one high-traffic article with poor synergy or multiple mid-traffic articles with excellent synergy
  • Link discovery: Research which articles link to each other (strategic advantage)

5.3 Competitive Layers ​

  1. Main Game: Long-term cumulative competition
  2. Weekly Tournament: Mid-term sprint (resets weekly)
  3. Monthly Power Tournament: Elite status (top 100 only)
  4. League Competition: Private league standings (same-language, curated groups)

6. Price Dynamics ​

6.1 Contract Pricing ​

Priced on the smoothed 30-day average of Normalized Views (Language Scale Factor applied; en.wp = 1.0). Canonical: ADR 0005 (supersedes ADR 0003's linear formula) / CONTEXT.md.

Superseded, kept for history. The linear formula and worked example below used a weeks-based multiplier and made a top-tier team affordable on day one; ADR 0005 replaces it with a convex-in-views, days-based formula and locks the SHORT/MEDIUM/LONG tiers at 3/7/14 days.

BASE_PRICE = (Normalized_Views_30Day_Avg / 1000) × Contract_Weeks

EXAMPLE (historical, superseded):
Article: Bitcoin
Views (30-day avg): 50,000 views/day
Contract Duration: 8 weeks

Base Price = (50,000 / 1000) × 8 = 50 × 8 = 400 credits

6.2 Dynamic Pricing (Optional - Future Enhancement) ​

As more players buy an article:

Demand Multiplier = 1.0 + (current_contracts / 100)

Final Price = Base Price × Demand Multiplier

This creates arbitrage opportunities and prevents hoarding.


7. UI/UX Milestones ​

Phase 1: MVP ​

  • Authentication (Google OAuth)
  • Dashboard + league/team creation
  • Search and buy articles
  • Basic daily scoring (tiered base + synergy)
  • Main game leaderboard

Phase 2: Tournaments ​

  • Weekly tournament logic
  • Tournament leaderboard
  • Reward distribution
  • Formation visualization (green/yellow/red link coloring)

Phase 3: Polish ​

  • Mobile responsiveness
  • Advanced analytics (trend charts, performance history)
  • Social features (trading, live chat)
  • Power Tournament

8. Content Strategy ​

8.1 On-Boarding Education ​

New players learn:

  1. "Your words earn points based on Wikipedia views (tiered scoring)"
  2. "Low-traffic words with strong links earn significant synergy bonuses"
  3. "Build themed portfolios for synergy bonuses, chemistry matters!"
  4. "Compete in weekly tournaments for extra rewards"
  5. "Buy strategically: viral pages are expensive but one high-traffic word can anchor a team"

Each Monday (with tournament start):

  • "Top 10 emerging articles this week"
  • "Best synergy clusters" (most mutual links)
  • "Most volatile trades" (biggest view swings)

9. Monetization (Optional) ​

  • Cosmetic badges: $0.99 each (not gameplay-affecting)
  • Premium league creation: $4.99/month for white-label leagues
  • Ad-free experience: $2.99/month

Primary value: Gameplay engagement, not P2W mechanics.


10. Summary of Changes ​

v5.5 (2026-06-18, reconciliation with locked design) ​

✅ Base scoring reconciled to the log-binned Normalized-Views model (ADR 0001/0002), superseding the 5k/20k three-tier model ✅ Chemistry reconciled to additive flat points on schema-adjacent positions (FUT-style), superseding all-pairs Mutual/One-Way synergy ✅ Contract cap corrected 10 → 11 (one per formation position) ✅ Economy parameters surfaced (stipend / fee / renewal premium / min-hold / wealth ceiling, ADR 0003) ✅ Daily scoring moved to ~05:00 UTC on D+1, sourced from the per-article Analytics (AQS) API (ADR 0004), superseding the 00:00-UTC framing ✅ Monthly Power Tournament marked deferred; weekly tournament retained

v5.4 (historical) ​

✅ Replaced linear base with tiered scoring (addresses viral article over-dominance) ✅ Simplified synergy to additive bonus (mutual + one-way links only) ✅ Per-article synergy cap at 3.0 points (balanced, predictable) ✅ Validated with real data: Tiered base + synergy formula tested against top 100 Wikipedia articles (Dec 27, 2025) ✅ Both formation types viable: Centric and sparse equally viable at high quality ✅ Chemistry multiplier actually matters: Low-traffic articles can reach competitive tiers with excellent synergy ✅ Top tier is balanced compromise: Best strategy is mixing high-traffic anchor + synergized mid-tier articles ✅ Removed redundant mechanics: Malus, Breakout bonus (already handled by tiered base) ✅ Unified event system: Merged Trending + Volatility into single Momentum Surge event (Tier A: +4 for hot movers, Tier B: +3 for top 50) ✅ Reduced event count: 4 events per week instead of 5 (cleaner cycle, better variety) ✅ Softened Low Views: +1 instead of +2 (2-5× multiplier instead of 4-10×, more balanced) ✅ Tournament bonuses as lump sums: Weekly and Power tournament rewards given as one-time bonuses (clear, simple prize structure) ✅ Balanced Power Tournament: Rewards match weekly scale; advantage comes from Top 100 qualification itself, not disproportionate point bonuses ✅ Removed cost reduction: No 1% contract discount (simplifies rewards)


11. Metrics & Success Criteria ​

  • Engagement: Avg. 3+ logins/week per active player
  • Retention: 40%+ week-over-week retention (standard for games)
  • Tournament participation: 80%+ of players compete in weekly tournament
  • Portfolio diversity: Avg. 6+ articles per team (targets max 10)
  • Trading volume: Avg. 2+ buy/sell actions per player/week
  • Synergy adoption: 70%+ of teams have 2+ articles with mutual links
  • Formation variety: Both centric and sparse formations equally represented in top 50 leaderboard

12. Game Balance Example (Real Data) ​

Using actual Wikipedia pageviews from Dec 27, 2025:

Team A: High-traffic, no chemistry

  • Roster: Top 11 articles by views (avg. 44.5 base points each)
  • Synergy: None (isolated articles)
  • Daily total: 489.81 points

Team B: Balanced mix, mixed chemistry

  • Roster: 3 high-traffic + 4 mid-tier + 4 low-tier articles
  • Synergy: High-traffic at 1.10×, mid at 1.30×, low at 1.45×
  • Daily total: 252.31 points (7% boost from synergy)

Team C: Low/mid-traffic, excellent chemistry

  • Roster: All mid-tier articles (avg. 15 base points) with mutual links
  • Synergy: All at 1.50× multiplier
  • Daily total: 193.61 points (16.6% boost from synergy)

Result: Team A dominates (+96% vs Team B, +153% vs Team C), BUT:

  • Team A's articles cost 3-10× more to acquire (high-traffic premium pricing)
  • Team B represents a realistic mid-tier meta (affordable + effective)
  • Team C shows that "perfect synergy, low traffic" is viable but requires a very different budget allocation

This confirms your meta design: Top tier is not "all viral" but "balanced compromise".

Built from the repository's own documentation. Source on GitHub.