Case study
Interactive Corporate Ownership Graph
Visualize tens of thousands of corporate ownership relationships in a way that lets users explore subgraphs at human scale.
What was built
- Cypher queries fetch on-demand subgraphs — root node + N-degree neighbors, capped at a node budget.
- Custom Canvas/WebGL rendering for nodes (avoiding the default DOM-based renderer at scale).
- Depth and edge-type filters: users toggle subsidiaries, suppliers, brands, customers independently.
- Click-to-expand UX: each node click fetches and merges its neighbors into the live graph.
- Performance budget enforced via a node-count cap; over-budget queries return a degraded result with a UI hint.
- Hover tooltips with provenance: source registry + confidence score + last-confirmed date for every relationship.
Stack
React, react-force-graph-2d, Three.js (custom node rendering), Neo4j Cypher, Custom layout heuristics
Outcome
Renders a 65K-node graph with progressive subgraph expansion. Depth controls and node-count budgets keep the UI responsive at >2K visible nodes.
What was hard
Performance optimization for force-directed graphs at this scale — defaults thrash the simulation. Required custom WebGL node rendering, depth budgets that load the graph progressively, and a hybrid layout that pre-computes positions for the densest neighborhoods and lets the simulation handle only the on-screen subgraph.