Good progress.
The spawn position should probably be determined by the spawner itself or set to specific areas.
Basically, before you allow the spawn you check the capsule size with a sweep and test if the object can indeed be spawned where you want it to.
If it can you proceed, if it cannot, you find another spot.
Further development of that would obviously tie into either nav mesh or nav invokers. However it’s likely overkill for your needs.
Keep it simple. Have some components into the level as spawners.
Make the master spawner look up all the elements of that type and select a random number in the range of 1 to the array count.
Then take that transform in world as the spawn transform.
Beware that the spawn transform may be Local and not World aligned - I can’t recall how it solves.
If it’s local, then you need to do math (subtract The spawner BP location? Or just run a transform from world to local on the spawn spot world location which is easier).