City digital twin · Part 8 · The proposal

The City, Twice: a proposal, and how it was made

A twin that could stand up a city of 27 million people on one contract caught the attention of a state government in India, planning a logistics city on Mumbai's edge. This is the proposal we prepared - The City, Twice, published here in full - and how it was made: two drafts written to two very different briefs, and an honest map of which parts are the running twin, which are real ground carrying illustrative layers, and which are a direction of travel.

· ~15 min read · Part 8 of a series · with Pranav Dhoolia

The request

A state government wants to build a new city on the edge of the Mumbai region, around the belt of warehouses that already takes the port's containers inland and sends them across the country. The city exists to serve that logistics hub. Could we propose software to plan it, visualise it, estimate it and simulate it - and what, exactly, could we offer?

The brief pointed at this series as evidence of what we had tried, and at the Newcastle and Mumbai twin as the most ambitious thing we had built. It asked for plain English, every abbreviation spelled out, a hover definition for every specialist term, references and links, and a strong visual voice. It said there were no other details yet, that this was a starting pitch, and that animations of what we could build towards over time were welcome. The proposal would be written, like the twin, with an AI agent doing the research and the building.

Draft one: the careful proposal

The first draft was titled "Build Bhiwandi Twice": once in software, where a wrong road or a forecast three times too high costs nothing to fix, then once on the ground. It laid out how cargo moves through the region today, what was being planned, and where the belt is already under strain - choke points on the roads, a river crossing its danger mark, warehouse fires. It surveyed fourteen ports, logistics hubs and new cities, and found that what arrived was often a third to a half of what the plan had promised. It offered a twin that would estimate everything "as a range, never one number", and it set a rule before any prediction: the model must first reproduce a change that has already happened.

That is the corrections I made to my first model of a city, written as a proposal. For a first pitch it asked too much reading of a department that had not yet seen what a twin could show it.

Draft two: show, do not argue

The second brief turned the draft around. It was not about solving one hard problem; it was about showing what we can do, for any city, not just this one. In paraphrase, it asked for:

  • Less text, better pictures. Short headlines and bullets, no footers or numbering, and visuals realistic enough to feel like the city - OpenStreetMap, 3D buildings, photogrammetry where it helps.
  • The best twins on Earth, studied and borrowed from. What Shanghai, Singapore, Hangzhou and the rest do best, and what we would take from each.
  • Prediction beyond traffic. Floods, heat, water, power, air, disease: the models a city actually needs.
  • A link to the control room. Live feeds from the city's SCADA systems into the twin.
  • The big day. Religious processions, finals and marathons, planned in the twin before they happen.
  • Time as a slider. Roads, pipes and buildings with their ages, scrolled through past, present and future, with a list of what needs attention next.
  • City-builder views. The way a game like Cities: Skylines lets you flip between traffic, zoning, sewage and power.
  • Ambition. Promise less in writing and show more in pictures: what is possible given the compute, and that we have the know-how to build it.

Then came twenty rounds of refinement, almost all of them about how the city looks and moves. The 3D buildings first rendered in a fixed square, then in a circle, then wherever the camera pointed. They were made to load nearest-first instead of in random blocks. The district-drawing slide was rebuilt so that the real buildings already standing there grow out of the ground, networks first. The arrow keys stopped moving the camera and started changing slides. A one-line guide to the controls went at the top of the screen, with Ctrl and Command both shown. The last request was a portable zip to send that day.

A pitch and a post like this one do different jobs, and the second brief was explicit about which job the deck was doing. That is why this post exists: to put the proposal on the record next to the twin's own, and to mark, slide by slide, what kind of claim each one makes.

Sixteen slides, three kinds of claim

The deck marks this distinction itself, in small print on its last slide: the moving people in Newcastle come from a real run, the districts, roads and buildings are real, and the utility networks, sensors, crowds, freight volumes and the replacement plan are "illustrative layers, laid on real roads". Here is that note turned into a map of the whole deck.

