Can we model our way out of this?

Putting the AI in ApplIed Urban Modelling. AI, collective intelligence, and the Brighton & Hove school system

Prof Adam Dennett FRGS FAcSS

Bartlett Centre for Advanced Spatial Analysis, UCL

2026-11-01

Hello

Who I am

  • Professor of Urban Analytics at UCL’s Centre for Advanced Spatial Analysis. I build models of cities — of migration, of housing, of where people go to work, to shop, and to school.
  • I have been doing it for twenty years. but maths on the later slides is even older than me!
  • I live in Brighton, and I have a daughter who has just applied for a secondary school place.
  • That second fact is why I’m here today. I got dragged into a local argument, and could not leave it alone.

Two years ago Brighton & Hove consulted on changing secondary school admissions. I read the consultation as a parent, got annoyed as a modeller, and have been working on it ever since.

The first thing that came out of it: a national study of what actually drives GCSE attainment, and whether the council’s policies could plausibly move it (they can’t and will probably make things worse).

Paper about to come out in Research Papers in Education (currently being typeset)

Where this work sits

The UKRI National AI Research Hub for Collective Intelligence (AI4CI) — a five-year, £12m EPSRC programme asking a question that is not the usual one about AI.

Not “can a machine do this instead of us?” but:

Can AI make groups of people think better together?

Can it help a council, a set of schools, a few hundred parents and a handful of campaigners arrive at a better answer than any of them would have reached alone?

The Hub works on epidemics, on infrastructure, on online communities, on human–AI teaming. I brought it a school system.

https://ai4ci.ac.uk/

Collective intelligence leans into the wisdom of the crowd - the idea that a diverse group can consistently outperform even the smartest single expert (or local Councillor!).

A thorny local problem

The Brighton and Hove Secondary School System

Ten schools, six catchments. A (mostly) closed system with hard edges: every child the council places has to go somewhere. Some pockets of deprivation in East of the city.

Two years ago, the argument was about attainment and ‘fairness’

The 2024 reforms changed catchment boundaries, introduced a free school meals priority, and held back 5% of places at central schools for “open allocation” — children from anywhere in the city - potentially forcing some children to attend schools outside of their catchment where schools over-subscribed.

The council’s stated aim

Reduce the concentration of disadvantaged pupils in a few schools, and so narrow the attainment gap. Latterly - increase ‘fairness’.

What I went and checked

Every secondary school in England, five years of data, a model of what actually predicts a GCSE cohort’s results.

What the evidence says

  • Only about 15% of the variation in a child’s GCSE results is down to the school. The rest is the child, the family, and what happened before they arrived.
  • Absence is biggest issue in the city and most associated with attainment but was not in the consultation at all.
  • For disadvantaged pupils, concentration is not the harm it is assumed to be. Nationally, once absence and prior attainment are accounted for, they do slightly better in schools with more disadvantaged pupils.

Is it fair to promise benefits not supported by the evidence, ignore the dis-benefits and knowingly makes the lives of a few unlucky children worse in the process?

But while we were arguing, the ground was moving

Year 7 entry peaked at 2,509 in 2019. By 2033 it is projected at about 1,750 — roughly 760 fewer children entering secondary school each year. More than the entire intake of two of the city’s large schools.

Schools are funded per pupil

Fewer children means less money. Less money means fewer subjects, bigger classes, a worse offer — and so fewer children. Decline is self-reinforcing, and it does not land evenly.

It is landing on one school first

The city placed 1,900 children in 2010 and 2,250 in 2026 — it grew. Over the same years Longhill fell from 239 to 81. Now the cohort turns down, and the school at the edge of the city gets the fall first.

So here is the actual problem

In ten years this city has to run a school system for roughly 760 fewer children a year than it has now.

That means, unavoidably, some combination of:

  • schools getting smaller,
  • schools closing,
  • catchments redrawn,
  • or a lot of half-empty buildings quietly going bankrupt.

Every one of those makes somebody’s journey longer, or takes a school out of somebody’s community.

And there is no long-term plan.

What exists is a sequence of individual consultations — each on a single option, each argued about on its own, each decided before the next one is proposed.

Nobody has published an account of how the whole system behaves, so nobody can say what any one of these decisions does to the others.

