I had this idea a while back and made a puzzlegame for Android and iOs that does basically this.
The idea is to create puzzles on ANY subject that contain words relating to that subject.
- let user type, search wikipedia for articles starting with that text
- grab selected article, find out words in it that are links to other articles (they are probably related)
- generate a puzzle
I also do random placement, but I also add a score to the final puzzle, taking into account spread in vertical/horizontal/diagonal words. Then I just create as many random puzzles as I can in 4 seconds and take 'the best'.