Checked in the second cut of problem generator.  This version has two filters of a game. The first looks for a abs(score) > 3. When it finds one it backs up four moves and does infinite analysis for 5 seconds. If it finds a delta between the abs(startScore and endScore) >= 2 and the abs(lastScore) > =2 it considers the position a problem.
Checked in the second cut of problem generator. 
This version has two filters of a game. The first looks for a abs(score) > 3. When it finds one it backs up four moves and does infinite analysis for 5 seconds. If it finds a delta between the abs(startScore and endScore) >= 2 and the abs(lastScore) > =2 it considers the position a problem.

This approach is producing better problems but there are still some issues with it.
1) It is very slow.
2) I find the types of problems produced interesting, but these are still not the types of tactical problems I am after.

evilwan/raptor-chess-interface,raptor-chess/raptor-chess-interface,evilwan/raptor-chess-interface,raptor-chess-interface/raptor-chess-interface,raptor-chess-interface/raptor-chess-interface,raptor-chess/raptor-chess-interface,evilwan/raptor-chess-interface,NightSwimming/Raptor-Chess,raptor-chess/raptor-chess-interface,NightSwimming/Raptor-Chess,evilwan/raptor-chess-interface,raptor-chess-interface/raptor-chess-interface,raptor-chess-interface/raptor-chess-interface,NightSwimming/Raptor-Chess,raptor-chess/raptor-chess-interface,NightSwimming/Raptor-Chess