Home

/

Docs

/

Skill Level Management

Scoresheets

Skill Level Management

Automatically track player performance and get suggested skill level changes over time — how points are calculated, thresholds, adjusters, and applying updates.

Skill Level Management

Overview

Skill Level Management (/operator/skill-levels) is an Operator tool that watches how players perform match to match and suggests when a player's skill level should go up or down — the way APA-style leagues rate players. It's separate from entering a player's skill level number by hand; instead, it does the math for you based on wins, losses, and (optionally) balls made and achievements, then lets you review and apply the suggested changes whenever you're ready.

Not the same as the Skill Level handicap type. The Handicap System doc covers the Skill Level option in the Scoresheet Builder's Handicaps section — the per-player number entered during score entry that produces a round bonus. This tool is what keeps that number accurate over time. They share the same underlying value: a player's skill level here is the exact number the Skill Level handicap type uses during scoring. This page only makes sense once your scoresheet's Handicaps section is set to Skill Level — that scoresheet's min/max range sets the outer bounds every suggestion and manual entry here is clamped to.


How It Works

Every player accumulates points from the matches they've played since their last reset date (shown as "Last Changed" in the Players tab), starting from a configured baseline:

  1. Starting Points — every player begins at this point total right after a reset.
  2. Each match since the reset adds or subtracts points:
    • A win adds the win points; a loss adds the (typically negative) loss points.
    • Balls made and balls left on the table add/subtract points per ball, if your scoresheet tracks them.
    • Achievements configured with skill level points in your scoresheet's achievement list add their point value when a player earns them.
    • Optional Skill Difference Adjusters (below) can add or remove bonus points to a win or loss based on the skill-level gap between the two opponents.
  3. When a player's running total crosses one of the two thresholds, the tool suggests moving their skill level by exactly one level — up if they cross above the "move up" threshold, down if they cross below the "move down" threshold. Between the two thresholds is a safe zone where no change is suggested.
  4. A suggestion is always clamped to the player's effective range: the league-wide range from the scoresheet's Handicaps section, further narrowed by that player's own Min/Max Skill Level fields (set on Player Details) if they have one. A player's own bound can only tighten the league range, never widen it.

Nothing changes automatically — suggestions are a starting point. You review them on the Players tab and choose what to actually save.


Settings Tab

League-wide configuration, saved once for the whole league.

Starting Configuration

SettingWhat it does
Starting PointsPoints every player starts from right after their tracking resets. Default 500.
Games To Play Before Update (optional)If set, a player's suggestion stays paused — shown with a pause icon — until they've played at least this many games since their reset date. Leave blank to suggest changes from the first game played.

An info banner reminds you that the scoresheet's Handicaps section sets the overall skill level range for the league (with a link straight to the Scoresheet Builder), and that an individual player's own Min/Max Skill Level fields can narrow that range further for just them.

Match Outcomes

SettingWhat it does
Points for Match WinPoints added for winning a match. Default 100.
Points for Match LossPoints added for losing a match — usually a negative number. Default -100.
Points per Ball on TablePoints per ball made, added; the same amount per ball left on the table, subtracted. Only relevant if your scoresheet tracks balls made/left. Supports decimals. Default 0 (off).

Level Change Thresholds

SettingWhat it does
Points to Move DownIf a player's running total drops below this, a one-level decrease is suggested. Default 200.
Points to Move UpIf a player's running total rises above this, a one-level increase is suggested. Default 800.

A threshold bar visualizes the safe zone between the two values relative to Starting Points.

Skill Difference Adjusters (Advanced)

Optional bonus/penalty applied on top of the flat win/loss points, based on the skill-level gap between the two opponents in a match. The formula for both is the same:

(Player's Skill Level − Opponent's Skill Level) × Multiplier × -1

Each direction has its own multiplier and a condition that controls when it applies:

Win Adjuster ConditionApplies when
Lower Beats Higher (default)The winner's skill level is lower than the loser's
Higher Beats LowerThe winner's skill level is higher than the loser's
AlwaysEvery win
NeverAdjuster is off
Loss Adjuster ConditionApplies when
Higher Loses to Lower (default)The loser's skill level is higher than the winner's
Lower Loses to HigherThe loser's skill level is lower than the winner's
AlwaysEvery loss
NeverAdjuster is off

With the defaults, a lower-skilled player gets a bonus for beating a higher-skilled opponent, and a smaller penalty for losing to one — while a higher-skilled player is penalized more for losing to someone rated lower. A live example panel below the settings plugs your current multipliers and conditions into sample matchups so you can see the exact point swing before saving. If both conditions are set to Never, the panel notes that no adjusters are currently active.

Achievement Points

If your scoresheet has achievements configured with skill level points, they're listed here for reference (code, name, and point value) — this section is read-only. Edit the point values from the Scoresheet Builder.

Saving

Save Settings and Cancel Changes only appear once you've changed something. Reset to Defaults is always available and reloads the tool's built-in defaults into the form — it still requires Save Settings to actually persist them.