RUNNING TODAY from the twin's runs and files Every trip. Simulated. Newcastle, a completed 25% run The engine room 27 M residents, 12 modes, declared inputs, versioned files Any city. In weeks. Newcastle and Mumbai on one framework REAL GROUND, ILLUSTRATIVE LAYERS Ship to shop Every system. One switch. Wired to the real city Rehearse the monsoon Plan the big day Scroll through time Draw it. Watch it rise. real roads, districts, buildings; drawn-in volumes and networks A DIRECTION OF TRAVEL Predict everything Ask the city The best twins on Earth From first map to living city models, interfaces and a road map we would build towards, shown as they would look framing slides, not claims: The city, twice · Build it twice the deck's own last slide draws the same line between real and illustrative
FIG 1 - The proposal's sixteen slides, sorted by the kind of claim each makes. The sorting follows the deck's own sources note; the rest of this post goes through the columns from left to right.

What is running: the people in Newcastle

"Every trip. Simulated." flies over Newcastle at night while coloured trails move through the streets: cars, trucks, taxis, motorbikes, bikes, walkers, buses on their routes, trains and the light rail on their lines, over two hours of a weekday morning. Nothing on it is drawn by hand. The trails are people from a completed run of the Newcastle twin - a quarter of the population, the light rail as built, 250 iterations - taken from the run's own output and thinned for the browser.

buscartrucktaximotorbikebikewalktrainlight rail2 km
FIG 2 - The proposal's Newcastle data, redrawn: trips between 07:00 and 09:00 on a weekday from the twin's run 20260929T012258_250it_25pct, by mode. The deck carries a display sample per mode - 4,000 car trips, 363 bus trips, 37 on the light rail and so on - not the modes' true shares, and this figure draws a fixed fraction of that sample.
The proposal's Newcastle slide playing: coloured trails of cars, buses, trains, the light rail, trucks, bikes and walkers moving through central Newcastle at night in 3D while the clock runs from 07:10.
FIG 3 - The slide itself, recorded playing from the hosted proposal: the morning's trips moving through central Newcastle as its clock runs.

The engine-room slide puts numbers under the pictures: 27 million synthetic residents in the Mumbai-region model, one for every real person; twelve travel modes, each simulated on real roads and real timetables; every model input carrying a source, a unit and a tested range; every data file rebuildable from its raw source. Each of those is the twin as it stands. The slide's last line - "Give us the compute, and the whole city runs overnight" - describes where the Mumbai model stands: it is waiting on that machine.

Real ground, illustrative layers

The middle column is where the proposal shows what the twin would do for this city. The ground under every one of these slides is real: the roads, rail lines, district boundaries and buildings are the region's own, from OpenStreetMap and Overture's building footprints. What moves on that ground, or runs under it, is drawn in to show the capability.

Ship to shop

Seven freight corridors leave the port and the warehouse hub for Ahmedabad, Nashik, the Samruddhi expressway, Pune and Goa, each drawn on the real road network with the length the deck lists. The trucks that pulse along them, and their volumes, are illustrative; the port's 8.17 million twenty-foot container units in 2025-26 are its own published throughput. The freight slide is the one closest to the brief: a city whose reason to exist is the chain from ship to warehouse to shop.

CORRIDORSJNPA to Hub56.6 km on real roadsHub to Ahmedabad NH-4878.9 km on real roadsHub to Nashik NH-16068.5 km on real roadsHub to Samruddhi83.0 km on real roadsJNPA to Pune91.0 km on real roadsJNPA to Goa NH-6687.9 km on real roadsMumbai to Hub45.7 km on real roadsdashed: rail · grey: major roads
FIG 4 - The proposal's freight corridors, redrawn from its data on the region's rail lines and major roads. Corridor lengths are the routed distances the deck lists; the truck movements the slide animates are illustrative.

