<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aum Pandya</title>
    <description>The latest articles on DEV Community by Aum Pandya (@aum_pandya).</description>
    <link>https://dev.to/aum_pandya</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3373346%2Ff30f6087-1fa1-4ad4-b38e-c3e0e2fca69f.jpeg</url>
      <title>DEV Community: Aum Pandya</title>
      <link>https://dev.to/aum_pandya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aum_pandya"/>
    <language>en</language>
    <item>
      <title>What If 80 Million GeoGuessr Players Role-Played as Mayors and Planned Real Cities for Disasters?</title>
      <dc:creator>Aum Pandya</dc:creator>
      <pubDate>Mon, 05 Oct 2026 22:40:45 +0000</pubDate>
      <link>https://dev.to/aum_pandya/what-if-80-million-geoguessr-players-role-played-mayors-and-planned-real-cities-for-disasters-2lf4</link>
      <guid>https://dev.to/aum_pandya/what-if-80-million-geoguessr-players-role-played-mayors-and-planned-real-cities-for-disasters-2lf4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/mlh-hackathon"&gt;MLH x DEV Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A question we couldn't stop asking
&lt;/h3&gt;

&lt;p&gt;Over 80 million people play &lt;a href="https://www.tubefilter.com/2024/09/16/location-obsessed-creators-put-geoguessr-on-the-map/" rel="noopener noreferrer"&gt;GeoGuessr&lt;/a&gt;. Around 300,000 of them play every single day, staring at real street corners in real cities, for fun. Players of &lt;a href="https://www.paradoxinteractive.com/en/cities-skylines-celebrates-fourth-anniversary-and-six-million-copies-sold" rel="noopener noreferrer"&gt;Cities: Skylines&lt;/a&gt; have built almost 40 million simulated cities, deciding where roads go and which neighborhoods get a hospital.&lt;/p&gt;

&lt;p&gt;Now think about how a real city decides where its disaster shelters go. A handful of planners, a set of models, and a public meeting where a good turnout is a room of people.&lt;/p&gt;

&lt;p&gt;That gap is what our team kept coming back to. People clearly &lt;em&gt;want&lt;/em&gt; to make decisions about places. Cities clearly &lt;em&gt;need&lt;/em&gt; the knowledge those people carry. Residents know which underpass floods first, which road everyone actually takes to get out, which building has elderly neighbors without a car, which church becomes the place everyone goes when things go wrong. None of that is in a dataset, and surveys don't capture it because almost nobody fills them out.&lt;/p&gt;

&lt;p&gt;So our hypothesis was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If even a fraction of the energy people put into map games went into planning real cities for real disasters, planners would get a dataset that doesn't exist today: millions of complete, scored decisions about where to act, from the people who live there.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What the numbers could look like
&lt;/h3&gt;

&lt;p&gt;Every game of our project produces about five located decisions, like where a shelter goes, which road gets protected, and where an evacuation bus should stop, plus a score that says how well those decisions worked against a real disaster model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If…&lt;/th&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Located decisions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1% of GeoGuessr's players each played 3 games&lt;/td&gt;
&lt;td&gt;2.4 million&lt;/td&gt;
&lt;td&gt;~12 million&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A GeoGuessr-sized daily audience played one round a day&lt;/td&gt;
&lt;td&gt;300,000 per day&lt;/td&gt;
&lt;td&gt;~1.5 million &lt;strong&gt;per day&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One city's residents played through a single hurricane season&lt;/td&gt;
&lt;td&gt;thousands&lt;/td&gt;
&lt;td&gt;tens of thousands, all in one city&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are scenarios, not forecasts. But even the smallest of them is more structured public input than most cities collect in a decade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why that data could change how cities plan
&lt;/h3&gt;

&lt;p&gt;Cities already run serious flood, heat and climate models. What those models are missing is &lt;em&gt;people&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Evacuation models make assumptions about how residents behave: which shelter they head for, which road they trust, whether they leave at all. Millions of real decisions made under real constraints are exactly the evidence those assumptions lack.&lt;/p&gt;

&lt;p&gt;When many residents keep choosing a place the model doesn't rank, that's a signal worth chasing. Maybe that building is the real community hub. Maybe that road floods earlier than the map says. Local knowledge stops being an anecdote and becomes a pattern a planner can investigate.&lt;/p&gt;

&lt;p&gt;And every game is a stress test. Thousands of players running thousands of different plans through the same simulated disaster explore far more of the possible solutions than any planning team could, and show which choices hold up and which fail.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;real city → human decision → simulated consequence → collective intelligence → better models and better plans&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  So we built Mayday Mayor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://maydaymayor.us/" rel="noopener noreferrer"&gt;Mayday Mayor&lt;/a&gt;&lt;/strong&gt; is a multiplayer disaster-planning game built on real city data that turns every game into public input for city planners.&lt;/p&gt;

