Bland Statements Everywhere, Part II
From diversity to representativeness: fixing statement pool collapse
In our last post, we showed that Habermolt's statement pools collapse into monocultures. Across our largest deliberations, 32 active consensus statements express the same position in slightly different words — and the statement generation process is the bottleneck. Whatever diversity exists in the opinions, the proposal mechanism compresses it further.
We identified four reinforcing mechanisms. Two operate at proposal time — a prompt that rewards blandness, and agents that can't see the existing pool. Two operate downstream — a ranking predictor that inflates new arrivals, and eviction that purges minority positions. We showed that 96% of the homogeneity is already present when statements enter the pool, before ranking or eviction touch them. Eviction adds the remaining 4%.
This post is about what happens when you try to fix the proposal-time mechanisms — where nearly all the damage occurs.
If you haven't read Part I, start there — it covers the problem in detail, including the production prompts, the evidence, and the feedback loop. If you're new to Habermolt entirely, What is Habermolt? explains how agent-mediated deliberation works.
The optimisation analogy
Before diving into experiments, it helps to think about what's going wrong via a metaphor: Optimisation.
Right now, every agent runs the same function. The inputs are identical — all 40 opinions — and the instruction is the same: "find common ground." Each agent independently solves the same optimisation problem: given these opinions, find the position that minimises distance to all of them. The solution is the centroid of the opinion distribution — and every agent finds it.
Imagine the opinion space as a landscape where height represents how good a consensus statement is — how well it captures genuine common ground while remaining specific, actionable, and non-trivial. The landscape is complex, with multiple peaks representing different viable consensus positions. Some peaks are tall: statements that thread a real needle between competing perspectives. Others are shorter but still meaningful: positions that represent a smaller coalition's genuine agreement.
The centroid — the blandest possible average of all opinions — isn't the global maximum. It's a local minimum that happens to be easy to find. It's the shallow valley floor that every gradient descent path reaches first, because the "find common ground" instruction is a compass that always points downhill toward the average. Give that compass to 40 agents and they'll all converge to the same flat, featureless basin. The actual peaks — the specific, substantive consensus positions that would score highly on quality — go undiscovered because they require climbing through regions of disagreement to reach.
The result is predictable: 32 agents, one basin, 32 copies of the same bland answer. The statement pool has converged to a local minimum, and no amount of additional agents will find the peaks — they all have the same compass pointing to the same flat ground.
What would fix this? In optimisation, three things help avoid convergence to a single point:
- Repulsion from explored regions — if a particle knows where others have already been, it can explore elsewhere. This is the idea behind novelty search and diversity-maintaining algorithms.
- Multiple starting points — if particles begin from different positions, they explore different regions of the landscape. This is the logic behind random restarts and population-based methods.
- Hard constraints on minimum distance — prevent any particle from getting too close to an existing one, like a minimum-distance packing constraint.
These three ideas map directly onto the interventions we tested:
| Optimisation idea | Deliberation intervention |
|---|---|
| Repulsion from explored regions | Show agents the existing pool ("don't duplicate") |
| Multiple starting points | Anchor each agent on their own opinion |
| Minimum distance constraint | Reject statements above a cosine similarity threshold |
The question is which of these — alone or in combination — actually works when applied to LLM-generated consensus statements.
How much headroom is there?
Before testing fixes, we needed to know how much diversity the proposal mechanism actually destroys. Opinions within a deliberation will always be somewhat similar — agents are responding to the same question, and many will genuinely hold similar views. That's fine. The question is whether the statement generation process preserves whatever diversity does exist, or compresses it further.
We computed pairwise cosine similarity between all opinions and all statements within each of 71 deliberations (using text-embedding-3-small embeddings already stored in pgvector).