Every system, one switch

The lenses slide is the Cities: Skylines idea made literal: one city, one colour language, and a switch that flips it between traffic, zoning, water, sewage, power, heat, air quality, noise and land value. The traffic lens colours real roads by their class; the water, sewage and power networks are laid along real streets and, as the slide says, are illustrative.

Wired to the real city

The control-room slide shows the loop I previously drew as governance: sense, see, foresee, act. A pump station's outlet pressure falls, the twin plays the fault forward through the water network, forecasts how many homes lose pressure in the next forty minutes, and sends the control room the fix - start a standby pump, open a valve - instead of the alarm. The chain it names is the real one a city would use, from field controllers through SCADA and industrial messaging to the city's command centre. The incident itself is a scripted cycle.

Rehearse the monsoon, plan the big day

The flood slide raises the water on the real terrain and counts roads under water and buildings wet; the deck says plainly that this is a "bathtub fill" on the elevation model, and that a proper drainage and river model would replace it. The crowd slide applies the stadium lesson on foot. An immersion procession converges on a lake ghat. As usual, every procession leaves within half an hour for one ghat and the crowd crosses into the dangerous band. In the twin's plan, releases are staggered over three hours and the northern processions are routed to a second ghat on the river.

free walkingslowedjammeddangerous (5+)0245717:0018:0019:0020:0021:00as usual: all processions within 30 min, one ghat · peak 6.9 people/m²twin plan: staggered over three hours, a second ghat · peak 1.4 people/m²PEAK CROWD DENSITY, PEOPLE PER SQUARE METRE
FIG 5 - The proposal's two crowd plans, redrawn from its data: the highest density anywhere on the route, every few minutes, against Fruin's levels of service. The crowds are illustrative; the mechanism - spread the release, add an exit - is the one the stadium twin measured for cars.

Scroll through time, draw it and watch it rise

The time slide gives every road, pipe and building an age and a slider from 1970 to 2060, and lists what needs attention next. The ages are part of the demonstration, not a surveyed register of the city's assets. The planning slide traces one of seven real districts, road to road, raises its networks, then grows every real building out of the ground, then shows a plan replacing old warehouses with new ones. The boundaries and buildings are real; the pipes and cables follow the streets, and the plan is illustrative.

SEVEN REAL DISTRICTS11Mankoli godown belt2.45 km²22Bhiwandi old town1.24 km²33Kalher6.53 km²44Anjurphata1.2 km²55Narpoli1.58 km²66Kamatghar0.7 km²77Purna2.62 km²1 km
FIG 6 - The seven real districts the planning slide can trace, drawn to scale from the proposal's data, with their areas.
The planning slide playing: a real Bhiwandi district is traced road by road, its streets, water mains and power cables come up, its real buildings grow out of the ground, then old warehouses are replaced by new ones while the counters of buildings, floor area, roads, mains and cables fill in.
FIG 7 - The planning slide, recorded playing from start to finish: a real district traced, its networks raised, its real buildings grown in place, then the plan replacing old warehouses with new ones.
The lenses slide cycling through all nine views of the same district: zoning, water mains, sewers, power feeders, surface heat, air quality, noise, land value and traffic.
FIG 8 - The lenses slide through its whole cycle: zoning, water, sewage, power, heat, air, noise, land value and traffic, one switch at a time.

A direction of travel

The right-hand column says where this could go. "Predict everything" shows twelve city models on one shared ground truth - flood depth, heat islands, water demand, pipe bursts, power peaks, air quality, road wear, land value, waste routes, ambulance reach, disease hotspots, rooftop solar - and their colours over the city. "Ask the city" shows a planner typing a question in plain English, Marathi or Hindi, and the twin running the storm, the traffic and the port together before answering. Both are shown as they would look, not as things that run today.