&lt;p&gt;You pick a city: Raleigh, Miami, New York or San Francisco, each facing a different disaster. You run for mayor, alone or in a room where friends join by scanning a QR code. You get &lt;strong&gt;$10M and three minutes&lt;/strong&gt; to place shelters in real public buildings, evacuation bus pickups at real transit stops, and protection on the roads most likely to fail.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj0w0xxdpe2rar40vfjq3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj0w0xxdpe2rar40vfjq3.jpg" alt="Mayday Mayor start screen: a 3D globe with Raleigh, Miami, New York City and San Francisco pinned, above four city cards for hurricane flooding, storm surge, a heat wave and an earthquake" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Pick a city, pick a disaster: four real cities, each with its own threat.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9vlq1xye1twwvzmy37wo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9vlq1xye1twwvzmy37wo.jpg" alt="Planning screen over a map of Raleigh: budget fully spent, 2:54 left on the timer, 24,602 residents covered with a score of 75, shelters and bus pickups placed with lines linking pickups to shelters, and a tray of shelter, bus pickup and road protection pieces" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Three minutes, $10M: shelters go in real buildings, bus pickups at real GoRaleigh stops.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then the disaster hits. Water spreads through real FEMA flood zones. Roads close. Neighborhoods that stay completely dry suddenly get cut off, because every route to a hospital went under. Thousands of simulated residents either reach your shelters or get stranded, while a live AI news broadcast covers the chaos in English and Other languages, calling out what each candidate did and didn't plan for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq5rb9hxepxxp21c04mb9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq5rb9hxepxxp21c04mb9.jpg" alt="The storm at night over Raleigh: glowing floodwater along the creeks, an EMERGENCY ALERT news ticker, a live America News anchor reporting flash flooding, a storm timeline at 9:40 PM, and counters showing 18,167 protected and 1,387 stranded" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The storm hits. Gemini writes the news, ElevenLabs reads it live.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When the water settles, you see your score against the best plan our optimizer found, where you rank, and a spoken debrief of what worked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzfcb46a10htxk6mlghwk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzfcb46a10htxk6mlghwk.jpg" alt="Results panel, Leaderboard tab: the player ranked #6 of 44 on Raleigh's all-time board, with each plan's score, people protected and share of the best plan, over the post-storm map with shelters" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Where you stand: every plan in the city, ranked on the same benchmark.&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh9krvqpn2blysmjkwtdk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh9krvqpn2blysmjkwtdk.jpg" alt="Results panel, Debrief tab: a Gemini-written debrief naming the shelters and bus pickups that worked and College Crest being cut off from hospitals, a Listen button, the play's public record on Solana, and a See where Raleigh should act button" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The debrief, the play's record on Solana, and one click to the planner view.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But the part we care about most happens after you close the tab. Your game was a complete disaster plan, and it joins everyone else's on a &lt;strong&gt;planner dashboard&lt;/strong&gt; that shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;where to act first&lt;/strong&gt;, ranked and pinned on the map;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;where residents and the data agree&lt;/strong&gt;, so action has public support;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;blind spots&lt;/strong&gt;, the high-priority places players keep overlooking;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;local knowledge&lt;/strong&gt;, the places players keep choosing that the model doesn't rank;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;evacuation demand&lt;/strong&gt;, where people keep asking for bus pickups, exportable as CSV and GeoJSON for any GIS tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiui5bwxxiib82k09ws55.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiui5bwxxiib82k09ws55.jpg" alt="Planner dashboard, Where to act: numbered pegs for the top eight places on the Raleigh map, peg 2 highlighted with its label, beside a ranked list where every place is tagged Residents miss it" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;What planners see: the data's top places to act, and how rarely residents chose them.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every plan is also written to Solana, so the public record can't be quietly edited later.&lt;/p&gt;
&lt;h3&gt;
  
  
  What I learned
&lt;/h3&gt;

&lt;p&gt;I walked in thinking this was a disaster-data problem. I walked out convinced it's an &lt;strong&gt;engagement problem&lt;/strong&gt;. The people with the richest local knowledge are usually the least likely to show up to a planning meeting or open a GIS portal. So instead of asking them to participate more, we changed the incentive: make the problem fun, make the tradeoffs visible, let people compete, and then structure what they produce so planners and modelers can actually use it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Play it:&lt;/strong&gt; &lt;a href="https://maydaymayor.us/" rel="noopener noreferrer"&gt;maydaymayor.us&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Code:&lt;/strong&gt; &lt;a href="https://github.com/darshrank/ready-raleigh" rel="noopener noreferrer"&gt;github.com/darshrank/ready-raleigh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎥 &lt;strong&gt;Video:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=nFWUnzoFFWw" rel="noopener noreferrer"&gt;Watch the demo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Partner Technologies
&lt;/h2&gt;

