Maathis-com/ohada-ccja-corpus
OHADA-CCJA Court Decisions Corpus Dataset Description A curated corpus of 4,059 court decisions from the Cour Commune de Justice et d'Arbitrage (CCJA), the supranational court of the Organisation pour l'Harmonisation en Afrique du Droit des Affaires (OHADA). OHADA harmonizes business law across 17 African member states: Benin, Burkina Faso, Cameroon, Central African Republic, Chad, Comoros, Democratic Republic of Congo, Republic of Congo, Côte d'Ivoire, Equatorial… See the full description on the dataset page: https://huggingface.co/datasets/Maathis-com/ohada-ccja-corpus.
OHADA-CCJA Court Decisions Corpus
Dataset Description
A curated corpus of 4,059 court decisions from the Cour Commune de Justice et d'Arbitrage (CCJA), the supranational court of the Organisation pour l'Harmonisation en Afrique du Droit des Affaires (OHADA). OHADA harmonizes business law across 17 African member states: Benin, Burkina Faso, Cameroon, Central African Republic, Chad, Comoros, Democratic Republic of Congo, Republic of Congo, Côte d'Ivoire, Equatorial Guinea, Gabon, Guinea, Guinea-Bissau, Mali, Niger, Senegal, and Togo.
This dataset provides structured access to CCJA jurisprudence spanning over two decades (1997–2023), making it a unique resource for African legal NLP research.
Why This Dataset Matters
Legal NLP is a rapidly growing field, yet virtually all existing benchmarks and datasets focus on Common Law (US, UK) or EU/Continental European legal systems. African legal systems — and in particular pan-African harmonized law — are entirely absent from the research landscape. This dataset addresses that gap by providing:
- The first structured, ML-ready corpus of OHADA CCJA decisions in any language
- Rich annotation layers — not just full text, but separately extracted dispute summaries, judicial reasoning, rulings, legal domain labels, and cited articles
- Pan-African geographic coverage — cases involving parties and disputes from all 17 OHADA member states
- Temporal depth — decisions spanning from 1997 to 2023, enabling longitudinal legal analysis
Supported Tasks
Languages
French (fr) — the working language of the OHADA CCJA.
Dataset Structure
Data Fields
Note on field completeness: This dataset was compiled from two complementary sources with different annotation depths. The "reasoning" field (court's motif) is available for approximately 1,100 cases from Source 1. The "articles_cited", "plaintiff", and "defendant" fields are primarily available from Source 2 (approximately 3,500 cases). The "source" column indicates provenance, allowing researchers to filter for task-specific subsets. See "Source Data" below.
Data Splits
Splits are stratified by legal_domain to preserve class proportions across all splits.
Legal Domain Distribution
The legal_domain field covers 16 categories across the major branches of OHADA harmonized law:
Dataset Creation
Source Data
The corpus was compiled from two complementary sources of publicly available CCJA decisions:
- Source 1 (1,115 unique cases after deduplication): Decisions with extracted judicial reasoning (
reasoning/motif), dispute summaries, and rulings. These are typically original court decision texts scraped from OHADA legal databases. - Source 2 (3,642 unique cases after deduplication from 10,410 raw records): Decisions with cited legal articles (
articles_cited), detailed party names (plaintiff/defendant), and descriptive case type labels (case_type). These include annotated case analyses with structured metadata.
548 cases were present in both sources and were merged to combine the richest available annotations. The final dataset contains 4,059 unique cases.
Field availability by source:
Preprocessing
- Deduplication: Content-hash-based deduplication removed 6,768 duplicates from Source 2 and 33 from Source 1, plus 3 cross-source duplicates
- Label normalization: Spelling and accent variants in
legal_domainwere harmonized (e.g., "suretés" → "sûretés"), reducing from 18 raw labels to 16 clean categories - Date parsing: Dates converted from mixed formats (dd/mm/yyyy and French text like "27 avril 2015") to ISO 8601. A small number of implausible dates (pre-1995 or post-2024) resulting from parsing errors were set to null
- Schema unification: Columns standardized to English names with consistent types
- Cross-source merge: For the 548 overlapping cases, the most complete value for each field was retained using a coalesce strategy (e.g.,
reasoningfrom Source 1,articles_citedfrom Source 2,plaintiff/defendantpreferring Source 2 where populated)
Ethical Considerations
- Public records: All CCJA decisions are matters of public record, publicly accessible through official OHADA channels
- Party names: Names of litigants appear as published in official court records. Researchers working with this data should consider whether their downstream applications require further anonymization
- Jurisdictional scope: OHADA law governs business disputes; this corpus does not contain criminal cases or cases involving minors
- Class imbalance: The corpus reflects the CCJA's actual caseload, which skews toward enforcement law (~53%) and commercial disputes. This distribution mirrors real litigation patterns but may not represent the full breadth of legal issues in OHADA member states. Researchers should account for this imbalance in model training and evaluation
Licensing
This dataset is released under CC-BY-4.0. OHADA court decisions are public legal documents. The added value of this dataset lies in its structuring, cleaning, annotation, and packaging for ML research.
Usage
Loading with HuggingFace Datasets
from datasets import load_dataset
dataset = load_dataset("Maathis-com/ohada-ccja-corpus")
# Access splits
train = dataset["train"]
print(f"Training examples: {len(train)}")
print(train[0])Example: Legal Domain Classification
from datasets import load_dataset
dataset = load_dataset("Maathis-com/ohada-ccja-corpus")
# Use dispute_summary as input, legal_domain as label
train_texts = dataset["train"]["dispute_summary"]
train_labels = dataset["train"]["legal_domain"]Example: Filter for Cases with Court Reasoning
# ~1,100 cases have the court's reasoning (motif)
reasoning_subset = dataset["train"].filter(lambda x: x["reasoning"] is not None)
print(f"Cases with reasoning: {len(reasoning_subset)}")Example: Filter for Cases with Cited Articles
# ~3,500 cases have cited legal articles
articles_subset = dataset["train"].filter(lambda x: x["articles_cited"] is not None)
print(f"Cases with cited articles: {len(articles_subset)}")Example: Full-Feature Subset (Merged Cases)
# 546 cases have ALL fields populated (from both sources)
full_subset = dataset["train"].filter(lambda x: x["source"] == "both")
print(f"Cases with all fields: {len(full_subset)}")Citation
If you use this dataset in your research, please cite:
@dataset{ohada_ccja_corpus_2026,
title={OHADA-CCJA Court Decisions Corpus: A Dataset for African Legal NLP},
author={Foutse Yuehgoh, Priyanka N, Patrick NGUETCHOUESSI},
year={2026},
url={https://huggingface.co/datasets/Maathis-com/ohada-ccja-corpus},
note={Submitted at Deep Learning Indaba 2026, Nigeria}
}Contact
For questions about this dataset, please contact the dataset creator or open an issue on the HuggingFace repository.
