6 v 6 knockout. Each round both sides reveal a random Pokemon from their remaining team; you can see the enemy artwork but their type and stats stay hidden until a stat is picked. One side picks a stat (who picks alternates every round, first picker is random; the CPU picks a random stat). Each side scores that stat multiplied by its own primary type effectiveness against the opponent primary type. Secondary types are ignored and immunities count as 1x. Higher score wins the round and the loser card is knocked out. A draw knocks out nobody, both sides swap card, and the next picker cannot choose the stat that drew. First side with no Pokemon left loses. Before each match you choose which generations (Gen 1 Kanto to Gen 9 Paldea, 1,025 Pokemon) the teams are drawn from. Gen 1 data built from the PokeAPI ingest and the Wikimedia type chart, curated in the Databricks data_lake gold layer; Gens 2-9 pulled from PokeAPI with the same fields.
Choose your generations
Teams are drawn from the generations you pick. Pick one, or mix as many as you like.