Inspiration
Gogo Thandi loves Jim Reeves and Miriam Makeba. Her grandkids love Burna Boy, Lucky Dube and Ladysmith Black Mambazo. They love each other, but Sunday lunch runs out of things to say after ten minutes.
About 1 in 6 people worldwide experience loneliness (WHO, 2025), and often the people we love are right there in the room. We just don't know how to step into each other's world. Every app we found compares people who already match: two people who like the same films, or the same Spotify playlists. Nobody was building the bridge between people who don't match. That's where Qloo's taste graph shines: it knows what a Jim Reeves fan and a Burna Boy fan might both enjoy, which no amount of guessing can.
What it does
Common Ground is an AI agent for 2 to 5 people who have drifted apart: a grandparent and grandchildren, a couple who've grown distant, a parent and a teenager, a carer and a resident, or two people about to go on a first date.
Each person adds a few favourites (singers, films, shows, books, places, teams), searching Qloo directly with category buttons. You can fill in for someone else, or tap Invite them to add theirs and send a link on WhatsApp so each person picks their own. The agent then finds:
- Bridges: films, music, shows, books and places the whole group is likely to enjoy.
- Swaps: from each person's world, the one thing the others are most likely to love ("Gogo, play them Sibongile Khumalo first").
- Surprises: non-obvious cultural links the data shows.
- A plan for the next visit that names real things ("Sipho plays Gogo some Davido · Watch King Richard together · Lunch at 1947 on Vilakazi Street"), with one-tap Listen, Watch trailer and Directions buttons, so the plan becomes something you do on the sofa straight away.
- Conversation starters with a script: each one says who asks whom, opens with a fact from Qloo's data, and has a follow-up. Sipho → Gogo: "Gogo, who was a sports hero you loved following when you were growing up?" If she lights up: "What made watching them so special back then?" One invites the older person to tell a story, one lets the younger person teach, one is a playful this-or-that.
Every connection is saved on your device, so you can come back to Gogo Thandi and the grandkids, visit 3 and carry on.
After the visit you tap what landed. The agent folds that into everyone's taste and plans the next visit, telling you what it changed: "We kept the upbeat African rhythms that worked so well with Davido, while shifting away from sports drama toward The Boy Who Harnessed the Wind."
For judges: click Watch a live example on the home page to see the agent plan Sunday lunch for Gogo Thandi and her three grandkids in Johannesburg, no typing needed. Then try it with your own family.
How it's Qloo-powered
Qloo isn't a decoration here; it's the reasoning engine for taste. Four Qloo calls do the work:
- Resolve "Brenda Fassie" to a real entity, optionally within a category:
/searchwithtypes - Bridges, one blended taste signal from everyone's favourites:
/v2/insightswithsignal.interests.entities=A,B,C - Swaps, one person's world re-ranked by everyone else's taste:
/v2/insightswithfilter.results.entities - Real places nearby:
/v2/insightswithfilter.type=urn:entity:place,filter.location=POINT(lon lat)and a 15 km radius
Evidence is enforced in code, not just in the prompt. Every bridge and swap must point at an entity id that a Qloo call actually returned during that run, or it's dropped before anyone sees it. Things the people already love are dropped too, so every suggestion is a discovery. Everything on screen is labelled From Qloo data or Agent's idea.
How the agent works
The agent runs a tool-calling loop on Google Gemini, in rounds, and you watch it think:
- Round 1, explore. It chooses its Qloo lookups (bridges across several categories, places near the chosen town) and gives a one-line reason for each.
- Round 2, react. It reads what came back, notices whose world the results lean towards, and targets the gap. From a real run: "The bridges leaned towards classic Afro-jazz and gospel, so I am exploring what from Sipho's modern Afrobeats universe Gogo Thandi and the family would love."
- Plan. It submits the plan; the server attaches the real Qloo entities and drops anything without evidence.
- Learn. Feedback from the visit shapes the next plan, and the agent says what it changed.
The results open with an Agent's notes card (what it explored, what it noticed, how it balanced the group, and how many Qloo lookups it made), and every step is kept with its reasons.
How we built it
- Plain HTML, CSS and JavaScript front end with no framework or build step, mobile-first.
- Two serverless functions on Vercel: Qloo search, and the agent, which streams its research steps to the browser as it works.
- Google Gemini for the agent's reasoning and tool calls, with automatic fallback across models if one is busy.
- Town suggestions from Photon (OpenStreetMap), so Qloo searches by exact coordinates.
- Photos generated for the project with Figma AI.
- Offline unit tests with Node's built-in test runner: the agent loop with fake Qloo and Gemini, the evidence rule, model fallback, input checks, the Qloo request queue, the place filter and invite links.
Challenges we ran into
- Place names are matched loosely. A text search for "Durban" returned cafés in Durbanville, Cape Town. We added type-ahead town suggestions and switched to exact coordinates with a 15 km radius.
- Not every nearby place is a place to visit. Qloo's results near people with a given taste include schools, radio stations, holiday villas and a supermarket. Blocking them one by one never ended, so we keep only places whose Qloo categories make them somewhere to spend an afternoon: restaurants, cafés, venues, museums, parks and markets.
- Rate limits. The agent asks for around ten lookups at once, which tripped the hackathon key's limit once deployed. Qloo requests are now queued, at most four at a time, with a retry on rate limits.
- An agent that looked like a spinner. The first version did all its lookups in one go, so it never reacted to anything. Splitting research into two rounds made it genuinely adaptive, and showing its reasons made that visible.
- African data coverage. Our audience is African families, so we tested Qloo with South African and Zambian favourites. Music is strong (Kabza De Small leads to Kwesta, DJ Maphorisa and Prince Kaybee; Oliver Mtukudzi to Thomas Mapfumo and Oumou Sangaré). Local TV is thinner: Skeem Saam has no recommendations, local shows come without descriptions, Generations and Gomora exist in the graph but aren't found by name, and some artists (Makhadzi, Chef 187) and brands (Chicken Licken) are missing. Blended recommendations for mixed groups lean American. We designed around it: labelled search results with category buttons, an agent that prefers picks specific to the group, and clear labels for what comes from Qloo. Richer African data would make the bridges even better, and we'd love to help test it.
- Honest scope for couples and first dates. This isn't counselling, and we say so, with helplines for any country (findahelpline.com) and first-date safety tips on those screens.
Accomplishments that we're proud of
- The swaps technique: ranking one person's world by another person's taste is something only a taste graph can do, and it produces the most delightful moments ("play Gogo Omah Lay first").
- Real, specific, local plans: Robben Island Museum in Cape Town, Maison on Florida Road in Durban, 1947 on Vilakazi Street in Soweto.
- An agent you can watch decide, adapt and learn, with every recommendation traceable back to Qloo data.
- A complete product, live and free to use, with no accounts.
What we learned
- Taste data is most powerful between people who are different. That's where an LLM's guesses are weakest and Qloo's graph is strongest.
- Showing an agent's reasoning matters as much as having it: the same agent felt like a loading screen until its reasons were on screen.
- Enforcing evidence in code is simpler and more trustworthy than asking a model nicely.
What's next for Common Ground
- Accounts and sync: connections are already saved on your device; signing in would let a family share one connection across phones.
- WhatsApp first: most of the people this is for live in WhatsApp, not in web apps.
- Care homes: a version for carers, built around residents' life stories and reminiscence.
- Local languages: isiZulu, isiXhosa, Sesotho and Afrikaans, so gogos can use it themselves.
- Find your people: for someone who is alone, the same taste graph can point to real places nearby where people like them gather.
Built With
- css3
- figma
- gemini
- html5
- javascript
- node.js
- openstreetmap
- photon
- qloo
- vercel
Log in or sign up for Devpost to join the conversation.