Measuring the quality of political discourse on Reddit
The framework sits on three traditions of democratic theory that disagree with each other: Habermas on rational deliberation, Mouffe on productive conflict, Young on inclusion. The theory constrains a 56-variable codebook, and the codebook constrains the annotation and everything built on it. A stratified sample of about 75,000 comments across 653 subreddits is annotated by language models and validated by hand.
2026
with seven coders validating
How news frames the victims of conflict
When a conflict kills people, some of them are named and some are counted, and some perpetrators are identified while others are left implicit. A newsroom is a selector with an objective. We're testing whether those choices track the severity of the event or the geopolitical alignment of the outlet doing the reporting. The corpus is around 1.36 billion articles across ten years and many languages, matched to events and coded against a framing codebook. It's the largest thing I've worked on. Most of the difficulty is in matching articles to events.
2026
with collaborators at two institutions
Does false-belief reasoning emerge the way it does in children?
Children come to reason about what someone else falsely believes along a fairly consistent developmental trajectory. Language models acquire it somewhere during training, and nobody has looked closely at the shape of that curve. We take 41 checkpoints across the training run of an open model and score false-belief tasks by contrasting teacher-forced log probabilities. The predictions are registered before the runs.
2026
with collaborators in Graz, Zurich, and Genoa
Simulating social media with language model agents
If you want to know what a different recommender would do to a conversation, you can't run that experiment on a real platform, and no platform will run it for you. So we build the platform instead: a population of language model agents posting, reading, and responding under a recommender we control. Then we change the recommender. The open question is how much of any result is an artefact of the agents rather than a property of the ranking.
2026
part of DeSiRe
Sandboxing cultural evolution with LLMs
Cumulative culture is design that no individual worked out, accumulated through transmission. It has no model system: transmission chains with people are too short for anything to accumulate, the historical record happened once, and formal models have control but no cognition. A population of language model agents is the first substrate with ideas and control at the same time. We're building one on a hidden fitness landscape whose optimum we know. A rising fitness curve does not say where the design came from: a population of agents each learning alone produces the same curve as one that is accumulating. So the contribution is the instrument: a detection battery that returns a verdict on whether the design in a run accumulated through transmission or was worked out by each agent alone, every test against a null fixed in advance, plus freeze-and-branch replay that cuts the peer channel mid-run to ask what it was worth, which is what Lenski's freezer does for a bacterial lineage. Theory and battery design are written; the code is landing now.
2026
Belief networks, and how a population's attitudes hold together
This treats a population's attitudes as a network: beliefs are nodes, correlations between them are edges, and the shape of the whole thing shifts over time. The data is decades of the General Social Survey. The claim I most want to make is the conceptual one: a population's belief correlation structure is a real object worth studying in its own right, and it is the environment that any new belief has to fit. Different sub-populations appear to have differently shaped structures. That would mean liberals and conservatives differ in how their beliefs connect, as well as in which beliefs they hold.
2025–2026
with a co-author
Pulling knowledge graphs out of text
Given an ontology and a pile of text, can a language model produce a knowledge graph you'd trust? The pipeline is extraction, then coverage checking, then entity normalisation, benchmarked against Text2KGBench and CS-KG-3600.
2026