Inspiration
What if PokemonGO is also a social experience that encourages your curiousity?
So much of today's short form social media is about staying glued to your phone, passive browsing, and ever shifting attention - a leading cause of growing learning difficulties in the world.
CurioCity is a statement against every single aspect of the "doom scroll." It encourages you to go out into the world, to be a curious explorer, to make connections with people cross time and space, and to live and grow with what you have learned.
What it does
CurioCity is a Snap Spectacles Lens that turns everyday surroundings into a personal, social, AI-powered learning experience. It's built on four pillars:
Capture & Remix — Capture anything in your world with a two-hand pinch, and Momo, your AI learning partner, turns it into a short, surprising Curio Card based on a random interest of your choice. You can start a conversation with Momo about any card to ask follow-ups & learn more.
We kept noticing that the most memorable things we learn aren't the ones we sit down to study — they're the ones we stumble into. We designed the "remixing" of world capture and random interests based on a few findings:
Intersection of two disciplines often bring unexpected discoveries
Our interests are the best guides and windows through which to expand our understanding, and our world.
Exploration and discovery naturally makes you a more curious learner - it's a constant positive feedback loop that makes the world more exciting for you.
This is the chemistry of learning: remix what you already love with what you'd never expect, and something new sparks.
Explore & Share — Cards are location-based and meant to be shared. Clap your hands together in front of your chest - a prayer gesture "discovers the world" - sending out a ping that sweeps your location and reveals a cosmos of cards left by you and others. Save, comment, follow, or share your own capture!
When you find an interesting object, discover what others have learned about it - perhaps through an interest you never thought about before.
When you visit a new place, explore it together with others who have come before you, sharing a moment across space & time. Or, if you are the one daring explorer who arrived somewhere no one had ever been - leave what you learned there as your mark for the world to witness.
Relive & Remember — A living, evolving Mind Palace in the palm of your hand, where all your captured and saved cards live. Momo organizes everything spatially - by topic, relevance, and what it remembers about you. The more you capture, the more Momo knows about your way of learning.
Long-term memory helps Momo grow into your best learning partner. Revisit cards based on location on a globe, walk around a 3D mind palace to explore your memories, or simply ask Momo to pull up cards based on location, a recent trip, or any subject of your choice.
Collect & Battle — Challenge yourself and learn together by battling your friends in a game of trivia. The questions are generated randomly from both player’s card deck, so the player with more cards and knows them better wins. This completes our gamificaiton loop - Capture, Collect, Battle. A sassy, audio-only AI game-show host reads each question aloud and reacts to your play — easing off when you're losing, getting spicier when you're ahead. Classic game-show rules: fastest finger answers first, wrong answers hand your opponent a steal.
How we built it
CurioCity is a Spectacles lens built in Lens Studio. All of our model work runs through Snap's Remote Service Gateway (RSG). Momo and the battle host speak on Gemini Live; image understanding and battle-question generation use OpenAI vision and gpt-4o.
Architecturally, the lens is many subsystems that coordinate through a set of global.* singletons, so prefab-instantiated objects can reach shared state without scene wiring. Every conversational agent (welcome, nudge, recommendations, per-card chat, voice search, battle host) connects to Gemini Live through RSG, streaming speech back as 24 kHz PCM, with deliberate handoffs so only one live session runs at a time. The capture pipeline runs a two-hand crop into an OpenAI vision caption. The globe-to-map "dive" is a guided state machine that math-aligns the sphere and the flat map by footprint so the handoff reads as detail sharpening rather than a jump, with street imagery baked offline from OpenStreetMap tiles. Battle runs host-authoritatively on SpectaclesSyncKit, with questions generated from captured cards (gpt-4o) interleaved across both players, baked premade questions for the cosmos deck, and Snap Cloud / Supabase as an emergency fallback.
Challenges we ran into
A lot of the hard problems were about coordination — between sessions, devices, and clocks.
The biggest was that RSG keeps only the newest live session alive — two simultaneous Gemini sessions blank the device — so we had to make our voices explicitly hand a single session slot between each other, polling before connecting. The shared microphone is destructive and can latch dead: a failed start near launch leaves the provider "started-but-dead," so we built cycle-stop-start, exclusive acquisition, and a watchdog recovery. Getting a conversational model to read scripted lines faithfully took wrapping each line in a SAY: marker at temperature 0 — otherwise Gemini replies to the line instead of performing it.
Multiplayer was its own gauntlet. Per-device clocks aren't comparable, so buzz ranking had to move to the server clock with a short grace window to let the genuinely-earlier buzz win. The sync store had to be created unowned, or whichever device built it first would silently drop the host's writes. And UIKit buttons fooled us — their tap handlers only bind on start, so disabling a button at launch permanently breaks it.
Accomplishments that we're proud of
We're proud that Momo feels like a character, not a chatbot — pinned in persona, with an expressive audio-reactive orb and live typed-out captions, all running through the gateway with no keys on device. The globe-to-map dive turned out exactly how we wanted: a single continuous gesture from orbit to a street you can pan, with the seam invisible by construction. The discovery ping genuinely feels like magic — a wavefront sweeps your room and cards bloom into being as it reaches each one. And we shipped a real, latency-tolerant two-player trivia battle with an adaptive AI host that knows not to roast the player who's already losing.
What we learned
The throughline of everything we learned: separate the brain from the voice, and make the deterministic parts boring. Our line banks, tool declarations, and query logic are all model-free and trivially testable; the agents own only the live session. We learned to bake what never changes and generate only what's personal — the 37 fixed cosmos cards ship pre-authored questions instantly and for free, while only user-captured cards pay for an API call. We learned to keep placement math pure and deterministic — every card scatter is seeded by the card's id, so markers never drift between frames, zooms, or sessions. And on the networking side, we learned to publish conclusions atomically in a single synced prop so players never see a half-rendered round result.
What's next for CurioCity
More world, more curiosity. Right now the globe ships Tokyo, Seattle, and Los Angeles with a 37-card cosmos and 13 starting interests — the obvious next step is scaling the map and card library to far more cities and topics, so discovery feels dense everywhere you go. We want to deepen the social layer: richer profiles, following the people whose cards you love, and curated trails through a neighborhood. We'd like to grow Battle beyond two players into small-group play and themed decks. And longer term, we want CurioCity to become a living, shared atlas of human curiosity — every wall, dish, and street corner annotated by someone who found it interesting, waiting for the next person to walk by.
Built With
- edge-functions
- gemini
- gpt-4o
- lens-studio
- supabase
- type-script
- voice-agents






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