Skip to content

This is a Layer 2 document. See CLAUDE.md for project overview.

Elo Rating System Specification

Superseded (2026-07): folded into Rating System v2 — Specification. Kept for reference.

Status: Superseded

Overview

TwoMore uses an Elo rating system to track player skill levels within clubs. The system is designed for fast convergence in club play, where match frequency is lower than professional settings.

Parameters

ParameterValueNotes
Default rating1200Assigned to all new players
K-factor32High for faster convergence in club play
Doubles weight0.5Each player gets half the adjustment in doubles matches

Tiers

TierRating RangeDescription
Beginner900 - 1200New or developing players
Intermediate1200 - 1600Competent club players
Advanced1600+Strong competitive players

Rating Flow

  1. Initial rating: Players self-rate when joining a club. This sets their starting Elo within the appropriate tier range.
  2. Auto-update: After each match, ratings are recalculated automatically based on match results.
  3. Doubles adjustment: In doubles matches, each player receives half the standard Elo adjustment (weight = 0.5) to account for shared outcomes.

Implementation

  • Core algorithm: domain/rules/elo.rules.ts
  • Rating storage: profile.repository.port.ts via updateElo()
  • Score submission flow: application/match/submit-score.usecase.ts records the score, calculates Elo changes, updates ratings, and writes history

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