Players Tab

One row per player in the league, recalculated live as you adjust Settings so you can see the effect before committing to anything.

ColumnShows
ActionsCalendar icon opens Match History for that player; history icon opens Skill Level History.
PlayerPlayer name.
Last ChangedThe player's reset date, or "Never" if their tracking has never been reset.
PointsCurrent running point total since their last reset. Click it for a breakdown popover showing starting points, per-match win/loss points (with any adjuster math), balls made/left points, achievement points, and the total.
CurrentThe player's current skill level.
SuggestedThe tool's suggested next level, with an up or down arrow — or a pause icon if frozen by Games To Play Before Update. Blank if no change is suggested.
NewAn editable field, pre-filled with the suggestion (clamped to the player's bounds). Edit it to override the suggestion before saving.
NoteOptional freeform text, saved with that player's history entry.

The New field's border flags a mismatch: orange means your entered value matches the suggestion but not the current level; red means it matches neither the current level nor the suggestion.

Saving Skill Level Changes

Save Skill Levels (top of the tab) applies every row where New differs from Current, after a confirmation prompt. Saving:

  • Updates the player's skill level to the New value.
  • Resets that player's tracking — their reset date moves to today and their point total starts over from Starting Points — for every player saved, whether or not a note was entered.
  • Records a Skill Level History entry (original level, new level, date, note) for every player saved. The note is optional and can be blank.

Mass Update Reset Dates

Select players with the row checkboxes (Select All/Deselect All available), then Mass Update Reset Dates to set a past-or-today date and an optional note for all of them at once. This doesn't directly change a player's current skill level, but it does change which matches are included in their running point total and suggestion math going forward. Use it to correct or backdate when tracking should have restarted (for example, fixing a mid-session baseline) without changing anyone's skill level value. A Skill Level History row is written for each selected player with level columns left blank, using your note or the default note (Mass reset date update) if left empty.

Match History Modal

For one player: every match since their last reset, with the opponent, the opponent's skill level, the skill-level difference (with an up/down arrow), the date, a win indicator, balls made/left (if tracked), achievements earned, a per-match points popover, and a running total. A synthetic "Starting baseline" row is appended after the match rows and shows the reset date and Starting Points. Bye matches are filtered out and do not appear in this table.

Skill Level History Modal

For one player: a simple table of past changes — original level, new level, date, and note — drawn from every history entry created by Save Skill Levels or Mass Update Reset Dates above.


Who Can Do What

ActionOperatorTeam CaptainPlayer
View the Skill Levels page
Change Settings (points, thresholds, adjusters)
Save a player's skill level change
Mass-update reset dates

This is an Operator/SuperAdmin-only tool. Team Captains and Players don't have access to this page, and every underlying change is enforced server-side regardless of what the UI shows.


Where the Controls Live

  • /operator/skill-levels (Players section of the navigation) — the only place this tool lives, with its two tabs, Players and Settings.
  • Scoresheet Builder → Handicaps — sets the handicap type to Skill Level and defines the league-wide min/max range this tool's suggestions and manual entries are clamped to. See Handicap System.
  • Scoresheet Builder → Achievements — where achievement skill-level point values are configured; this tool only displays them.
  • Player Details — where a player's own Min/Max Skill Level bounds are set, narrowing the league-wide range for that one player.

Common Questions

Is this the same as the "Skill Level" option in the Scoresheet Builder? No, but they're connected. The Scoresheet Builder's Handicaps section lets you turn on a Skill Level handicap type, which uses each player's skill level number during scoring to calculate a round handicap bonus. This tool is what calculates and updates that number over time based on match results — see Handicap System for how the number itself is used in scoring.

Why is a player's Suggested column blank even though I know they've been winning? Either their running point total hasn't crossed a threshold yet, or Games To Play Before Update is set and they haven't played enough games since their last reset — check for a pause icon in the Suggested column.

If I edit the New value instead of accepting the suggestion, does anything break? No. The New column is fully editable — enter any value within the player's allowed range and it saves as entered, whether or not it matches the suggestion. The border color is just a visual flag, not a restriction.

Does saving a skill level change always create a history entry? Yes. Every saved skill level change writes a Skill Level History row. The note is optional and can be blank.

I need to fix a player's reset date without touching their skill level — can I? Yes — use Mass Update Reset Dates on the Players tab. It only changes the reset date, never the skill level itself, and writes a reset-only history row with your note (or a default note if left blank).

Can I widen a player's range past the scoresheet's overall min/max by setting a wide Min/Max Skill Level on Player Details? No. A player's own bound can only narrow the league-wide scoresheet range, never widen it — the two are always intersected.

What happens to point totals if I change Settings after players have already accumulated points? The Players tab recalculates live using the new settings for the player's entire history since their reset — there's no separate "old settings" vs. "new settings" split. Save Settings only persists the values; it doesn't change how existing match history is interpreted going forward.