Most of times, you see a discount in a store and you are able to figure out how much you could save. Occasionally, you get confused and you have to read into fine print to figure things out. In fact, a key goal for retail discount design is to ensure that humans can understand the discount setup and the outcome.
I can sum up retail discount design in three questions: how to apply one discount alone, how they compete and how they compound? They look easy, especially from your store impression, yet beneath the simple façade, the complexity could proliferate if uncontrolled.
To design a retail discount engine is an iterative process. First, you have some ideas of what kind of discounts you want to support. Then, I would encourage you to read retail discount 101: 5 articles about basics of retail discount engine design. You go back and revisit the discounts you had in mind. This time, I strongly encourage you to lay down a few examples: not too simple to be trivial and not too complex to clog your brain, and work through them. One of the key results of this iterative exercise is to identify the some setup details that are both uncommon and too complex to handle. In the end, you want to make sure you can handle all the variations of your discount setup.
By now, I hope you know how to apply each of your discount alone, especially when you have more than one way to construct the final deal, and you have some ideas about discount concurrency: how to compete and how to compound. There is no perfect model for discount concurrency, so it is essential for you to understand how they would apply in your scenarios and evaluate the trade-offs.
As in driving, we all have blind spots. If you know experts on retail discount, review your model with them.
During the implementation stage, I am sure you will discover something new. As I mentioned earlier, it is an iterative process. Keep drilling.
Lastly, remember the goal we set in the beginning: human understandability. If it's hard to understand, we're confusing customers and ourselves.