This is a nice puzzle. I wonder, when generating the puzzle, how do you prove the solution is unique? If you take the naive approach of just fitting words to the space, there is a chance that alternative solutions could become possible by chance.
Simple example: you can never have the following contiguous string:
WORDSAMPLE
Because the solution could legitimately be WORDS+AMPLE or WORD+SAMPLE.
A brute force of all possible contiguous regions, to hunt for rogue alternative solutions, is probably feasible in this small grid, but is there a better way?