Programmatically generating chess puzzles from a database of games played by users: https://lichess.org/blog/U4sjakQAAEAAhH9d/how-training-puzzles-are-generated