Exploiting KFC’s Menu For Optimal Purchases


This post is just to demonstrate a fun project I’ve been working on with Nicholas Mendez to optimize the way a person purchases Kentucky Fried Chicken (KFC). The idea is given a certain amount of chicken pieces, sides and drinks, what set of food combos should I purchase so that I would pay the minimum price possible?

Side Note

This may seem like a stupid idea, but if you know me you’d know I love two things:

  1. KFC
  2. Coca Cola

The Algorithm

We’ve developed a solution that uses dynamic programming to find the guaranteed minimum price given the number of chicken pieces, sides and drinks a person would like to purchase. I will not go into the details because we are still developing some additional features. The algorithm currently does not include sandwiches (Zinger and Cruncher) or Popcorn Chicken, but we’ll add these items in the near future. Also we’re going to perform purchase recommendations within a close price range ($5.00 to $10.00) since a customer may be able to receive a better deal if they are willing to spend a little extra.

Sample Run

I’ve asked a few friends what they usually purchase at KFC to see how well the algorithm performs.

One of my friends usually purchases 0 chicken pieces, 3 sides and 1 drink. He’d usually buy the items separately since all combos include chicken, hence he’d most likely be paying more.

1 Side = $10.00

1 Drink = $8.00

He pays a total of ($10.00 * 3) + $8.00 = $38.00

Is there a better way to make this purchase?

We ran our program with his order, and we obtained the following results:

As you can see, he can spend $35.00 (save $3.00) by purchasing a single side and a Supa Deal Combo. He also gets an additional piece of chicken which he can give away if he likes.



At the time of writing there is a fully functional REST API which I’ve built, and Nicholas is currently working on the front end interface.


Thanks for reading.

1 thought on “Exploiting KFC’s Menu For Optimal Purchases

Leave a Reply

Your email address will not be published. Required fields are marked *