Thanks, that's plenty of resources for me to explore!
Yes, the issue of fairness is at the front of my mind. I mention student IDs because they are a convenient random seed, but the idea is to provide questions which can only be solved programmatically. My model is things like Advent of Code or Project Euler.
Making the questions individual is to gently discourage cheating. Not foolproof but it doesn't need to be for my purposes.