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
| Parameter | Value | Notes |
|---|---|---|
| Default rating | 1200 | Assigned to all new players |
| K-factor | 32 | High for faster convergence in club play |
| Doubles weight | 0.5 | Each player gets half the adjustment in doubles matches |
Tiers
| Tier | Rating Range | Description |
|---|---|---|
| Beginner | 900 - 1200 | New or developing players |
| Intermediate | 1200 - 1600 | Competent club players |
| Advanced | 1600+ | Strong competitive players |
Rating Flow
- Initial rating: Players self-rate when joining a club. This sets their starting Elo within the appropriate tier range.
- Auto-update: After each match, ratings are recalculated automatically based on match results.
- 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.tsviaupdateElo() - Score submission flow:
application/match/submit-score.usecase.tsrecords the score, calculates Elo changes, updates ratings, and writes history