Inspiration
Body Atlas began with a simple question: what if Team USA history could be explored as a living map of body patterns instead of a spreadsheet of records?
I wanted to honor the sheer grit, will, and perseverence of these athletes, who are undoubtedly at the top of their respective sports. So naturally, I felt that the best way to do this was to build something that felt human, visual, and memorable. The goal was not to predict performance or compare users to individual athletes. The goal was to help people see where their own profile lands inside 120 years of Olympic and Paralympic public data.
What it does
Body Atlas turns anonymized public Team USA athlete records into an interactive atlas.
A user enters height, weight, age, and optional sport interests. The app maps that profile to the nearest aggregate body-pattern zone in the atlas. It then explains the result in plain language, shows nearby sport lanes to explore, and lets the user travel through time to see how Team USA body patterns changed from 1904 to 2024.
The app never identifies an athlete, predicts performance, assigns a Paralympic classification, or recommends a best sport.
How I built it
I built Body Atlas with Flask, Python, JavaScript, HTML Canvas, Cloud Run, Cloud Build, and Vertex AI Gemini.
The data pipeline ingests public Olympic, Paralympic, and Team USA source data, normalizes it into anonymous records, clusters the records into body-pattern zones, and exports static JSON artifacts for the frontend.
The runtime app uses deterministic matching for the user's map position. Gemini does not decide where the user lands. Vertex AI Gemini generates approachable narrative explanations from aggregate context only. A deterministic safety auditor checks the generated text before it reaches the user.
I also added Gemini Live narration so the result can be read aloud with a more natural voice.
Challenges I ran into
The hardest challenge was balancing impact with data limits. Public Paralympic biometric data is much sparser than Olympic data, so I had to design the experience to show that clearly instead of hiding it.
Another challenge was simplifying the interface. Early versions felt like a technical dashboard. I redesigned the app around one main idea: the map is the product.
I also had to keep Gemini tightly bounded. The app needed exciting explanations without drifting into predictions, prescriptions, athlete matches, or classification claims.
Accomplishments that we're proud of
I built a full end-to-end public-data atlas, from ingestion and clustering to a deployed cinematic frontend.
I are proud that the app treats Olympic and Paralympic records within the same visual system while still making data coverage gaps visible.
I are also proud of the safety architecture. Matching is deterministic, frontend data is anonymous, and Gemini only receives aggregate context.
The final experience feels more like an interactive story than a dashboard, which was the goal.
What I learned
I learned that a strong data product is not just about model depth. It is also about framing, restraint, and trust.
I learned that non-technical users need a clear emotional path through the experience. The best version of Body Atlas is not the one with the most controls. It is the one where a user immediately understands what they are seeing.
I also learned that responsible AI design requires strong boundaries around what the model can and cannot say.
What's next for Body Atlas
Next, I would expand the data pipeline with more complete Paralympic source coverage and stronger validation from domain experts.
I would also move the renderer to WebGL for smoother large-scale animation, add richer decade-by-decade storytelling, and improve the story route for judges, coaches, athletes, and fans who want deeper context.
Longer term, Body Atlas could become a public education tool for exploring the diversity of Team USA bodies across sports, eras, and competitive paths.
Built With
- css
- gemini-2.5-flash
- gemini-live-api
- google-cloud
- html
- javascript
- numpy
- python
- scikit-learn

Log in or sign up for Devpost to join the conversation.