Hopefully not a conspiracy. It is just hard, and nobody had the tools to think strategically.

We need to be able to try things

Problems with Piecemeal Policy

How it works now

  • A consultation proposes some changes and provides little supporting evidence.
  • People respond for or against.
  • The council does what it wants anyway.
  • Twelve months later the next consultation arrives, and nobody has checked what the last one did.

The system, meanwhile, is interacting. Move a catchment and demand shifts at four schools. Cut an admission number and the children do not vanish — they turn up somewhere else.

How it could work

  • Ask “what if?” twenty times before lunch.
  • Stack simulated policies and watch them compound over time.
  • Find the combinations that work, and the ones that cost somebody something.
  • Share this knowledge with everyone who is being asked to have an opinion on a proposal in a consultation

Run the experiment in silico, where being wrong costs nothing — instead of running it on a cohort of eleven-year-olds, where being wrong costs them a place in a local school.

The tool

What it is

The thing Scale
Strategic analysis of the system 9,712 lines of Quarto
The model and data assembly ~7,400 lines of R
An interactive policy simulator ~3,000 lines of Shiny
Commits across six repositories 805

Everything is open: the code, the data sources, the model, the write-up. Every number on every slide traces back to a line of code and a published source.

Sliders for attractiveness, a dropdown for what families read, controls for catchments, admission numbers, school locations and open allocation. Hit go and the whole city re-allocates.

Where the data comes from

Nothing here is private. No pupil records, no data-sharing agreement, no permission required. All of it is published, and most of it is published badly.

  • DfE performance tables and the statistics API — attainment, absence, intake, workforce, finance 🤘
  • Council allocation factsheets, 2010 onwards — preferences and offers, school by school, year by year (dug out from buried URLs and collated by me 😭)
  • The 2021 Census — where children actually live, postcode by postcode 🤘
  • OpenStreetMap road network and the real bus timetable (GTFS)
  • Catchment boundaries (traced by me 😭), and one Freedom of Information request 💪

Data processing and curation from a dozen sources that do not share a key, do not share a year, do not share a school name, and change their format every two years, just the sort of thing Claude AI excels at.

Exactly the grinding, careful, enormously tedious work that has historically eaten the entire budget of a project like this.

Everything open and downloadable from my github

The model underneath

A spatial interaction model — a development of Newton’s Gravity equation.

Used for modelling commuting, migration and retail catchments since the 1970s. It predicts how many children flow from each neighbourhood to each school.

\[T_{ij} \;=\; A_i\,O_i\;\;W_j\;\;c_{ij}^{-\beta}\;\;e^{\gamma_h}\;\;C_j^{\delta}\]

Term What it is
\(T_{ij}\) children from neighbourhood \(i\) to school \(j\)
\(O_i\) children living in \(i\) — 195 neighbourhoods
\(W_j\) how attractive school \(j\) is
\(c_{ij}\) bus-and-walk journey time, \(i\) to \(j\)
\(e^{\gamma_h}\) the catchment bonus
\(C_j\) how much competition \(j\) has nearby
\(A_i\) the balancing term

It is production-constrained: \(A_i\) forces every child living somewhere to end up somewhere. The model never invents or loses children; it only decides where they go.

That is what makes it useful for policy. Close a school, move one, cut its admission number — and the children reappear somewhere else, and the model tells you where.

\(W_j\) - What makes a school attractive?

And the council’s own admissions guide tells parents to look at exam results and Ofsted reports. A school with a more disadvantaged intake posts a lower headline score, so fewer families choose it, so its intake gets more disadvantaged, so the score falls again. The advice works against the policy.

What cost - \(c_{ij}\) - actually means

Figure 1: One neighbourhood in the Stringer/Varndean catchment to BACA. Walking legs orange and dashed, bus legs blue. Routed on the real timetable at 08:00.

3.0 km as the crow flies. 35 minutes, 5 legs, two buses — the 50 then 28 — and 1 change. Every one of the 2,925 origin-school pairs in the model is routed like this, on the real timetable. That is what \(c_{ij}\) is.

Three things it had to learn

Fitted to the council’s own published allocations, not assumed:

