When a government charges 1,172 political prisoners, does it charge them all the same way? We built a formal knowledge graph over Cuba's political-prisoner registry to find out. The answer is no. There are two distinct prosecutorial playbooks, and which one a prisoner receives has nothing to do with who they are.
parseable charges
charges in corpus
stability (100/100)
fully reproducible
Cuba does not charge all protesters the same way. There are two distinct playbooks.
The Prisoners Defenders registry is the most comprehensive public record of Cuban political detention. We encoded every record into a formal knowledge graph and measured which charges tend to appear together across the entire population. Two clusters emerged. The government applies one set of charges to some protesters and a completely different charge to others. The two groups almost never overlap.
The natural assumption is wrong.
The obvious hypothesis: Cuba assigns the harsher playbook to prisoners who are more visible, more connected, or more politically organized. A well-known dissident gets the heavier charge. An unknown protester gets the lighter bundle. We tested this. It is wrong.
| Hypothesis we tested | Result | What the data showed |
|---|---|---|
| Well-documented prisoners get the heavier charge | WRONG | 28.6% vs 29.5% — no difference |
| IACHR-protected prisoners get the heavier charge | WRONG | 25.0% vs 30.5% — actually reversed |
| Politically affiliated prisoners get the heavier charge | WRONG | No significant association at all |
| Arrested during July 11 protests → heavier charge | SIGNIFICANT | OR = 1.42, p = 0.027 |
Which playbook a prisoner receives has nothing to do with who they are. It depends entirely on when they were arrested. The state applies different charge bundles to different waves of protest, not to different categories of person. Under UDHR Articles 10 and 11, that is the definition of arbitrary.
We asked a blind algorithm to check our work. It found the same two playbooks.
A natural objection: maybe the analyst drew the boundary between the two playbooks in the wrong place. So we ran a separate test. We gave a standard grouping algorithm (Louvain community detection) the raw charge data and told it nothing about our hypothesis. Find the natural groups yourself.
Nine reproducible stages from raw HTML to formal submission.
Each stage is a separate Python script. Each script's output is saved and verifiable. Any reviewer can re-run any step against the same data snapshot and verify every number.
UDHR and customary international law. Not the ICCPR.
Cuba has signed but not ratified the International Covenant on Civil and Political Rights. Most submissions to the WGAD about Cuba cite the ICCPR. Those citations are technically moot. Every legal argument in this project routes through the Universal Declaration of Human Rights and customary international law per WGAD Deliberation No. 9.
Draft submissions to three international bodies are complete: the UN Working Group on Arbitrary Detention (Categories II and III), the Inter-American Commission on Human Rights (American Declaration Articles XVIII, XXV, XXVI), and a stakeholder submission for Cuba's Fifth Cycle Universal Periodic Review in 2028. Nine verified WGAD Cuba opinions (2021 to 2025) anchor the submissions, including Opinion 63/2021 which establishes "recurrent pattern" language.
A proof of concept for a class of capability.
Unstructured public records, in this case a website of prisoner records, can be converted into a formal knowledge graph that reveals corpus-level patterns invisible in any individual case file. The two-playbook finding does not exist in any single prisoner's file. It becomes visible only when you analyze the entire population together. That is the core value of structural intelligence.
The same approach applies to any domain where public records exist but are not structured for analysis: corporate registries, court dockets, sanctions lists, offshore leaks. If the pattern interests you, or if you work in a domain where this kind of analysis could be useful, I'd welcome the conversation.