GIS Analyst · Chicago

GIS that makes the overlooked undeniable.

Real maps, real data, real people who needed someone to notice. New ones posted here roughly every week.

AI Use

Every project on this site was built with AI, specifically Claude, doing the actual coding, data pipelines, and research. That's already in my footer on every page. This is the longer, honest version: what that actually means, and what I think about it.

What AI actually does here

Claude writes the Python, builds the data pipelines, queries the APIs, and writes the first draft of every case study on this site. For a project like the Chicago access equity map, that meant pulling a real 319,517-node OpenStreetMap street network, running the actual network analysis, and building the interactive frontend, largely without me touching code directly.

What I actually do: pick the subject, say what I want the map to prove or show, judge whether a data source is good enough to use, decide what gets cut when a finding doesn't hold up, and review the result before it goes live. The personal knowledge, for something like knowing my friend's faith well enough to know Iceland's government tracks Ásatrú membership by name, or knowing which Chicago neighborhoods a map result should sanity-check against, is mine. I do have an undergraduate degree in software analysis and development, but I'm not a full-time software engineer and haven't worked as one since. What I bring is that background plus GIS training, domain judgment, and the willingness to check the work instead of just shipping whatever came back.

Where I draw the line

  • Every number on this site is supposed to trace to a real, named source: a federal agency, a peer-reviewed paper, a government statistics office, live OpenStreetMap data. When a source doesn't cover something, the site says so instead of filling the gap with an invented number. The endangered species map does this explicitly, showing "no clean count exists" for species where that's the honest answer.
  • Claims get tested, not assumed. The Chicago access equity map and its "Change since 2010" view exist because a viewer asked a plain question, "I toggle between years and see no difference, is that right?", and the honest answer turned up a real bug (a panel silently hardcoded to one year) sitting next to a real finding the original design was hiding.
  • When I contribute code to other people's projects, specifically the Humanitarian OpenStreetMap Team's open-source tools, I tell the maintainers up front that AI helped write and review it, following HOT's own published policy on the subject, and every change gets run against the project's real test suite before I open a pull request. More on that on my About page.

On the ethics of AI in GIS

GIS work increasingly feeds decisions that affect real people: where disaster response goes, which neighborhoods get infrastructure investment, how a health department tracks an outbreak. Milan Janosov, a geospatial data scientist I follow and cite directly on my About page, wrote plainly about the stakes: GeoAI systems "can track human movement at scale, identify vulnerable populations, and make consequential resource allocation decisions," and whether that "serves humanity broadly or reinforces existing inequalities" depends on real oversight, not on the model being fluent. Read his piece (opens in a new tab)

He also makes a point I take seriously: geographic training data is unevenly distributed, models built on well-mapped regions can fail quietly in places with less data, and "human expertise remains irreplaceable" for actually validating what comes out. Fabricated or biased output doesn't announce itself, it looks like a real result until someone actually checks it, which is why every project on this site gets tested, not just generated.

There's a genuine access argument too, and I don't want to skip past it just because it's about me. I have real GIS training and a software development degree, but I haven't worked as a professional developer in years. AI tools are a real part of how someone with my background gets to build at this scale and pace on my own, not a shortcut around doing the work. That's worth saying honestly, the same way the risk is worth saying honestly.

None of that erases the real costs: the compute and energy behind every model I run, the open questions about what these tools mean for entry-level GIS jobs, the fact that I'm still the one responsible when something's wrong, not the model. I don't have a tidy resolution to any of that. I think the honest position is to keep using the tools where they genuinely help, say so plainly, and hold the output to the same bar I'd hold my own work to, or higher, since it's my name attached to it either way.

Where this actually started

This whole site exists because of a guide a friend and LinkedIn connection, Juliana McMillan-Wilhoit, wrote and shared with me. She's Chief Product Officer and Co-Founder of F&T Labs and has run her own GIS portfolio challenge to help other people showcase their work. Her core line is the one I've tried to actually live up to on this page: "The thinking, the reflection, the decisions about what to include and how to frame it: that is all you."

Juliana McMillan-Wilhoit's portfolio guide

A nine-phase process for building a live, self-hosted GIS portfolio with Claude Code: content database, brand identity, thesis, resume, visuals, story, build, deploy, share. This site was built by following it.

julianamapper.com/portfolio-prompt (opens in a new tab)

And credit where I've already given it once but it belongs here too: Milan Janosov's GeoAI writing is a real part of my own self-directed study, alongside Qiusheng Wu's open-source geospatial Python tools. Their work is why I know enough to have an actual opinion on this page, instead of a borrowed one.