Distance decay, \(\beta = 1.7\) — how steeply demand falls as a school gets further away. And \(c_{ij}\) is not crow-flies: every one of the 2,925 origin–school pairs is routed on the real bus timetable at 08:00.

The catchment pull, \(\gamma_h\) — fitted separately for every catchment, because they do not behave alike.

Competition, \(\delta = 0.3\) — whether being surrounded by rivals helps a school or hurts it.

Living in the catchment multiplies the odds by 2.7 times at Brighton Aldridge and 13.5 times at Stringer and Varndean. One policy doing five times as much work in one part of the city as another.

Does it work? - Hell Yeah!

It reproduces the September 2026 allocations with an R² of 0.95.

More importantly, it has been given tests it could have failed, on numbers that did not exist when it was built:

  • A Freedom of Information request produced the confirmed September position by admission priority. The model had never seen it.
  • Longhill’s modelled 2026 intake of 90 sits very close to the FOI’s actual range of 91 to 99.

And it gets things wrong in ways I can name. It over-predicts the schools that are hard to get into by about 16 children — because it reproduces the allocation, and the allocation overstates where children finally end up.

A model you cannot criticise is not a model. It is a press release.

All of it is written up, failures included, in a technical guide that audits every term.

How this got built

Fifty years of models. Five months of building.

  • The model underpinning the simulator is a development of Newton’s Gravity equation.
  • The Spatial Interaction Model was first popularised by Sir Alan Wilson in 1970 and used successfully to solve spatial problems in cities for decades
  • I’ve been building these models for 20-years. I had a hand-written prototype of this one on my computer from 2024, and a routing pipeline to go with it.
  • What I did not have was a month of uninterrupted time to turn it into something a city could use. I was never going to get one.

So I did it with Claude Code, in bursts, in evenings, between everything else. Counted from the logs: 1,277 instructions from me, 13,451 actions back, over 69 working days spread across five months.

The April to July work is a different project — a national attainment model. The city system model itself starts on 8 September and is finished eighteen days later.

The division of labour

What I brought to the party

  • A working prototype (“Brightopia”), built by hand in 2024
  • Twenty years of knowing which terms matter — attractiveness, distance decay, competing destinations
  • Knowledge of the school system, and of the city’s politics
  • A critical eye to review the outputs
  • Knowing when an answer was wrong
  • Every decision about what to do next

What Claude brought

  • Scale: a prototype turned into a calibrated, audited system
  • Data wrangling across a dozen awkward published sources
  • Shiny, deployment, rendering, version control
  • Debugging, and the patience for it
  • Documentation written as it went
  • The willingness to redo all of it when one assumption changed
  • Speed, coding abilities, technical prowess

I knew what to ask for and what to examine because I had built a smaller version of it myself. The Human in the loop was vital in this process - asking the right questions, giving the right instructions, reviewing the outputs and forcing iteration

What AI has changed for me

  • It does not replace knowing things.

  • Every moment that mattered in this project turned on domain knowledge I had and it did not.

  • Several times it produced something plausible but not quite right, and the only reason it got caught was my experience.

  • It does collapse the cost of trying.

  • Each scenario I tested would have been a week of work. I would have tested a couple, but I tested twenty-odd.

The bottleneck moved. It is no longer implementation.

It is knowing which question is worth asking — and that is a distinctly human, distinctly local, distinctly collective thing.

Which is more or less the whole argument of this talk.

Let me show you

Live demo

https://adamdennett-bh-school-system.share.connect.posit.cloud/

What I am going to do: take the school in the most trouble, and pull one lever at a time.

  1. Today. Longhill is modelled at 90 of 210 places — and that matches reality.
  2. What if families read value added instead of the headline score? One dropdown. Nothing about any school changes.
  3. What if we moved it to the top of Elm Grove, where a school was proposed a few years ago — and put Whitehawk back into its catchment, as it was before 2004?
  4. What if it taught like BACA — the school down the road with a comparably disadvantaged intake and the best value added in the city?

Then push the whole thing forward to 2035, with the falling cohort, and see which schools are still viable.

The point is not any one of these. No single policy does much on its own. That is exactly why they keep dying at consultation — each one, judged alone, looks like it is not worth the trouble.

Watch what happens when you stack them.

