I'd be very careful about decisions. I've run the bot just once to look at a simple game with 1 upgrade, 1 moneylender, and money. When the bot came to a hand with upgrade, gold, silver, copper, province, it played the upgrade and drew the moneylender. It trashed the copper with the upgrade, played the moneylender with no copper, and bought a duchy. Perhaps though it should have trashed the moneylender for a duchy and bought a duchy or gold. Perhaps it should have trashed a silver for another 4 card, trashed the copper with the moneylender and bought a duchy or gold. Perhaps it should have trashed the province (for nothing) just to buy a province and empty the pile. The decisions are not trivial.
There are also too many card combinations to code individually. For example you might always play a pearl diver before an upgrade, or always play a lookout before an upgrade, but deciding the order to play a lookout and a pearl diver is not simple.