Inspiration

There is a town in north-central Washington called Winthrop. Roughly 600 people live there. Yet this small mountain town, and the Methow Valley around it, has produced three Winter Olympians. Sort U.S. towns by Team USA athletes per capita, and Winthrop rises to the very top. That is not random. The Methow Valley has one of the strongest cross-country ski cultures in North America, with a massive trail network and a local Nordic pipeline that has become part of the area’s identity. That is the kind of pattern Hometown Atlas was built to find. Olympic and Paralympic geography is shaped by climate, elevation, population size, training infrastructure, regional sports culture, and years of local investment. The data exists, but it is scattered across rosters, Census tables, geographic records, and training center information. Hometown Atlas brings those pieces together into one interactive experience.

What it does

Hometown Atlas maps Team USA Olympians and Paralympians to the places they came from, then turns that geography into a dashboard users can explore, question, and reshape in real time. The main map shows one dot per athlete, colored by sport family. Users can add geographic overlays, including USOPC training centers and other layers that help explain why certain places keep appearing in Team USA history. The app also includes an Olympic and Paralympic lens toggle. When users switch lenses, the map, counts, filters, charts, story text, and Atlas responses all update with it. This was an intentional design choice to ensure total parity for our athletes. Across the top are 10 story plates. Each one investigates a different force behind Team USA geography, including climate, elevation, population scale, hometown density, regional sports culture, training infrastructure, historical eras, and how a user’s own hometown fits into the broader landscape. Each plate combines a map view, charts, and written analysis so the product feels more like data journalism than a static dashboard. The headline feature is Atlas, the Gemini agent built into the right side of the interface. Users can type a question, tap a suggested prompt, paste a follow-up, or talk out loud through voice mode. Atlas is not just there to explain the dashboard. It can control it. Ask Atlas to show medalists from winter sports after 2000, and it can update the filters, lens, and map for you. Ask why Park City keeps producing winter athletes, and it can answer with live Google Search grounding. Ask for a custom chart, such as a bar chart of medal counts by sport family, and Atlas can generate an interactive Plotly visualization directly inside the experience.

How we built it

The frontend is built with Vite and React 19. The U.S. map uses react-simple-maps and d3-geo with an Albers projection. In-plate charts use Recharts, while Atlas-generated charts render as interactive Plotly figures in the browser. The text chat runs through an Express backend. At startup, the server loads the precomputed analytics files, including analytics.json and states.json. For each request, it builds a Gemini system prompt using the current plate, lens, filters, and dataset context, then streams the response back to the browser. Voice mode uses the Gemini Live API through a Node/TypeScript WebSocket server. Each connection keeps a live Gemini session open, grounded in the same story plate briefs as the text chat but with a shorter conversational prompt. Users can interrupt Atlas mid-response, and it stops to listen. The custom chart workflow uses Gemini Code Execution. When a user asks for a chart, Atlas writes SQL against an in-process DuckDB database, uses Python in the sandbox to build a Plotly figure spec, and sends the spec back to the browser. The result is an interactive chart, not a static image. The 10 story plates were curated with help from Gemini Deep Research. I used it to explore the geographic, cultural, environmental, and infrastructure factors that could explain Team USA talent patterns, then shaped those findings into the final plate themes and editorial framing. Atlas, the AI agent, also received strict instructions to follow NIL and all content restrictions thoroughly.

Challenges

Geocoding was the first major challenge. Many profiles use local shorthand or unofficial place names, so simple matching was not enough. Getting to strong coverage required repeated pipeline runs, manual gap review, and a curated correction file. The second challenge was building real Olympic and Paralympic parity. The first version treated Paralympic data too much like a filter, but the patterns are different enough that the architecture had to change. The final pipeline computes both lenses side by side, and every major part of the app reads from that shared structure. Dynamic chart generation was also difficult. Pre-building every chart a user might ask for was not realistic, so the app needed a flexible SQL and code-execution loop. The main work was making the agent reliable: using the right columns, creating clean Plotly layouts, and returning charts without over-explaining them afterward. Voice mode had its own technical issues. The Gemini Live API made real-time conversation possible, but the mic stream, audio chunking, WebSocket flow, and interruption behavior all needed tuning so the experience felt natural.

What I’m proud of

I am proud that Hometown Atlas turns a complicated, scattered set of sports geography data into something people can actually explore. Instead of asking users to read a spreadsheet or interpret a static map, the app gives them multiple ways into the same question: where does Team USA come from, and what forces helped shape that geography? I am also proud of Atlas as an interface layer. It can explain what the user is seeing, search for deeper context, update the UI, and generate new visualizations from the source data. That turns the project from a fixed dashboard into an exploratory research companion.

What’s next

I would like to expand Hometown Atlas into coaching and program lineage. A lot of Team USA geography is really coaching geography, and future versions could surface the clubs, coaches, and local programs behind the hotbed towns. I would also like to build a public chart gallery. Atlas can generate a new chart whenever a user asks for one, and the best charts could become a curated collection that helps users build on each other’s questions. Hometown Atlas started with a simple question: why do certain places keep producing Team USA athletes? But the bigger question is what we can do with that knowledge. If we can understand the geography of existing talent pipelines, we can also start to see where future scouting, infrastructure, and investment might help uncover the next generation of Olympic and Paralympic athletes.

Built With

Share this project:

Updates