Best Practice to exclude parts of navigation in random point search

I am currently working on a system so builders can build a building and add resources to it. During the building period, people are free to walk over the construction site but as soon as the building is finished, they need to be taken off the construction site to avoid that they get stuck in the building.

I was setting up my building to teleport all people out of the area as follows.

Unfortunately, some of my buildings have the issue that navigation is generated at places which the characters cannot reach (see e.g. steps on the pyramid below). I cannot use “GetRandomReachablePointInRadius” to exclude those since the characters could e.g. be below the pyramid during the building spawn and it would not be possible for them to move to any outside navigation. Also, I cannot change the agent size since there are other places with very big unreachable fields (see the roof of the temple).

Is there some kind of solution to exclude the navigation which is on a building from the random point search? The building is dynamically generated during runtime.
C++ solutions are also welcome, as long as I could later use them in blueprint as well.

Look into nav queries. You can set nav volumes over those labeled as “Off Limits” then in your query you set it to exclude the “Off Limit” area when it find a random point. The query can then be placed in the filter class.

I know that I can filter based on an “Off Limit” nav volume. Since the buildings are placed by the player at runtime, I would need to spawn new nav volumes at runtime which (from all that I know) does not work. Or am I missing something here?