&lt;p&gt;We used four partner technologies, and each one ended up doing a job the product depends on.&lt;/p&gt;
&lt;h3&gt;
  
  
  Tiger Data: the memory of every decision
&lt;/h3&gt;

&lt;p&gt;Every play, every piece a player places, and a live feed from &lt;strong&gt;27 USGS river gauges&lt;/strong&gt; plus National Weather Service stations for all four cities stream into Tiger Data &lt;strong&gt;hypertables&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What sold us was &lt;strong&gt;continuous aggregates&lt;/strong&gt; in real-time mode. The leaderboard, the crowd's picks per spot per city, and hourly river history all come from them, so a new game shows up on the planner dashboard immediately, with plain SQL and no separate analytics pipeline.&lt;/p&gt;

&lt;p&gt;Then we turned on &lt;strong&gt;columnstore compression&lt;/strong&gt;. River gauges produce a lot of rows, so we segmented by gauge and ordered by time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;gauge_readings&lt;/span&gt; &lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;timescaledb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;enable_columnstore&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;timescaledb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;segmentby&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'site_no, parameter'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;timescaledb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;orderby&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'time DESC'&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;CALL&lt;/span&gt; &lt;span class="n"&gt;add_columnstore_policy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'gauge_readings'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;after&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;INTERVAL&lt;/span&gt; &lt;span class="s1"&gt;'2 days'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A week of readings went from &lt;strong&gt;11.8 MB to 147 KB, 98.8% smaller&lt;/strong&gt;, and our poller kept writing into compressed data without a single change. The only surprise was that the policy's schedule is slow by default, so for the demo we compress due chunks ourselves at startup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini: dramatic, but never dishonest
&lt;/h3&gt;

