Legal pluralism

Fitting a trained judge to each community

One trained system does the judging. What varies by community is how that system is adapted to the community where it runs and who receives the ruling. The papers adapt it in two ways. The first uses a set of community-specialized expert models, with an allocator that picks which expert rules on a given post and an explainer that gives the reason in that community's own vocabulary. The second trains a single model on data pooled across a hundred communities to capture what they share. It then sets a separate decision threshold for each community and refers its decisions to that community's own human moderators. The two differ in where the community is represented, either in separate experts or in a threshold and referral process on top of a shared model. Both end the same way, with one ruling for one case. In both, the community's own accumulated history decides where its line falls and who reviews the ruling.

The method (highlighting differences with Legal pluralism)

Scroll the diagram sideways to see all of it.

Use it in codefrom aiag.cases import CommunityJudge
from aiag import LM
from aiag.cases import CommunityJudge

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
judge = CommunityJudge(lambda posts: lm.yes([f"Post: {p}\nIs this post rude?" for p in posts]))  # one shared scorer

# Each community sets its own threshold from its past decisions (1 = removed); borderline calls go to its moderators
judge.calibrate("r/RoastMe", ["You look like a thumb", "Nice smile", "Your haircut lost a fight"], [0, 0, 0])
judge.calibrate("r/aww", ["Ugly dog", "So cute!", "What a goofy cat"], [1, 0, 0])
print(judge.decide("r/aww", ["That cat looks dumb"]))  # "remove", "keep" or "refer"

pip install aiagEvery method in aiag Library on GitHub

Secondary placement in the taxonomy

  • Role pluralism — The per-community experts are separate trained models selected by a routing step, which is the steerable-persona architecture. However, the approach is placed primarily in Legal pluralism because each expert is built from its own community's history of decided cases rather than from a persona description.

The analysis below uses the primary placement in the taxonomy.

Concept Analysis: Theoretical Foundations

Each concept is read twice: whether the approach carries it over, and whether the approach's own sources claim it. A concept that the approach claims but does not carry over is a shortfall. A concept that it neither claims nor carries over is an omission, which marks a gap in the field rather than a failure of the work.

Plural normative orders

PresentClaimed · preserved

Definition (John Griffiths, What Is Legal Pluralism?, 1986)

Several bodies of norms operate at once within one social field. Rather than one official legal system with exceptions, there are multiple active systems of rules side by side, each generating its own decisions.

Analysis

Several bodies of decisions are in force at once, and each is built from its own community's history. MoMoE instantiates seven experts, each specialized to one community. Decoding the Rule Book recovers each subreddit's standard from that subreddit's own removals and shows that the recovered standards differ. These are separate living orders rather than one official rulebook with tolerated local variation. One complication is that MoMoE's main contribution is applying those experts to thirty communities they were not built from. The lineages are therefore real, but their reach is not confined to the communities that generated them.

Interlegality

AbsentOmission

Definition (Boaventura de Sousa Santos, Toward a New Legal Common Sense, 2002)

Normative orders do not just sit in parallel but interpenetrate. People live at their intersections and are subject to several at once. The boundaries themselves are porous.

Analysis

The orders are disjoint by construction. A post belongs to exactly one community, and neither system can represent a case that sits at the intersection of two standards. Generalizing to thirty unseen subreddits is transfer rather than interpenetration. It treats a new community as another instance of the same kind, rather than as an order that overlaps with the others.

Choice of forum

PartialShortfall · partially preserved

Definition (Conflict-of-laws practice)

When several lineages of decisions are in force, a stated rule must assign each new case to one of them. Otherwise, parties simply shop for the forum that favors them, which is the failure predicted for this regime.

Analysis

MoMoE's Allocate operator routes each case to a body of decisions. This is the function that conflict-of-laws asks for, and nothing else in the encyclopedia performs it. However, the allocator is learned and optimized for accuracy, and it is not a stated rule. Nobody can be told in advance which community's standard will judge their case, nobody can invoke the rule, and nobody can contest the allocation. Decoding the Rule Book has no routing step at all.

Concept Analysis: Newly Introduced

A learned allocator in place of a forum rule

Added

Conflict of laws exists because someone must be able to say, in advance and with reasons, which body of law hears a case. A learned allocator routes the same case to the same kind of decision-maker without any of this. It produces an answer, but no one can be told why this forum was chosen rather than another.

Papers

No method has been built for this approach yet. It rests on the work listed below.

Precedent from outside AI

Work from law, political theory, or another discipline that supplies the tradition this approach is read against.

arXiv:2505.14483PrecedentBuilt

Uses seven community-specialized moderation experts and five norm-violation experts. The framework also has an allocator that picks which expert judges a given post, an aggregator, and an explainer that gives the reason in that community's terms.

CodeMoMoE
from aiag import LM
from aiag.cases import MoMoE

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
experts = {
    "r/science": [("homeopathy cured me", True), ("vaccines are a hoax", True), ("great paper", False), ("which journal?", False)],
    "r/gaming": [("buy cheap skins here", True), ("free coins, click", True), ("what a boss fight", False), ("any tips?", False)],
}

# One expert per community; an allocator weights the experts for each post and an explainer gives the reason
momoe = MoMoE(lm, experts)
print(momoe.decide("r/gaming", ["get free skins at my site"]))  # "remove", "keep" or "refer"
print(momoe.explain("r/gaming", ["get free skins at my site"]))  # the reason, in the community's own terms
  • MoMoEClassifieraiag/cases/legal_pluralism.py:167 MoMoE: moderation experts trained per community or per kind of norm violation, an allocator that weights the experts for each post, an aggregator that combines their verdicts, and an explainer that gives the reason in the target community's terms (Goyal et al., 2025).

pip install aiagEvery method in aiag Library on GitHub

doi:10.1145/3359276132 citationsPrecedentBuilt

An open-source moderation bot that learns from millions of moderator removal decisions taken across 100 communities. It was run live in a large subreddit. It refers its judgments to the host community's own moderators for review, and a separate threshold is set for each community.

CodeCrossmod
from aiag import LM
from aiag.cases import Crossmod

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
sources = {
    "r/science": [("you idiot", True), ("great paper", False)], "r/politics": [("shut up, moron", True), ("good point", False)],
    "r/gaming": [("free coins, click", True), ("nice play", False)],
}
crossmod = Crossmod(lm, sources, norms={"incivility": [("you idiot", True), ("shut up", True), ("thanks!", False)]})

# Other communities' classifiers vote on each comment; r/books adds incivility at its own threshold
crossmod.configure("r/books", {"incivility": 0.8})
print(crossmod.agreement(["only a moron likes this book"]))  # share of source communities that would remove it
print(crossmod.decide("r/books", ["only a moron likes this book"]))  # "report" or "keep"
  • CrossmodClassifieraiag/cases/legal_pluralism.py:201 Crossmod: removal classifiers trained on many source communities score each new comment, the share that would remove it is its agreement score, macro-norm classifiers add theirs, and comments over the host community's own thresholds are reported to its moderators for review rather than removed (Chandrasekharan et al., 2019).

pip install aiagEvery method in aiag Library on GitHub