Nothing here harms a single child. That is the whole argument for doing it this way round.

What the demo showed

Each step is modest: 7 points, then 17, then 27. None would survive a committee on its own merits. Together they take a school from 43% full to 94%.

And the honest cost: segregation rises, 0.117 to 0.188.

But a disadvantaged child ends up travelling 2.2 minutes less than everyone else, where today they travel 3.4 minutes more.

Absence is this city’s biggest attainment problem, and distance is one of the few things policy can actually change about it.

So what?

One person with a model is not collective intelligence

What exists now is a working simulation of the city’s school system that anyone can open and argue with — councillors, officers, heads, governors, parents.

That is necessary. It is nowhere near sufficient.

Three things still stand in the way:

  • Awareness. Almost nobody (apart from you and the Council) affected knows it exists (yet).
  • Buy-in. It only helps if the people who decide will use it.
  • Enough ideas. A simulator is only as good as the range of scenarios people think to put through it — and I can only think of my own.

The ask.

Council or school? Put a scenario through it that you think will embarrass the model. That is genuinely the most useful thing anyone can do with it.

Researcher? The code, data and model are open. Take it apart.

Parent or governor? Use it before the next consultation, not after.

The simulator does not tell the city what to do. It makes it much harder to claim a policy will do something the system cannot deliver.

The actual point

Schools are just the example I happened to fall into.

The pattern is everywhere in any city:

  • a decision that affects thousands of people,
  • taken one option at a time,
  • argued about with anecdote and assertion,
  • where the data to do better already exists and is published,
  • and where nobody had the time or the tools to put it together.

Road schemes and traffic filters. A leisure centre. Parking. Housing allocation. Bus routes. Waste collection. The waterfront.

The cost of building a model like this has fallen by something like an order of magnitude in about eighteen months.

Which means the binding constraint is no longer money, or time, or expertise.

It is knowing which question to ask.

That is a question a room full of people is far better at than one person — which is exactly the problem I want to finish on.

The next problem

The bottleneck has moved again

Building the model is no longer the hard part. Neither is the data — it was published all along.

The hard part is when in the process the evidence arrives.

A consultation, more or less everywhere, runs like this:

  1. An authority decides what it wants to do.
  2. It writes the option up, with a shortlist built to make it look reasonable.
  3. It consults. Responses are counted, not modelled.
  4. It proceeds, having demonstrated that it asked.

Nobody in that sequence is acting in bad faith. It is simply a process designed to test consent, not to test options.

Which is why I could do what I did. The council’s own published data contained an answer nobody had computed — not because it was hidden, but because the process never required anyone to look.

Two years of argument about admissions in Brighton, and absence — the largest single factor — was not in the consultation at all.

The simulator does not fix that. It just makes the gap between “we consulted” and “we understood” much harder to ignore.

What would have to change

The model comes before the options, not after them. Publish the system’s behaviour first, then let people generate options against it. The order is the whole argument.

Alternatives get tested, not just the preferred one. A consultation that cannot say what the rejected options would have done has not really compared anything.

The model is a shared object, not the authority’s. Something the opposition, the campaign group and the local journalist can all run themselves. A model nobody outside can attack is just an assertion with arithmetic in it.

Why this is hard, honestly.

  • An authority that models openly may find its preferred option fails in public. There is no incentive to go looking for that.
  • Capacity: most councils have no one whose job this is, and the people who could do it are expensive.
  • Legitimacy cuts both ways. A model can be used to close a debate as easily as to open one — “the model says” is a very good way to stop an argument you are losing.

None of that is a technical problem, which is why I think it is the interesting one.

The thing I actually want

Not better models. We have those, and they are getting cheaper by the month.

A deliberative process that has somewhere to put them. One where a citizen, a campaigner or a councillor can arrive at a consultation with a scenario they have already run, and have it taken as seriously as the option on the table.

That is what “collective intelligence” has to mean in practice, or it means nothing: not a smarter machine, but a group of people who can argue from a shared account of how their own city works.

So the question I would put to this room:

What would make an authority want to model honestly, in public, before it has decided?

I genuinely do not know. I suspect the answer is less about technology than about who gets to hold the model — and I would rather be argued with than agreed with on this one.

Thank you