An AI assistant on global organized crime
A knowledge graph of global organized crime, with an AI you can ask about it.
CRIMENET: 4,505 criminal organizations connected by 10,935 relationships across cooperation, conflict, and structural ties.
Six months ago I published the first version of CRIMENET, a knowledge graph of criminal organizations and their connections extracted from Wikipedia. It proved the idea worked. Now I have rebuilt it into something much larger: 4,505 organizations (was 1,857), 10,935 relationships (was 3,338), extracted from 1,418 Wikipedia articles (was 771) across four languages (English, Italian, Portuguese, and Spanish), with an audit pipeline that catches extraction errors and an AI that answers questions about the global organized crime network.
The new version is built with a three-layer pipeline. An extraction layer uses DeepSeek to pull out organizations and the relationships between them: cooperation, conflict, and other (structural links, splinters, truces, and unspecified connections). An audit layer catches the errors LLMs inevitably make. A build layer generates a static web app that runs entirely in the browser. The result is a knowledge graph of 4,505 criminal organizations and 10,935 relationships across 80 origin countries and 163 footprint countries.1 Every edge carries a verbatim evidence quote, a description, a versioned Wikipedia URL, and a time period when the source provides one. On top of the graph sits an AI that answers natural language questions by querying the data and citing its sources.
This post walks through everything it can do: the dashboard, the connection finder, CRIMENET AI, communities, bridges, triadic signals, centrality, paths, countries, the 3D graph, and the world footprints map. The full pipeline is described at the end of this post. Everything is open source; the code and the live app are linked throughout.
The entire catalog
Before diving into the AI, here is what the basic catalog gives you. The home page is a dashboard with two panels. On the left, you can browse all 4,505 organizations or browse by country. Click any name and the right panel shows its full profile: description, aliases, country of origin, time period, and where it operates, each backed by an evidence quote. If you just want to see which organizations are based in Brazil, or what the Sinaloa Cartel’s profile looks like, the dashboard has it.
The connection finder lets you pick any two organizations and see exactly how they relate. Each connection comes with a source link, a time period, and the verbatim Wikipedia sentence that documents it.2 The browser loads only the data it needs, fetching tens of kilobytes instead of the full dataset.
CRIMENET AI
The dashboard and the connection finder useful, but what if you could just ask a question? Which Mexican cartels have a presence in Colombia? Trace the cooperation network between Italian mafias and South American cartels. Which motorcycle clubs are the most central in the rivalry network? Are there organizations that bridge Russian and Chinese criminal networks? Who might the ‘Ndrangheta be secretly allied with, based on shared connections?
A standard chatbot would hallucinate the answers: its training data does not contain a structured database of criminal organizations with source-verified relationships.
I built CRIMENET AI3, a system that answers questions by querying the knowledge graph. The language model decides what to look up, the browser runs the queries against static data files, and the model synthesizes the results. The facts come from the graph. The model reasons; the graph provides the evidence. Every answer carries two automatically generated sections the AI does not write: Evidence (every edge used, with source link, time period, and verbatim quote) and Sources (every Wikipedia URL that appeared in the results).
Here is what it can do.
Communities
If someone asked "How do criminal organizations group together around the world?" the honest answer was: nobody knew. The question was too big to answer. Now it has an answer: 224 communities, named and described.
A community is a group of nodes more tightly connected to each other than to the rest of the network. I ran Infomap community detection on the cooperation graph only. Mixing edge types would not make sense: communities are built from positive ties (alliances, joint operations, commercial dealings), not from conflict or structural links.4 The result is 224 communities of criminal organizations worldwide, each titled and summarized by DeepSeek. Here are the top 10.
Table 1: The top 10 communities by membership, titled and described by DeepSeek.
See all 224 communities in the Community Browser (select the Communities tab).
What community does the Sinaloa Cartel belong to?
The AI finds the Mexican and Colombian Cartel Alliance Network (88 members, the largest) and tells you the Sinaloa Cartel sits at its core alongside CJNG, Los Zetas, Gulf Cartel, and the Beltrán-Leyva Organization.
Some communities are smaller but tell a sharper story. The Neo-Nazi Terror Network (26 members) connects Atomwaffen Division, Hammerskins, Feuerkrieg Division, The Base, and Blood & Honour. The Canadian Outlaw Motorcycle Gangs Alliance (23 members) is a coalition united against the Hells Angels: Rock Machine, Satan’s Choice, Popeye Moto Club, and Devil’s Disciples. The PKK-Led Revolutionary Alliance Network (17 members) links the Kurdistan Workers’ Party with Armenian, Palestinian, and Turkish leftist militant groups.
Show me communities related to motorcycle clubs. Find communities with “mafia” in the title.
The AI filters by keyword, surfacing the relevant networks.
Bridges
If someone asked "Which criminal organizations connect different communities?" the honest answer was: nobody knew. The question was too big to answer. Now it has an answer: every bridge organization, ranked by how many communities it connects, with the evidence for each cross-community edge.
Some organizations cooperate across community boundaries. A bridge is a node that connects different communities, sitting at the intersection of criminal ecosystems that share little other common ground.
Table 2: The top 10 bridge organizations, ranked by cross-community cooperation edges.
Which organizations bridge the most communities?
The Hells Angels Motorcycle Club is the top bridge, with 88 cross-community edges spanning 27 communities. It connects the cartel network, the American Mafia, the ‘Ndrangheta clans, Italian mafia alliances, and Canadian outlaw biker gangs: five worlds that share little other common ground. The American Mafia follows with 84 cross-community edges across 22 communities, linking Mexican cartels, Camorra clans, the Hells Angels network, and US street gangs. The ‘Ndrangheta bridges 28 communities with 83 cross edges, the most communities reached of any organization. The Sinaloa Cartel spans 20 communities with 72 cross edges. The Mexican Mafia spans only 9 communities but bridges the cartel network, the American Mafia, the Hells Angels, the Brazilian PCC network, and white supremacist prison gangs: five ecosystems that share almost no other common ground.
A bridge is structurally important not because it has many connections, but because its connections reach into different worlds. The Mexican Mafia connects ecosystems that otherwise never touch.
What communities does the ‘Ndrangheta bridge?
The AI lists all 28.
Triadic signals
The graph has 10,935 documented relationships, but those are only the relationships Wikipedia happens to record. Many real-world connections are undocumented.
We can infer some of these missing links from the structure of the graph itself. If two organizations share many of the same partners, or the same enemies, it is likely they have a relationship with each other, even if nobody has written it down. This is triadic closure. There are three kinds of signal:5
Common cooperation partners. Friends of friends might be friends.
Common adversaries. Enemies of enemies might be friends.
Both. A pair that shares both cooperation partners and adversaries. This is the strongest signal, because two independent structural patterns point to the same missing relationship.
I computed all three across the entire graph. The result is 2,561 candidate pairs, each scored by how many common partners and adversaries they share.
Who might the ‘Ndrangheta be secretly allied with?
The AI returns candidate pairs ranked by signal strength.
The strongest signal in the entire dataset comes from the Cleveland crime family and the Patriarca crime family. They share 8 cooperation partners (Bufalino, Chicago Outfit, DeCavalcante, Detroit Partnership, Gambino, Genovese, Hells Angels, and Los Angeles crime family) yet have no documented direct edge.
Two American Mafia families share 8 cooperation partners with no direct edge between them. The graph says they are connected. Wikipedia just hasn't written it down.
Some signals come purely from shared enemies. The Mongols MC and the Rebels Motorcycle Club share two common adversaries (Bandidos and Hells Angels) with no direct edge. The Comanchero Motorcycle Club and the Rebels Motorcycle Club share three (Bandidos, Hells Angels, and Rock Machine Motorcycle Club). Inside the Mexican cartel system, the Cártel de Santa Rosa de Lima and the Knights Templar Cartel share both cooperation partners (Gulf Cartel, Los Viagras, Sinaloa Cartel) and common adversaries (CJNG, Los Zetas). La Familia Michoacana and the Nueva Plaza Cartel share the Sinaloa Cartel as a common partner and CJNG as a common adversary.
What potential rivalries does the Sinaloa Cartel have based on shared adversaries?
The AI filters for the adversary-only signal and returns candidate pairs.
What makes this powerful is that it uses only the topology. No new data. No additional LLM calls. The graph’s structure alone encodes information about relationships that have not been explicitly recorded.
Centrality
Centrality measures how important a node is in the network. Not all nodes are equal. Some are hubs with many connections. Others sit on the shortest paths between many pairs. The AI has access to three centrality measures (degree, betweenness, and PageRank) computed across all 3,521 connected organizations, on the cooperation, conflict, and full graphs.
What is the most important criminal organization in the global network?
The AI consults the centrality rankings and answers with context: which metrics drive the ranking, how the top organizations compare, and what the edges that give them their position actually represent.
Which Mexican cartels have the most network influence?
How does the Sinaloa Cartel rank in network importance, and how does it compare to the American Mafia?
The AI cross-references centrality rankings with Mexican organizations, retrieves both profiles with their centrality ranks, and produces a comparison grounded in the numbers.
Paths
A path is a chain of relationships connecting two organizations through intermediaries. If A cooperates with B and B cooperates with C, then A and C are connected by a path of length two, even if they have no direct relationship.
Are the Yakuza and the Sicilian Mafia connected?
The AI searches for the shortest path through the graph up to 5 hops. It returns the chain of intermediaries, with the evidence quote at each step.
Does the Sinaloa Cartel cooperate with the Sicilian Mafia?
The AI searches for cooperation-only paths. If one exists, it traces the route. If not, it tells you there is no documented cooperation path and may suggest alternatives: a conflict relationship, a shorter path through any relationship type, or a shared third party.
Who are the allies of allies of Mara Salvatrucha?
The AI returns first-degree and second-degree connections, grouped by relationship type.
Countries
Every profiled organization carries a list of countries where Wikipedia documents its presence, each backed by a verbatim evidence quote. The AI can query this data directly.
What criminal organizations operate in Brazil?
The AI returns every organization with a documented footprint.
Which countries does the ‘Ndrangheta have a footprint in?
The AI lists all documented country footprints with evidence.
Which criminal organizations operate in both Colombia and Venezuela?
The multi-country intersection returns only organizations that appear in both lists.
Compare organized crime in Mexico and Colombia.
The AI retrieves organizations from both countries, examines their types and connections, and produces a comparative analysis.
Every country footprint is backed by a verbatim evidence quote from Wikipedia. When the AI says an organization operates in a country, you can open the source and read the exact sentence that documents it.
3D knowledge graph
The full network is viewable as an interactive 3D force-directed graph built with three.js. Nodes are colored by organization type, edges by relationship type. You can rotate, zoom, click any node to see its details, and filter by relationship type.
The 3D view does something a 2D layout cannot: it uses the third dimension to disentangle dense clusters. In a 2D force layout, highly connected hubs pull everything into a hairball. In 3D, you can rotate around a cluster and see its internal structure.
World footprints map
The footprints map shows country-to-country operational presence on a world map. Each organization’s country of origin and its documented footprints create arcs across the map.6 Each arc is backed by a verbatim evidence quote from Wikipedia. Not a statistical guess. A specific sentence.
What this enables
There is, to my knowledge, no larger directory of criminal organizations anywhere. Wikipedia’s own list of criminal enterprises, gangs, and syndicates covers a few hundred groups. CRIMENET comes closer than anything else: nearly 5,000 organizations mapped across nearly 11,000 relationships, each backed by a specific Wikipedia source.
Table 3: What is in the CRIMENET knowledge graph.
This was an accidental achievement. The goal was to build a knowledge graph of how criminal organizations relate to each other, not to catalog every group mentioned on Wikipedia. But because the pipeline reads nearly 1,500 articles across four languages and extracts every organization mentioned in each one, it ended up capturing the vast majority of criminal organizations documented on English, Italian, Portuguese, and Spanish Wikipedia. CRIMENET became the comprehensive list that did not exist.
Before CRIMENET, if you wanted to know which criminal organizations operate in a given country, or how two specific groups relate to each other, or which organizations bridge different criminal ecosystems, you had to read hundreds of Wikipedia articles and piece it together yourself. The information existed but was not structured.
Now you can ask any question in plain English and get an evidence-backed answer that cites specific Wikipedia sentences. You can trace the exact relationship between any two organizations with verbatim evidence quotes. You can browse 224 communities of organizations that cooperate with each other. You can identify which organizations bridge different criminal ecosystems. You can discover 2,561 candidate relationships that likely exist but have not been documented, inferred purely from the structure of the graph.
Because every edge carries a versioned Wikipedia URL, any claim can be verified in under thirty seconds: open the link, search for the quote, confirm it is there.
How it is built
The raw material is 1,418 Wikipedia articles about criminal organizations across English, Italian, Portuguese, and Spanish Wikipedia. The extraction pipeline fetches each article, cleans the HTML into plain text, then sends it to DeepSeek to identify organizations and the relationships between them: cooperation, conflict, and other.7 The pipeline then profiles each organization from its own Wikipedia article (description, country of origin, time period, defunct status, and country footprints, each with its own evidence quote) and merges everything into a single graph, folding variant names across languages so the Sinaloa Cartel and the Cártel de Sinaloa become one node.
An LLM extraction pipeline produces errors: it conflates names, misses duplicates, invents edges between orgs that were merely mentioned in the same paragraph, and sometimes pulls in non-criminal entities. I built an audit pipeline that targets each class of error, one audit per error type.8 The correction loop is designed to be iterative: spot an error, add one line to a corrections file, re-run the apply step. Manual overrides always win over auto-suggestions.
Limitations
Wikipedia coverage skews toward English-language and Western sources. The pipeline processes four languages (English, Italian, Portuguese, and Spanish), which is better than one but still leaves gaps. Because the data comes from Wikipedia, the graph inherits the biases and gaps of its source material.
Relationships are aggregated across time. Every edge carries its own time period, so the data is there, but the graph view flattens time into a single snapshot.
The graph models organizations and their relationships, not individuals or cyber criminal groups. Both are out of scope for now.
None of this is fatal. The architecture is designed for iteration: add more languages, widen the scope, add temporal weights, promote individuals to nodes. Each is a pipeline extension, not a rewrite.
Open source
Everything is open source. The full pipeline (extraction, audit, build, app) is on GitHub. The live app runs entirely in your browser.
The project is designed to be extended. The pipeline is modular: each step reads from and writes to a distinct place. The audit pipeline is modular: each audit targets one class of error. The build scripts are independent: add a new data file by writing one Python script and one JS consumer.
If you find an error, want to add a Wikipedia article, or have ideas for new features, open an issue or pull request on GitHub.
If you have questions or ideas, get in touch.
-
Of the 4,505 organizations, 1,032 are profiled from their own Wikipedia article (with full descriptions, aliases, country of origin, country footprints, time periods, and defunct status), 3,473 are mention-only (they appear in other orgs' articles but have no dedicated Wikipedia page), and 317 are flagged as defunct. 3,521 organizations (78%) are connected to at least one other; 984 (22%) are isolated. ↩︎
-
The evidence data is split into 128 shard files, keyed by a hash of the organization name. The browser only fetches the shard that contains the requested org. Each pair’s relationship summary is also pre-built offline from the LLM and loaded the same way. ↩︎
-
GraphRAG stands for Graph Retrieval-Augmented Generation. A standard RAG system retrieves text chunks and asks the model to reason over them. A GraphRAG system retrieves structured data from a knowledge graph by calling tools that traverse nodes, edges, communities, and paths. The 13 tools available to the AI are documented in the GitHub repository. ↩︎
-
Infomap simulates a random walk across the cooperation network. The walker tends to get trapped inside dense clusters of cooperating organizations and only occasionally jumps between them. Compressing a description of where the walker goes naturally reveals community structure: organizations that cooperate with each other more than with outsiders form a cluster. The first labeling run calls the DeepSeek API. Subsequent rebuilds are cached by membership, so re-running when the partition is unchanged costs zero API calls. ↩︎
-
Common cooperation partners: two organizations that share at least 3 cooperation partners but have no direct edge between them. Common adversaries: two organizations that share at least 2 common adversaries but have no direct edge between them. The “Both” signal requires both conditions simultaneously. ↩︎
-
The map is on footprints.html. Each arc represents an organization’s footprint from its country of origin to a country where it operates. ↩︎
-
Cooperation covers alliances, joint operations, and commercial dealings. Conflict covers fighting, war, and clashes. Other covers structural ties (sub-units, splinters), truces, and unspecified links. The pipeline proceeds in five steps: (0) resolve Wikipedia URLs to versioned URLs; (1) fetch HTML and extract clean body text with infobox tables; (2) send text to DeepSeek to extract organizations and relationships; (3) DeepSeek enriches each profiled organization with description, aliases, country, time period, defunct status, and country footprints; (4) merge all fragments, auto-dedup, attach profiles, and normalize country names. Full details in the GitHub repository. ↩︎
-
Seven steps in total. Audits 0 through 5 find wrong merges, missed merges, spurious edges, unsupported country links, umbrella terms, and non-criminal entities. Audit 6 provides an LLM second opinion that can veto identity corrections. Audit 7 applies all corrections, with manual overrides from a curated file always winning over auto-suggestions. Full details in the GitHub repository. ↩︎