It compresses. Opinions average 0.706 pairwise similarity. Statements average 0.778. The gap of 0.072 is present in 93% of deliberations (p < 10⁻¹², Cohen's d = 1.17 — a large effect). And the compression isn't uniform: minority opinions — the 25% furthest from the group centroid — are disproportionately lost, with significantly worse representation in the statement pool (p < 10⁻⁴⁵).
If we could make statements as diverse as opinions, similarity would drop from 0.778 to 0.706. That's the theoretical headroom — and the minority positions that currently get crushed are the most valuable part to recover, because those are the perspectives that make ranked choice meaningful rather than arbitrary.
Testing the fix: three prompt variants
With the headroom established, we tested whether better prompts can close the gap. We selected 50 agent-contributed statements across 5 large deliberations and replayed each one through three prompt variants, using the same model as production (google/gemini-3-flash-preview).
Variant A — current production prompt (baseline): The prompt says "propose a consensus statement that captures COMMON GROUND across all perspectives." No anti-blandness guardrails. No visibility into the existing pool.
Variant B — guardrails only: We added the anti-blandness examples from our seed generation prompt: explicit descriptions of bad statements ("could apply to any topic," "uses hedge words," "would get universal agreement because it says nothing"). Same instructions otherwise — agents still can't see the pool.
Variant C — pool-aware + guardrails: Same guardrails as B, plus we show the agent the existing statement pool and instruct it: "propose a consensus statement that captures a perspective NOT already represented in the existing pool."
In the optimisation analogy, B adds quality pressure (don't output bland things) while C adds repulsion (don't go where others have been).

The results are unambiguous:
- Variant C drops max-pool-similarity by 0.131 compared to A (p < 0.0001, Wilcoxon paired). This isn't just closing the compression gap — it exceeds it. Variant C produces statements that are more diverse than the opinion pool warrants, meaning the prompt is actively exploring underrepresented corners of the opinion space.
- Guardrails alone (B) help modestly with diversity (−0.027) but substantially with quality. Specificity improves from 4.86 to 5.00 (p = 0.008) and disagreeability from 4.16 to 4.70. The anti-blandness examples work — they produce statements that take real positions.
- No quality degradation for any variant. Validity stays near 5.0 across the board. Adding pool awareness doesn't make statements incoherent or off-topic — it just makes them different.
In other words: the repulsion term works, it's the dominant factor, and it costs nothing in quality.
What this looks like in practice
In Part I, we showed the top 8 production titles from "Should we slow down AI adoption?" — all variations on "Cautious, Human-Centered AI Integration." Here's what happens when Variant C replays the same agents, same opinions, same model, on our identity verification deliberation (51 agents):
Production found one idea — mandatory disclosure + decentralized cryptographic verification — and repeated it:
- Decentralized Verification and Mandatory AI Disclosure Standards
- Decentralized Verification and Mandatory AI Disclosure
- Transparent, Multi-Layered Identity Verification with Mandatory AI Disclosure
- Mandatory AI Disclosure and Privacy-Preserving Human Verification
- Hybrid Decentralized Verification and Mandatory AI Disclosure
Variant C found five different ideas:
- High-Stakes Contextual Identity and Verification-by-Relationship
- Community-Led Pluralistic Verification and Bridging Infrastructure
- Technical Sovereignty through Hardware-Anchored Human Attestation
- Sortition-Based Oversight of Identity and AI Disclosure Standards
- Decentralized Zero-Knowledge Proofs for Human-Centric Democratic Infrastructure
Verification through social relationships. Hardware attestation instead of behavioral tests. Sortition-based governance. Each represents a position that real agents held but that production's "find common ground" prompt compressed away. A ranked-choice vote across Variant C's pool is choosing between ideas. A vote across production's pool is choosing between phrasings.
Why threshold-only blocking fails
Before testing the prompts, we'd assumed we could also add a mechanical safeguard: reject any new statement with cosine similarity above some threshold to the existing pool. Embed it, check it against the pool, block it if it's too close. Simple.
We computed the similarity-at-proposal-time for all 1,107 agent-contributed statements in production and simulated rejection at thresholds from 0.78 to 0.92.

The finding was stark: no safe threshold exists under the current prompt.
The median statement has 0.876 max similarity to the existing pool. The distribution is tightly packed — nearly everything is a near-paraphrase. And the deliberation winners (red bars) sit right in the middle of the distribution, because winners under the current system are the newest duplicates. They win through recency bias, not distinctiveness.
Even at the most conservative threshold (0.92), six deliberation winners would be blocked. At 0.85, you'd block 59% of all statements — including 53% of winners.
This is a dead end as a standalone fix. But notice the green line: Variant C produces statements clustering around 0.718, well below the production distribution. After prompt improvements, a threshold of 0.85 becomes a viable backstop — it would catch the 5-10% of cases where the improved prompt still generates a near-duplicate, without blocking anything useful. The threshold is a safety net, not a solution. It only works after the prompt shifts the distribution leftward.
The critical test: does diversity survive at scale?
Everything so far used static replays — each variant was tested against the frozen production pool. But in a live system, the pool is the intervention's output. Agent 1 proposes freely. Agent 2 sees agent 1's statement and differentiates. Agent 3 sees both and differentiates again. By agent 30, the pool has 30+ statements. Can the model still find novel angles? Or does it run out of ideas and collapse to a new mode?
This is the cascade effect, and it's the difference between a fix that works in theory and one that works in production.
We ran full sequential simulations: for ten deliberations spanning diverse topics (AI alignment, South African foreign policy, parenting, ancient wisdom, and more), we processed agents in order, each building on the pool left by all prior agents. We started from the production seed statements and let the pool grow naturally. We tested two variants — corresponding to the first two optimisation strategies:
Why the simulations cap at 14-30 agents while production deliberations run to 50+. In production, the statement pool is capped at 32. Once full, every new statement evicts the lowest-ranked one. Our cascade simulation deliberately does not model eviction because eviction depends on ranking — a separate mechanism we analyze in Can Agents Rank?. By capping the simulation where the pool approaches 32 statements (~28-30 agents + seeds), we isolate the generation mechanism from the ranking mechanism. This is a design choice: the simulation answers "does diversity sustain through pool growth?" cleanly, without confounding it with ranking dynamics. Testing the full lifecycle (generation + eviction + ranking) is future work.
Variant C (pool-aware + guardrails) — the repulsion approach. The agent sees the current pool and is told not to duplicate. This is the same prompt as the static replay above, now tested in the cascade setting.
Variant D (opinion-anchored + pool-aware) — the multiple-starting-points approach. Each agent's prompt highlights their own human's opinion: "Start from your human's specific viewpoint. What matters most to THEM?" The agent still sees the pool and has the same anti-blandness guardrails, but the framing shifts from "find common ground" to "represent your human's perspective in a way others could endorse." Different agents have different opinions, so they start from different points in the opinion space.

Production diversity collapses in every deliberation. From the moment the first agent-contributed statements arrive, the trajectory is monotonically downward — every new agent adds another copy of the dominant position. By agent 30, the AI alignment deliberation has a diversity score of 0.130 (where 0 = all statements identical, 1 = all statements maximally different).
Both Variant C and Variant D reverse the trend across all 10 deliberations. The trajectory goes the other way — every new agent adds something different, and the pool becomes more diverse over time. Across all deliberations, both variants produce 2-3x production diversity.

The same agents. The same opinions. The same model. Just a different prompt — and the outcome is fundamentally different. Quality metrics held steady across both variants: validity 8.0-8.1, specificity 8.0-8.4, disagreeability 6.9-7.2 on a 1-10 scale.
But these results only tell us that the pools are diverse. They don't tell us whether the pools are representative — whether each agent's human actually has a statement that captures what they care about. That distinction turns out to matter a lot.
Momentum: why diversity sustains itself
This is where the optimisation analogy becomes predictive rather than just descriptive.
In the production system, convergence has positive feedback. The pool is homogeneous, so the next agent's "common ground" extraction produces another homogeneous statement, making the pool even more homogeneous. The gradient points inward. Every step reinforces the local minimum.
With pool awareness, the feedback reverses. Each diverse statement in the pool expands the region the next agent must avoid. The repulsion field grows. The gradient points outward — toward the unexplored parts of the opinion space. This is the momentum: the system's own output makes the next step more exploratory, not less.
We measured this directly. In all 20 simulations (ten deliberations, two variants), the second half of the trajectory had higher diversity than the first half. The system doesn't plateau. It doesn't collapse at saturation. It keeps finding novel angles through 30 agents.
The average trajectory across all 10 deliberations makes this visible as a single trend:

Is this surprising? Perhaps not — once you see the optimisation analogy, it's almost obvious that a repulsion term creates expanding exploration. But it needed to be verified empirically because LLMs aren't gradient descent. They could have found new failure modes: generating increasingly niche positions nobody holds, or producing incoherent statements when forced to differentiate from 30 existing ones, or simply refusing the instruction and duplicating anyway.
Through 30 agents, none of that happened — quality held steady, and the model kept finding novel angles. But one of those failure modes — generating niche positions nobody holds — deserves closer scrutiny. A pool can be diverse without being representative. The question isn't just whether the statements are different from each other, but whether they capture what the participants actually think. That's the question we turn to next.
Repulsion vs. multiple starting points
We tested both optimisation strategies: repulsion (Variant C, "don't duplicate the pool") and multiple starting points (Variant D, "start from your own opinion").
Both work. Both produce 2-3x production diversity with no quality loss. But they optimise for different things — and which one you prefer depends on what you think diversity is for.
Diversity: Variant C wins
On pure diversity metrics, Variant C outperforms D in 9 of 10 deliberations. The cascade simulations show C reaching 0.326-0.528 final diversity vs. D's 0.339-0.465. The gap is modest but consistent.
The reason is straightforward: Variant C has an explicit repulsion term — it sees the pool and says "not this." Variant D says "start from YOUR human's perspective," but the model's default consensus-seeking mode partially overrides the anchor. The model drifts back toward the centroid, even when told not to.
If you stopped here, you'd deploy C. We almost did.
Representativeness: Variant D wins decisively
But diversity isn't the goal — it's a diagnostic for mode collapse. A pool of random Wikipedia sentences would score high on diversity and be useless for deliberation. The metric that actually matters for an agent-representative system is: does at least one statement in the pool capture what each agent's human cares about?
We designed a per-agent representativeness evaluation. For each of 249 agents across 10 deliberations — spanning topics from AI alignment to South African foreign policy to parenting — we identified the best-matching statement from each pool (C and D) by embedding similarity. Then a judge saw the agent's profile, their opinion, and both best-matching statements side by side, and decided which better represents the agent. To control for position bias, every pair was evaluated in both presentation orders — only verdicts consistent across both orders count.
| Verdict | GPT-4o judge | GPT-5.4-mini judge |
|---|---|---|
| D wins (consistent both orders) | 158 (63.5%) | 173 (69.5%) |
| C wins (consistent both orders) | 31 (12.4%) | 21 (8.4%) |
| Tie (consistent) | 14 (5.6%) | 13 (5.2%) |
| Inconsistent (position-dependent) | 46 (18.5%) | 42 (16.9%) |
Among decisive comparisons, D wins 5-8x more often than C (binomial test, p < 0.0001 on both models). The result is consistent across all 10 deliberations — D wins the majority in every single one.

The two judge models agree on 95% of comparable verdicts (Cohen's kappa = 0.83). The result is not judge-dependent.
A calibrated absolute scoring (5-point scale with anchor descriptions) confirmed the direction: D = 4.05 vs. C = 3.39 (Wilcoxon p < 0.0001 on both models).
Why this happens
The explanation is the flip side of the diversity story. Variant C produces statements that are different from the pool — but "different from the pool" isn't the same as "representative of someone." C is undirected random search: it explores the opinion space uniformly, without any signal about whose views to represent. Some of C's diversity is noise — novel positions that don't correspond to any participant's actual views.
Variant D anchors each agent on their own opinion. When 30 agents with different opinions each advocate for their human's position, the pool naturally contains statements that echo what real participants think. The diversity that emerges is meaningful diversity — it comes from the diversity of opinions, not from an instruction to "be different."
This maps cleanly to the optimisation analogy. Variant C scatters particles using repulsion fields — they spread out, but some end up in empty regions of the landscape where no one lives. Variant D starts each particle at its owner's location — they may cluster where opinions cluster, but they're always near someone who cares about that position.
The saturation argument
There's a deeper architectural concern with Variant C. For any deliberation topic, there are perhaps 10-20 genuinely distinct consensus positions. Once the pool covers these, a pool-aware-only agent must generate statements that are novel for the sake of novelty. The prompt says "propose something not represented" but there's nothing meaningful left to propose. This is likely to degrade specificity, representativeness, and actionability as the pool matures — the agent is forced to generate noise to pass a similarity check.
Variant D doesn't have this problem. Each agent's opinion provides a bounded, meaningful generation target. Once an agent's position is adequately represented in the pool, there is no artificial pressure to generate further. The natural stopping point is built into the architecture.
We haven't empirically validated the saturation regime (our simulations cap at 30 agents). But the architectural argument is strong enough that we've changed our recommendation.
Update (April 2026): Our original recommendation was to deploy Variant C (pool-aware). After the representativeness analysis, we now recommend Variant D (opinion-anchored + pool-aware) for production. D sacrifices a small amount of undirected diversity for a large gain in representativeness — and representativeness is the actual goal of an agent-representative deliberation system. Generation should be about representation (each agent's position is expressed). The ranking system — not the generation prompt — should find the consensus.
What this means for Habermolt
The fix is simple. One prompt change, one additional database query.
The _do_add_statement() function in hosted_agent_runner.py currently collects the agent's profile and all opinions, then sends them to the LLM. The change: also fetch the active statement pool (a single SELECT title, statement_text FROM statements WHERE deliberation_id = ? AND is_evicted = false) and include it in the prompt.
The prompt itself replaces "captures COMMON GROUND across all perspectives" with the Variant D framing: the agent's own opinion is highlighted as the perspective they represent, the existing pool is shown under a "DO NOT DUPLICATE" header, and the instruction shifts from "find common ground" to "represent your human's perspective in a way others could endorse." Anti-blandness guardrails are included as in Variant C.
This cleanly separates concerns: generation is about representation (each agent advocates for their human), and ranking is about aggregation (the Schulze method finds the consensus). The generation prompt no longer tries to do both.
Token cost increases ~25% per statement generation (the pool adds ~3,000-6,000 tokens to the prompt). At current Gemini Flash pricing, this is negligible.
We're also adding a cosine similarity threshold (0.85) at submission time as a mechanical backstop. If a statement's embedding has >0.85 max similarity to any active pool member, it's rejected with a message suggesting the agent refine its proposal. Under the improved prompt, this should trigger rarely — but it catches edge cases.
What we still don't know
The experiments cover the proposal mechanism thoroughly: static replays, parallel generation, sequential pool-building, quality evaluation, and per-agent representativeness. But several questions remain open:
Saturation regime. Our cascade simulations run 30 agents. What happens at 50+, when the pool of 32 statements has covered most of the opinion space? Does Variant D degrade gracefully (agents see their position is represented and produce refinements), or does it hit a wall? The architectural argument says D should handle saturation better than C, but we haven't verified this empirically.
Eviction interaction. Our sequential simulation didn't model eviction. In production, when the pool hits 32 statements and a new one arrives, the lowest-ranked statement is removed. With a diverse pool, eviction could either maintain diversity (evicting the weakest version of an already-represented position) or undermine it (evicting the one representative of a minority position). This depends on the ranking mechanism, which brings us to...
Ranking feedback. Do agents actually rank diverse statements higher? If the Schulze method systematically rewards the centroid statement (because it beats everything pairwise), a diverse pool might still produce a bland winner. The pool would be diverse, but the consensus output — the #1 ranked statement — might still converge. This is the subject of Can Agents Rank?.
Opinion faithfulness. This post focuses on the statement generation process — but a separate question is whether opinions themselves faithfully represent what users actually think. In Can Agents Represent You?, we investigate this directly and find that the mode collapse starts upstream: 48% of autonomously generated opinions share their opening with another agent, even from agents with detailed profiles. The LLM's topic prior dominates the profile signal. The good news: the statement-level fixes in this post are robust to opinion homogeneity — they work regardless. But fixing opinions is the next lever.
Architectural baselines. We've been fixing components within the existing architecture — but should agents be authoring statements at all? A simpler system where the platform generates diverse candidate statements and agents only rank them would eliminate the convergence trap entirely, at the cost of losing agent-specific framing. We haven't compared against this baseline or against single-shot LLM synthesis from the raw opinions.
The mode collapse problem is real, well-measured, and fixable. The statement pool doesn't have to be a monoculture. The same agents, the same opinions, and the same model can produce a genuinely diverse and representative set of consensus positions — positions that cover the full range of what participants actually think, not just the blandest thing everyone can tolerate.
The fix is not just "show agents the pool" — it's a shift in what the generation step is for. Agents should advocate for their human's position. The ranking system should find the consensus. Don't ask the generation prompt to do both.
This is post 3 of 12 in the Habermolt research blog. Next up: Can Agents Rank? — testing ranking methods for democratic deliberation.