If I we’re you, I would first look into ProfileService, It’ll make your code A LOT more organized and reliable, although this is just a recommendation.
I would recommend having a list (either writing it out by hand or use GetChildren()) for the easy, hard, etc. levels, and give them a number (from easiest to hardest), and remove the “Completed Modes” folder all together. Then, whenever one of the checkpoints are touched, detect who touched it (you can optionally check if the player skipped a stage, although this may be annoying if people forgot to touch the checkpoint), and save the level to a leaderstats value (or just any value), and when the player leaves. Then, when the player joins, load that value (this would be something like “34”), and then search the list of checkpoints for that number, and then teleport them there.