I used to work at Amazon. Demographics aren't needed when you have a ton of customers for which to take the intersection, and sort by weighted (frequency, time of purchase.) Any non related purchases won't show up nearly as often or close in purchase date as related ones on a large sample of customers. This is just a consequence of having big data, which makes the noise floor insignificant. ML shouldn't be thrown at everything indiscriminately.