I think what you propose with random forest is a good start, but it assumes you have labeled data for past promotions or customer behavior.
If you do, then you can use the predicited probabilities for each target level to rank the offers for each customer exactly as you propose.
... View more