Generate a climb

Predict grade

Click holds to build a climb

Click a hold on the board image. The app appends the corresponding BoardLib frame token using the selected semantic role.

    What the controls mean

    Temperature
    Sampling randomness. Lower values are more conservative; higher values are more exploratory.
    Target V-grade
    The grade token given to the generator. The generated route is also checked by the grade predictor.
    Known climb
    An exact match against the tokenized dataset: same board, same angle, and same hold-role set.
    Validity
    A structural check: enough holds, no duplicate placements, at least one start, and at least one finish.

    How this works

    Routes are converted into tokens such as <BOARD_TB2>, <ANGLE_40>, and <TB2_p652_start>.

    The generator samples a token sequence. The grade predictor removes the grade token and estimates difficulty from the board, angle, and hold-role tokens.

    Data acknowledgement

    Tension Board 2 route data is from Tension Climbing. Kilter Board route data is from Kilter.

    Angle scope

    The physical boards can be used at steeper angles than this demo exposes. This model snapshot is intentionally restricted to the angle range used in training/evaluation: TB2 up to 50° and Kilter up to 55°.

    The restriction avoids asking the models to extrapolate into sparse, noisier high-angle data where grades and route distributions are less reliable.

    High-grade caveat

    Generation and prediction are both less reliable at edge-case grades, especially around V10 and above. Those grades are rarer in the data, so the generator has weaker grade control and the predictor has less signal for accurate scoring.

    To-do

    This demo currently focuses on the full-board layouts: Tension Board 2 Mirror 12x12 and Kilter Board Original 16x12. Other board sizes are future work.

    Choose a board and run a request

    The climb overlay will appear below. You can also click holds to build a route for prediction.

    Board background
    Raw result JSON
    {}