Why not group people into free-form clusters based on user density? So, if you have 5 people that are effectively in the same building, and 3 people that are outside of it in various directions, group those 3 into the 5. This has the effect of forming virtual chat rooms that come and go.
Not sure what you're using on the backend, but if it's PostGIS... here you go: http://gis.stackexchange.com/questions/11567/spatial-cluster...