Basically I start with an 8, 9 or 10 letter word as the core of the puzzle. I then have a generator add random letters and paths around this until it makes a grid with a good number of valid words.
I then run the words though GPT 5.5 which scores them on how "common" the word is to the average person. This is very subjective as everyone has very different vocabularies.
I then manually decide which words to include as core required words or bonus words.
Finally the puzzle is tested by my wife and mum to see if it is "fun" or it goes in the bin haha.