40 AP per cycle is “plenty” in most battles, but then when you’re up against a team that prioritizes the guy so highly they spend 80/cycle, by the end of the battle all that cumulative AP adds up to a VH-H battle, sometimes more lopsided than this, depending on how long the battle lasts, and what else specifically is going on in preferences.
So yeah, how much AP was spent by both teams matters a lot. But if AP really was fairly even, like I said before, most likely what happened is that the player has the “wants to play” preference, and the other team got promises in early, and you didn’t. Minutes promises for players who want to play are a modifier/multiplier for all future effort once the promise is made, so if promises are made late for those players, you don’t get nearly as much credit. If the minutes promise was made at the very end of the battle, it might say “Very Good” on the preference, but from a preference standpoint it has negligible effect, apart from the stand-alone impact a promise has for every player regardless of playing time preference.
And again, the other team’s “very goods” just might be better. If the player wanted to play, even if you did get it in early, a 20 minute promise will not bring in as much return as a 25 minute promise; if the player wants to play close to home, 50 miles is a quite a bit better than 180. Even if they all look “very good,” you may not be keeping up exactly.
Some combination of these issues is what caused the discrepancy in the final odds. I’m not saying you have to enjoy the result, I’m just saying there is an explanation, there is no “other layer of randomness” involved here.