We loaded Stanford's SNAP Facebook Social Circles network into Neo4j, added an engagement layer of posts and likes, and used graph algorithms to find the users a campaign should target to maximize reach.
The 3,927 users in the main connected component, positioned by a force-directed layout. Hover a node for details.
Degree centrality: number of friendships, top 10
These hubs reach the most people directly, so they're natural candidates for seeding a campaign.
Betweenness centrality: share of shortest paths through each user, top 10
User 1085 sits on 24% of all shortest paths but has only 64 friends. Bridges carry information between communities.
Every user: number of friends vs. betweenness centrality
Degree and betweenness are almost uncorrelated (r = 0.10). None of the top-10 hubs is a top-10 bridge, so a reach campaign should target both groups.
Average shortest-path length from each ego user to everyone they can reach
Most users are about 4 hops from the central ego users. Lower values mean a more central starting point for spreading content.
Three node types, four relationship types
We also scoped how a social platform would split data across database types.
Friendships, circles and engagement as a graph, so community detection, influencer search and shortest paths run natively.
User profiles, posts and comments as flexible documents. The schema can change without migrations.
In-memory cache for trending posts and popular users, so high-traffic feed lookups stay fast.