&lt;p&gt;Gemini writes the &lt;strong&gt;live disaster broadcast&lt;/strong&gt; (cable-news reports about the storm and about each mayor's choices), the &lt;strong&gt;spoken debrief&lt;/strong&gt; at the end, and the text and &lt;strong&gt;artwork&lt;/strong&gt; of the civic cards players earn.&lt;/p&gt;

&lt;p&gt;We set one hard rule early: &lt;strong&gt;the AI can be dramatic, but it can never invent a fact.&lt;/strong&gt; A single made-up casualty number would undermine the whole idea of trustworthy public input. So the engine computes every number first and hands Gemini structured facts through a JSON schema. The server then checks every number in every generated line against those facts, and any line that fails is replaced by a template.&lt;/p&gt;

&lt;p&gt;It all has to happen inside a 20-second storm, in two languages, so we ask for the whole script the moment the storm begins and swap lines in as they arrive. Structured output was rock solid, and the image model produced art in our design's exact ink colors in about 10 seconds. The one curveball: a model we started with was retired for new API keys mid-weekend, so every feature now goes through one shared helper that falls back to the next model automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  ElevenLabs: the voice of the storm
&lt;/h3&gt;

&lt;p&gt;ElevenLabs gives the game its voice: two news anchors, &lt;strong&gt;America News&lt;/strong&gt; in English and &lt;strong&gt;Bharat News&lt;/strong&gt; in Hindi, plus the narrator and the debrief. Every clip is cached on the server, so a replayed storm costs nothing and still plays if the API is down. The voices are honestly what make people lean in during a demo. Small lessons along the way: Voice Library voices aren't available over the API on the free plan, and Hindi works with Flash v2.5 but not with multilingual v2.&lt;/p&gt;

&lt;h3&gt;
  
  
  Solana: a public record anyone can check
&lt;/h3&gt;

&lt;p&gt;We didn't want Solana to be "a blockchain integration". We wanted it to answer one question: &lt;strong&gt;how can a city trust that public input wasn't quietly changed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flbxag74983hdjn684t6d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flbxag74983hdjn684t6d.jpg" alt="Verify page asking Is this play on the public record?, with four green checks: fingerprint recomputed in the browser, decisions on Solana, inclusion in the Merkle batch, and the batch memo on Solana" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Anyone can verify a play in their own browser: no trust in our server needed.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Every play's decisions are on chain, in plain words.&lt;/strong&gt; Each game gets a Memo transaction like
&lt;code&gt;ready-raleigh:v1:play:raleigh:flood:ABCD:score=75.1:&amp;lt;fingerprint&amp;gt; | Shelter: Underwood School (Five Points); Bus pickup: GoRaleigh stop Peyton St at Brigham Rd; …&lt;/code&gt;
Anyone can read it in Solana Explorer. No names, just decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batches are anchored as Merkle roots.&lt;/strong&gt; Plays are fingerprinted with canonical JSON and SHA-256, and a &lt;code&gt;/verify&lt;/code&gt; page lets any browser recompute the fingerprint, walk the proof and read the memo straight from a Solana node, without trusting our server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Civic signals.&lt;/strong&gt; When the collected plans reveal something significant, like several different players backing a place the data also ranks highly, the server publishes it on chain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Soulbound civic cards.&lt;/strong&gt; Players who trigger a signal, or win an election, earn a &lt;strong&gt;Metaplex Core&lt;/strong&gt; card that can never be sold or transferred. We proved that on devnet: a normal asset transferred, ours was refused.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpdlnrukg5262ik9dzay0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpdlnrukg5262ik9dzay0.jpg" alt="Mayor-elect civic card with Gemini-generated art of a cheering mayor in a yellow raincoat on a flooded street, its title and flavour text, and attributes including city, people protected, score and play fingerprint" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A soulbound civic card: Gemini paints the art, Solana makes it permanent.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Fitting readable decisions into Solana's limits was a fun puzzle: memos max out at 566 bytes, and a card mint has to fit in a 1,232-byte transaction, where the mint itself takes about 700. Transactions confirmed in seconds for a fraction of a cent.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvkjibpardn4oag7rrqr0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvkjibpardn4oag7rrqr0.jpg" alt="Solana Explorer showing a Memo Program transaction whose data lists one player's decisions in plain text: shelters at named churches and schools and bus pickups at named GoRaleigh stops" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The same decisions, readable by anyone on Solana Explorer.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hackathon Experience
&lt;/h2&gt;

&lt;p&gt;We built Mayday Mayor in 24 hours at &lt;strong&gt;WolfHacks 2026&lt;/strong&gt; at NC State 🐺, for the Center for Geospatial Analytics track: four of us, Adit Shah, Darsh Rank, Sakhi Patel and me, building the cities, the multiplayer, the leaderboard and the blockchain layer in parallel in one repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  The hardest problem: every city is its own world
&lt;/h3&gt;

&lt;p&gt;The moment we went from one city to four, we learned the real lesson of this project: &lt;strong&gt;every new city is a new data problem.&lt;/strong&gt; Raleigh was built from Census block groups, FEMA flood zones, OpenStreetMap, FEMA's registered shelters and GoRaleigh's transit feed. None of it carried over cleanly. Miami's flood maps include coastal high-hazard zones. San Francisco's danger isn't water at all, it's earthquake liquefaction. New York's is heat. The other cities only had coarser Census tracts, and no shelter or transit data at all.&lt;/p&gt;

&lt;p&gt;Each one had to be translated into one engine, and the translation changed the game itself. In Raleigh, about 7% of people are at risk and the best plan scores 75. In Miami, 37% are at risk and the best plan scores 21. Same rules, a completely different city. Some of it we finished, and some is honestly still on our list: New York and San Francisco need their own heat and earthquake models. But it taught us that the hard part of scaling civic tech isn't the code, it's the data, city by city.&lt;/p&gt;

&lt;h3&gt;
  
  
  Teaching a map who can actually escape
&lt;/h3&gt;

&lt;p&gt;Coloring flood zones is easy. Knowing who can still get out is not. Our first version wildly overstated what a single shelter could do. The breakthrough was treating the city as a road network that breaks as the water rises: a neighborhood that never floods can still be trapped if every road to a hospital goes under. Once we modeled that, the game stopped being a coloring exercise and started showing things a flood map alone never could.&lt;/p&gt;

&lt;h3&gt;
  
  
  Making trust real
&lt;/h3&gt;

&lt;p&gt;The other thing we kept coming back to was trust. If this is ever going to inform a real city, the AI can't make things up and the public record can't mislead. That pushed us to validate every number the AI writes, to make every decision readable on chain, and to rebuild our civic signals when we noticed the on-chain history could tell half a story.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I'll remember
&lt;/h3&gt;

&lt;p&gt;The moment the whole loop worked end to end: a room of players planning on their phones, the storm hitting every screen at once, the anchors calling out each candidate by name, and then every decision showing up, in plain words, on Solana Explorer. That's when it stopped feeling like a hackathon project and started feeling like something a city could actually use.&lt;/p&gt;

&lt;p&gt;The question we're leaving with is bigger than disasters:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What if cities could rehearse their hardest decisions with millions of residents before they ever have to make them for real?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks to MLH, ACM at NC State 🐺 (Go Pack!), and every sponsor whose tools made this possible.&lt;/p&gt;

</description>
      <category>mlhacks</category>
      <category>devchallenge</category>
      <category>hackathon</category>
    </item>
  </channel>
</rss>