"The best twins on Earth" is the track record turned into a shopping list. Eight twins are pinned on a globe - Shanghai, Xiong'an, Hangzhou, Singapore, Dubai, Rotterdam, Helsinki, Valencia - each with the one thing it does best and the one thing we would take from it: city-scale streaming, a twin before the concrete, live signal control, underground layers, one asset registry, port operations, open semantic 3D, leak prediction. Previously I argued that what survives is scoped. The slide keeps that lesson in its structure: each borrowed idea is one scoped capability, and the one thing the proposal adds that most of them lack is the thing this series has been building - people who move. The road map closes the column: the base twin in ninety days, people and freight moving and checked against real counts in the first year, live feeds in the second, and a twin that drafts and scores plans from the third.

How the page is built

The deck is one HTML file and eight data files, and it runs in any modern browser. MapLibre GL draws the map, with satellite imagery, terrain lifted from an elevation model, and 3D buildings streamed from Overture's footprints through PMTiles, extruded to their recorded heights where a height is recorded and estimated where it is not. deck.gl draws everything that moves: its trips layer plays each person's or truck's path against a clock, which is how a MATSim run becomes a night-time flyover. Every slide is a camera position, a mood and a set of layers; scrolling flies between them, and each slide's data loads only when it is first needed, while the next slides' buildings download in the background.

The Newcastle trails are the one piece of the deck that comes straight out of the twin: the run's output, cut to a two-hour window, sampled per mode and written as a data file the page replays. For this site the page's code and fonts are served from here rather than from content delivery networks; only the map tiles stream from their providers, which is why the proposal needs a connection.

Where the pitch and the record differ

In three places the proposal and the twin's record say different things.

  • "Our calibrated run." The Newcastle slide's caption calls it that. In the twin's own terms it is a completed run, not a calibrated one: it put 1 of 12 modes inside 10% of real ridership, and the next run, the scoreboard shown previously, put 2. No parameter has yet been fitted to the targets.
  • The engine room's inputs. The slide counts 594 declared inputs, the registry's size the day the deck was built; it is 600 now. The 968 versioned files match.
  • The Mumbai model. Its 27 million synthetic residents exist, on a network and timetables built from Indian sources. It has no ridership reading yet: the smallest honest run needs a machine several times larger than the one it was built on.
Both are published

The proposal is here unchanged, as it was sent. The twin's record is public too, with every run, target and decision behind the numbers above.

The full proposal

Open The City, Twice - sixteen slides, best on a large screen in Chrome or Edge. Scroll or use the arrow keys to move between slides; drag to move the map, Ctrl or Command and drag to turn and tilt, pinch or Ctrl and scroll to zoom; hover any dotted term for a plain-English definition. The first visit takes a few seconds while the 3D buildings arrive.

Sources & anchors

  1. The proposal, hosted in full - /digital-twins/the-city-twice/ · its libraries: MapLibre GL JS - maplibre.org · deck.gl - deck.gl · PMTiles - github.com/protomaps/PMTiles · Overture Maps buildings - overturemaps.org
  2. The Newcastle run the trails come from, and its reading - DECISIONS.md, section 9.217 · the current scoreboard - docs/STATUS.md · the Mumbai model - cities/mumbai/docs/README.md
  3. Twins the proposal borrows from - Shanghai (51World) - unrealengine.com · Xiong'an - en.people.cn · Hangzhou City Brain - en.wikipedia.org · Virtual Singapore - en.wikipedia.org · Rotterdam port - newsroom.ibm.com · Helsinki - aec-business.com · Valencia water - idrica.com · urban twins in China - geoawesome.com
  4. Crowds, floods and city-builder views - Fruin's levels of service (G. K. Still) - gkstill.com · Hajj crowd simulation, JASSS - jasss.org · iFLOWS-Mumbai flood warning - pib.gov.in · Cities: Skylines II info views - cs2.paradoxwikis.com

City digital twin · Part 8 of the series · ← Two cities, one framework