title: Promotion engine for POS- Self Checkout
body: <p>I wish to make a promotion engine for retail systems connected to a central system. So when items are added in a cart, a promotion offer should get automatically applied based on the items added.
  For Example, Buy 2 items A, and 1 item of B, offer applied Buy1 Get2 Free.
  Now item A, item B are groups of few items.
  One of the way I can go by is hitting a API, Every time cart is updated, and then checking which rule is satisfied, but I don't want that way to go. I want to make it work in real time without hitting API.
  Please help me suggest the best possible way to do it.
  Thanks</p>