All posts

How a training session picks your drill, and where your ELO comes from

Five factors, one draw and the simple rule that moves a skill rating after every drill.

September 10, 2026 · 2 views

A training session in Cue Ball Network does not pick drills at random. Every proposal comes out of the same repeatable mechanism: a pool of drills that qualify at all, five factors that score each of them, one weighted draw and, at the end, an update to your skill level. This article walks through what happens between tapping "next drill" and saving the result.

What can be proposed at all

Only measurable drills make it into the pool. Concretely: published drill variants for your table type (pool or snooker) that have a metric, a number of attempts and at least one goal. A variant without a goal has no way to end in "completed" or "failed", so the trainer will not show it.

Importantly, drills you have already seen in this session do not leave the pool. They are pushed to the back of the queue. As long as anything unseen is left, the trainer proposes something unseen. Only when everything has been shown does it go back to seen drills, drawing with a preference for the ones shown longest ago. That is why a session never "runs out" of drills, unless the catalog for that game is empty.

The five factors that score every drill

Each variant in the pool gets a weight. It starts from a base of 1, so even a drill that scores nothing can still be drawn. To that base the sum of five components is added. Each component is a score between 0 and 1 multiplied by a factor weight set by the administrator.

  1. Level proximity (ELO proximity). The closer a drill's level is to your ELO in that skill, the skill level stored as a number, the higher the score. A perfect match scores 1. A drill about two levels away scores 0. Default weight: 100, the largest of the five. This is why most proposals sit roughly at your level.
  2. Weakest skill. A drill whose primary skill is your lowest-rated skill on that table scores 1. Your strongest skill scores 0 and the rest fall linearly in between. Default weight: 50.
  3. Least recently trained skill. A skill you have never trained, or trained longest ago, scores 1. The one you trained most recently scores 0. Default weight: 40.
  4. Failure repetition. A drill you failed becomes "due" for a retry after a while: 7 days after the first failure, 30 after the second, 90 after the third and every later one. While it is due it scores 1. Completing the drill after a failure clears the pending retry and the factor disappears. The failures themselves are still counted, so a drill you fail again later comes back on the interval its total count has reached, not on the first one. Default weight: 70.
  5. Open mistakes. If your mistake register holds unresolved entries, the skill with the most open mistakes scores 1 and the others proportionally less. There is no time window: an entry counts until you close it. A mistake tagged with several skills counts for each of them. Default weight: 60.

The three skill-promoting factors (weakest, least recently trained, open mistakes) are additionally multiplied by a per-skill weight. By default only jumps are dampened (0.2), because it is a skill trained rarely by design and without that correction the trainer would keep pushing it just for being "weakest" or "stalest". Level proximity and failure repetition are not multiplied, so a jump drill still shows up from time to time.

The draw

Once every drill has its weight, the trainer chooses the pool to draw from:

  • First, drills not yet shown in this session. Among them, "fresh" ones are preferred, meaning drills you have not executed in the last few days (the number of days is an admin setting). A drill that is due for a failure retry bypasses the freshness filter, so its bonus is not buried.
  • If everything unseen is stale, the trainer draws among those anyway, with an extra multiplier that favors the drills executed longest ago. The freshness window is a soft preference, not a block: a recently done drill goes to the back of the queue but does not vanish.
  • Only when everything in the session has been shown does the repeat mode kick in, drawing with a preference for the drills shown longest ago.

The pick itself is a weighted random draw. A drill with weight 150 is three times as likely as one with weight 50, but the second one can still come up. Sessions are therefore not predictable down to a single drill, yet they follow the direction your data points to.

"Why this drill"

After the draw, the trainer checks which of the five factors contributed the most to the weight of that particular drill. That factor, together with the skill and level, is shown in a short intro before the drill. A factor disabled by the administrator (weight 0) is never reported as the reason. If no factor scored at all, the intro is skipped rather than inventing a justification.

Where the result of a drill comes from

After the drill you record the outcome of each attempt. You do not grade yourself: the system compares the recorded attempts with the variant's goals and decides on its own whether the drill is completed or failed. That result goes into the execution history together with a copy of the goals, so you can always check why a given drill counted as completed.

How a skill's ELO changes

Every skill has its own level on a 0 to 10 scale (stored internally a thousand times larger, so level 5.0 is 5000). The update after a drill is classic ELO, like in chess, except the "opponent" is the drill:

  • Your rating is the ELO of the skill the variant works on.
  • The opponent's rating is the variant's level multiplied by 1000. A level 5 variant plays like an opponent rated 5000.
  • Completing is a win (1 point), failing is a loss (0 points).
  • The K factor is 20, so one drill can move a skill by at most 20 points, that is 0.02 of a level.

The expected score comes from the standard ELO formula with a divisor of 400. In practice that gives three situations:

  • A drill exactly at your level: expected score 0.5. Completing gives +10, failing gives -10.
  • A drill one level above you: the system expects a failure. Completing gives almost the full +20 and failing costs a fraction of a point.
  • A drill one level below: the system expects a completion. Completing gives a fraction of a point and failing costs almost -20.

The change is recorded to two decimals on the execution, and the skill level itself is rounded to a whole number. Levels map onto five tiers: beginner (0 to 2.9), amateur (3 to 4.9), intermediate (5 to 6.9), advanced (7 to 9.9) and pro (10 and above). You will see the same tiers on your profile and in tournament entries.

Why it works

Level proximity keeps drills within reach. Weakest skill and least recently trained make sure you do not only train what you enjoy. Failure repetition works like flashcards: a drill that did not work out comes back at growing intervals until you finally complete it. Open mistakes connect what you wrote down in the mistake register, sparrings included, with what you get in training. Every saved result changes the ELO, and the changed ELO changes the next proposal. That is the whole loop.