Procedural Level and Enemy Spawning

I’m making a card game inspired by Slay the Spire and I was wondering, how would you architecturally approach a procedural level generation system for a roguelike? Cosmetically speaking, all my levels will be the same, I only need the enemies in them to be generated procedurally.

My first ideas involved something to do with a game mode + data tables and sets of enemies but not sure which direction to take that.