A bot that will minimize the expected number of (not yet seen) cards to draw to complete the hand the hand does reasonably well at deciding which card to draw or discard. The number of potential melds in a hand is small enough for modern hardware to completely enumerate, and you start the game with only 42 possible cards in the draw pile, with the number going down almost every turn, so the calculation is very feasible.
For knocking, a heuristic for how many turns vs. amount of deadwood (which should vary based on the undercut bonus you use) does "okay"; adding a bit of randomness should be done to prevent stronger players from being able to place a lower-bounds on your count may be a good idea.
A bot that will minimize the expected number of (not yet seen) cards to draw to complete the hand the hand does reasonably well at deciding which card to draw or discard. The number of potential melds in a hand is small enough for modern hardware to completely enumerate, and you start the game with only 42 possible cards in the draw pile, with the number going down almost every turn, so the calculation is very feasible.
For knocking, a heuristic for how many turns vs. amount of deadwood (which should vary based on the undercut bonus you use) does "okay"; adding a bit of randomness should be done to prevent stronger players from being able to place a lower-bounds on your count may be a good idea.
See if you can find a copy of Michael Sall's book, it's pricey but it's the definitive guide to the game