Modification of Admin panel
1. Add some pages to set up customizable checkout deals, such as minimum amount or number of products in same category to enable free items for the customer. Category selection by child categories only.
2. Manage a hidden category to list all free products (unless coder comes up with a better way to do this)
Modification of website
1. Check if a customer is eligible for free products.
2. Display all free products in checkout page
3. Give a way to choose free items in cart
4. Remove free products if customer removes some products from cart and
is no longer eligible for free products.