The Corruption Atlas

Topographic · Degree centrality · Seed 118400

Peak · degree ≥ 50 Ridge · 20–49 Foothill · 5–19 Base · < 5
Entities (full)
200
In source network
Rendered
80
Top-80 by degree centrality
Connections (full)
12,408
Shared category weights
Rendered Ridges
3,159
Inter-top-80 edges
Peak Degree
Highest single connectivity
Source
OFFICIAL
Hansard · Elections Canada · Lobbying · Procurement
Government Corporate Members of Parliament Foreign Interest Media / Institution Node Ø = degree · Ridge α = shared-category weight

Reading the Atlas

Each peak is one entity — a person, a firm, a political body, or a foreign interest. Its diameter encodes degree of influence: how many other entities it is connected to in the public record. The wider the peak, the more threads run through it.

The ridges between peaks are shared categories — the same donor bucket, the same lobbying roster, the same procurement stream. Hot ridges (red) carry the heaviest weight. Dim ridges (gold) still count; they just carry less.

What the Topography Shows

Clusters at the centre are the dense ridges — groups of entities that share many of the same connections. These are not accusations, they are observations: in the public record, these entities travel together.

Isolated nodes on the perimeter are the foothills — smaller entities that still surface, but without the web of ties that define the interior. Pan, zoom, and filter to trace a thread from the coast inland.

Sister view
Corruption & Influence Map
The original 382-entity cross-source map (lobbying, treason roster, OSINT, financial) — same investigation, a wider catalogue with different centrality metrics.
Methodology — The atlas is derived from data/network_analysis/influence_network.json (200 nodes, 12,408 edges). Nodes are ranked by degree centrality — the number of distinct edges incident to each node. The top 80 are laid out with Fruchterman–Reingold force-directed placement, 60 iterations, deterministic from SYSTEM_SEED=118400 so the same map renders identically across reloads. Edge weights are normalized into 5 buckets by the weight field (count of shared categories). Entity classification is rule-based on type + label keywords; any misclassification can be reported and the renderer will re-filter without changing the underlying data. Rendered subset: data/corruption_map_top80.json (~397 KB).