Configurable Matchmaking
The Configurable Matchmaking algorithm is the most advanced dispatch option in League Dispatcher. It lets you define player attributes, create custom rules, and fine-tune weights to control exactly how players are grouped. It is designed for experienced organizers who need more control than the standard algorithms provide.
This is an advanced feature. Most leagues will be well-served by Fair Random or Elo. Use Configurable Matchmaking only if you have specific needs — such as manual skill-based grouping, gender balance, or player avoidance — that the other algorithms don't address.
How It Works
Organizers define "Player Attributes" — key-value tags like Skill Level (A/B/C), Gender (M/F), or Avoid Group (red/blue). Each player gets assigned one or more values per attribute. Then, organizers create rules that tell the algorithm how to use those attributes when forming groups.
When dispatch runs, the algorithm evaluates every possible player combination and scores each one against all active rules simultaneously. The combination with the best overall score is selected. Rules are soft preferences with configurable weights — the system always produces a valid dispatch, even if not every rule can be perfectly satisfied.
Player Attributes
Attributes are key-value metadata assigned to players by the organizer. They are static — they don't change during play. Examples include Skill Level (A/B/C), Gender (M/F), Avoid Group (red/blue), or Carpool Group (north/south). Players can have multiple values per attribute — for example, a borderline player might be tagged as both A and B for skill level.
Attributes are configured in the Manage Players & Courts page under the Attributes tab. Define your vocabulary (attribute name + possible values), then assign values to each player. Attributes persist across game days — no need to re-assign after each session. On the play day page, you can filter the Not Available and All Players tabs by tag values using the chip-based filter bar.
Rule Types
Three rule types control how attributes influence matchmaking. Each rule targets one attribute and has a weight that controls its importance.
Separate
Spread players with the same attribute value across different courts. For example, apply Separate to Skill Level (A/B/C) to get a mix of skill levels on every court. Also useful for player avoidance: assign feuding players to the same Avoid Group value, then Separate keeps them apart.
Group
Keep players with the same attribute value together on the same court. For example, apply Group to Skill Level to play strong with strong and weak with weak. Also useful for carpool groups: keep players who commute together on the same court so they finish at the same time.
Balance
Distribute attribute values as equally as possible on each court. For example, apply Balance to Gender (M/F) to aim for 2M/2F on each court instead of 3M/1F. Best for two-value attributes where an even split matters.
Weight System
Each rule has a weight from 0 to 100 that controls how strongly it is applied. A weight of 80 or above means the rule is strongly enforced. Between 40 and 79, it is moderately applied. Between 1 and 39, it is a slight preference. A weight of 0 effectively disables the rule.
Multiple rules combine — the algorithm balances all of them simultaneously. There is no rigid priority hierarchy. Higher-weighted rules naturally dominate, but lower-weighted rules still influence the outcome. This lets you express nuanced preferences like "strongly separate skill levels, moderately balance gender, and slightly prefer keeping carpoolers together."
Built-in Weights
Four built-in preferences are available alongside your custom rules. Wait Fairness (default weight 80) prioritizes players who have been waiting the longest. Partner Variety (default weight 50) avoids repeating the same player pairings from recent games. Elo Proximity (default weight 0, disabled) groups players with similar Elo ratings together. Games Played Today (default weight 0, disabled) equalizes how many games each player has played in the current session.
All four are adjustable. Set any to 0 to disable it entirely. With no custom rules and default built-in weights, the algorithm behaves identically to Fair Random.
Worked Example: How the Algorithm Scores
Let's walk through exactly how the algorithm evaluates player combinations. This example shows how rules and weights translate into actual scoring decisions.
The Players
A league with 8 idle players ready to play on two 4-player courts:
| Player | Skill | Gender |
|---|---|---|
| Alice | A | F |
| Bob | A | M |
| Carol | B | F |
| Dave | B | M |
| Eve | A | F |
| Frank | B | M |
| Grace | A | F |
| Hank | B | M |
The Rules
The organizer has configured two rules: Balance("Skill") at weight 100 — wants equal A/B distribution on each court. Balance("Gender") at weight 100 — wants equal M/F distribution on each court.
How the Algorithm Decides
The algorithm generates every valid 4-player combination and scores each one. Lower score = better. Here are two possible courts the algorithm compares:
Court Option A: Alice (A,F), Eve (A,F), Carol (B,F), Bob (A,M)
Three women and only one man, three A-skill and one B — unbalanced on both dimensions.
| Rule | Calculation | Penalty |
|---|---|---|
| Balance("Skill") | A=3, B=1 → (3-1) = 2 | 2 × 100 = 200 |
| Balance("Gender") | M=1, F=3 → 3-1 = 2 | 2 × 100 = 200 |
| Total rule penalty | 400 | |
Court Option B: Alice (A,F), Bob (A,M), Carol (B,F), Dave (B,M)
Two A + two B skill, two M + two F — perfectly balanced on both dimensions.
| Rule | Calculation | Penalty |
|---|---|---|
| Balance("Skill") | A=2, B=2 → 2-2 = 0 | 0 × 100 = 0 |
| Balance("Gender") | M=2, F=2 → 2-2 = 0 | 0 × 100 = 0 |
| Total rule penalty | 0 | |
Option B scores 0 (perfect), Option A scores 400 (heavily penalized). The algorithm picks Option B. The same logic runs simultaneously for all rules, built-in weights, and every possible player combination — producing the best overall court assignments.
Player Avoidance
Keep feuding players apart without dedicated pair rules. Create an "Avoid Group" attribute with values like "red" and "blue". Assign conflicting players to the same group value, then add a Separate rule with a high weight (e.g., 90). Players in multiple conflict circles can have multiple values — for example, a player in both the "red" and "blue" avoid groups will be kept apart from all members of both groups.
Example Setup
A pickleball league with 16 players and 4 courts: Skill Level (A/B/C) with a Separate rule at weight 70 ensures diverse skill on each court. Gender (M/F) with a Balance rule at weight 50 aims for equal gender distribution. Avoid Group (red) with a Separate rule at weight 90 keeps conflict players apart. Wait Fairness at 80 and Partner Variety at 50 round out the setup.
Best For
Leagues that want fine-grained control over matchmaking. Organizers managing player conflicts or personality clashes. Mixed-skill leagues wanting fair but customizable grouping. Any league where one-size-fits-all algorithms don't fit — Configurable Matchmaking lets you define exactly what matters to your group.