I use them in Slayer. Check out these files in Gamemode_Slayer/server/core:
* AiController.cs
* AiPlayer.cs
* Slayer_AiController.cs
Basically though, I check if there are any spawns bricks and if there are, I choose a spawn and assign the bot to that brick (multiple bots can share a brick). If there are no spawns, I create a fake brick.
The hole bots are somewhat poorly coded and not properly set up for expansion like this though, so they're a bit of a pain to work with.