Without taking the time to really think about implementation (or calibration), this is roughly what I would do for "hot matches":
Code:
if(
BlueAllianceOPRinTopXXpercent || BlueAllianceOPRinTopXXpercent (I'm not sure if I'd do an "or" or an "and" here)
OR
two red alliance in top 20 vs two blue alliance in top 20
OR
(>=1 red alliance in top 10 vs >=1 blue alliance in top 10) && (abs(RedAllianceOPR - BlueAllianceOPR) < 10)
I've never looked at the blue alliance API, but I would think all of that information should be available. I'd also think that for the first 3 or so matches I'd use the existing OPR available rather than the OPR from champs. Intent would be to be looking for matches that should either be close (and at least somewhat important), impact standing, or should be high scoring.