Apply single dummy solver when not all controls are known. This is when responder has shown a minimum
Sometimes grandslam is bid when missing an ace. (Check GetRelayBid part biddingState.Fase == Fase.ScanningOther)
Consider alternative suits: NT, fits with the same length or shorter fits(8+ cards)
when responder shows 4 controls, it doesn't take into account if it shows 12+ or less
It bids 5NT as a contract too often
single dummy solver during GetRelayBid should be more sophisticated. For example, it should not continue relaying when all results return the same value. Or it should take into account the level of the current bidding. Or it should distinguish between small slam and grand slam.