Advice on aligning streamed levels?

This is my current order of doing things but it feels incredibly convoluted. And I’m not smart enough to make this dynamic and more “Scalable” I guess? It doesn’t make sense to do it this way since I’m forced to do it manually for all data, I can’t pass stuff along.

  1. Persistent level with the bare essentials needed for the game.
  2. Begin Play → Load Level instance “Start Room” at 0,0,0
  3. “Start Room” Level Begin Play → Spawn “Room Actor” and set the Rooms’ “Type”.
  4. “Room Actor” Begin Play → Cast to “Game Instance”(Get Seed) → Switch On Enum for “Room Type” → Generate The Actual Level BP from that. And how it generates is random from seed and type.
  5. Generate Random Geometry(Disabled for now I’m manually just putting down a square and then entrance/exits.)
  6. Add each “Exit Point” to an array and add their locations to the parent who spawned the Actual Room Actor BP.
  7. From it’s parent, call an event to spawn the next room off a random exit point.
  8. Repeat.