Inspiration

Young adults are the loneliest age group. In the Meta-Gallup survey across 142 countries, 27% of 19 to 29-year-olds said they felt lonely. Many of them already talk to chatbots about their day and their taste. But a 2025 study by OpenAI and the MIT Media Lab found that heavier chatbot use went with more loneliness, not less.

Generic AI chatbots have two problems for this. They guess taste. Ask one for "a film we'd both like" and you get confident picks it cannot check, sometimes titles or places that don't exist, and never a real café that is open on Saturday, five minutes from you. Their picks also carry their training bias: they lean towards whatever was most written about online, so the same famous titles come back for everyone and smaller, local or non-English favourites get missed. And they keep you on the screen. A chatbot is built to keep the conversation going, so the lonelier you are, the more you talk to it instead of to people.

There is a better use for an AI here. A randomised field study (Sun and Taylor, 2020) found that simply showing two people what they have in common made them more likely to become friends.

So we built Larry the other way round. Larry does not want to be your friend. It wants to get you to a person, help you find something real to talk about, and then get out of the way.

We designed it for the people who find the first hello hardest: people with social anxiety, people with a stammer or another speech difficulty, and people with Down syndrome, for whom saying "I like this" out loud can be the hard part. Every action in Larry can be done by tapping pictures alone.

What it does

Larry is one loop that starts with your taste and ends at a real door.

  1. Make your taste card. You tap posters from real Qloo results across all 11 Qloo categories: films, TV, music, games, books, podcasts, sports teams, players, brands, travel and people. No typing needed, no account needed. The back of your card shows your Taste Fingerprint: how many of your picks sit outside Qloo's most popular 10%, plus one "Ask me about..." line, so whoever you show it to has an easy first question.

  2. Start a group by QR. You are with someone in person. You tap "Start a group", pick the size (2 to 5 people), and show the group QR. Each person scans it to join. Scanning is the consent: nobody can be added to a group, invited or messaged out of the blue. The QR stops working after 15 minutes or when the group is full.

  3. Larry finds your common ground. When the group forms, Larry posts one opening message. It names a few "bridges": things everyone's taste points to, found in Qloo's taste graph. Each comes with "Why this?", which names whose picks led there ("Priya's Spirited Away and Sam's Minecraft both point here"). Larry drops the weak fits, adds an easy opener, and then goes quiet. After that it speaks only when someone taps the @Larry button and picks a command (Plan, Common ground, Gems, Twin, Match Day, Mood, Excuse, Hello, Help).

  4. Larry writes a Plan Ticket at a real, open place. Tap Plan and Larry turns the chat into one concrete plan: a real nearby venue from Qloo, tagged Calm, Cosy or Lively, at a time it is actually open. The ticket says why each person would like the place, the shared thing to bring up, an easy opening line, what to do there, and a plan B. It can add a second stop a short walk away, in walking order. It is a plan, never a booking.

  5. Check in when you get there. At the venue you tap Arrive, and Leave when you go. A visit counts only if your phone is within about 150 m of the place both times, at least 20 minutes apart, and the place is open. Your location is checked on the server and then thrown away.

  6. Earn Glory and titles. A verified visit earns Glory, one lifetime score that never goes down and never comes from screen time. Places give you private stages (Rookie, Regular, Veteran, Elite, Legend) that only you see. If you choose to, you can appear on a place's podium (Final Boss, Guildmaster, Shogun) under an anonymous name that is different at every place. Monthly quests ("Try 2 calm places this month") complete only through real check-ins.

  7. Take the next rung. Larry's next move on your home screen suggests the next step: the same place again, or one rung up the Quiet-to-Lively Ladder, steered by your mood that day (Chill, Social, Curious, Low energy, Hype).

Other ways in:

  • Talk taste with Larry: a short solo chat where Larry learns your taste (new loves, dislikes, the kind of places you like). You can see and edit everything it learned on "Your taste, by Larry".
  • Pick a pal: practise talking about what you love with a friendly made-up pal who has real Qloo tastes. Rounds are short and end by pointing you to a real person.
  • Open to meet (adults only): at a venue where you have checked in, you can let Larry tell you that someone else here shares your taste. Nobody sees anything more unless you both wave.

How we built it

  • The app: Next.js 16 (App Router), React 19, TypeScript and Tailwind CSS v4 with our own design tokens. It installs on a phone's home screen.
  • The agent: Claude (claude-opus-5-5) running in the Anthropic SDK tool runner. Larry's tools include find_common_ground, recommend, add_interest (mention a new favourite and Larry looks it up in Qloo and adds it to your card), remember (learn a dislike or a place preference, only when you say it), find_places_nearby and make_plan_ticket. Every tool is backed by Qloo or by our own checks, so Larry's claims come from data, not guesses. The chat streams progress ("Checking Qloo for games you'd both like...") while the tools run.
  • Checked output: every line Larry writes is validated before it is shown. A Plan Ticket can only name a place, time and item that came from the tool results. If the model fails, a fixed fallback line takes its place.
  • One command list: the @Larry menu in groups and read the same command file, so they always behave the same.
  • Accounts: Firebase phone sign-in (SMS code) for adults. Accounts live in Firestore, which the security rules close to every client read and write; only our server talks to it. Nobody needs an account to make a card, use Talk taste, Pick a pal, places or check-ins.
  • Amazon Location Service: Qloo picks every place. Amazon Location only fills in opening hours when Qloo has none, cross-checks the venue pin, gives walking time, and orders a two-stop plan. If it fails, the Qloo-only ticket still works.
  • Amazon Comprehend: PII detection runs on group and Open to meet messages, on top of our own red-flag patterns, to catch phone numbers, addresses, emails and handles, even written out in disguised ways. Larry then steps in kindly. Messages are not stored by this check.
  • Tests: 886 unit tests (Vitest) and 162 end-to-end tests (Playwright) on desktop and phone sizes.

How Larry uses Qloo

Qloo is the part of Larry that knows what real people like. Here is each call and what it does for the person.

  • Search with pictures. /search turns taps and spoken titles into real Qloo entities with poster art. Match Day searches always pass a type, so "Mumbai Indians" finds the cricket team and not a football club.
  • Cross-domain common ground with explainability. /v2/insights takes everyone's picks as one signal, with feature.explainability=true. Explainability tells us how much each person's picks drove each result. A result becomes a bridge only when every person's credit clears a threshold. We rank bridges by balance, so a bridge has to come from everyone, not just one loud card. We drop results credited only to a pick people already share, and remove franchise repeats. This is how a film lover and a gamer meet at the same game: Spirited Away leads to The Legend of Zelda: Breath of the Wild in games, at a Qloo affinity of 0.885.
  • Real places, filtered by location. Place insights with filter.location, a radius and hangout tags (cafés, bookshops, board-game spots, libraries) find low-pressure venues that fit the group's taste. A second explainability call says which person's picks drew each place, which becomes "why you'd like it" on the ticket. Larry reads each place's tags to label it Calm, Cosy or Lively, which drives the Ladder.
  • Hidden Gems with the popularity filter. When the common ground is too obvious, Larry offers to dig deeper (/gems, or "Dig deeper" in a group). That call adds filter.popularity.max, so Qloo returns less-known things the group's picks still point to. Mood uses the same filters: Curious leans to the long tail, Hype leans to the well-known.
  • Taste Fingerprint from popularity and affinity. The fingerprint counts how many of your picks sit outside Qloo's top 10% by popularity, and only shows a number once Qloo knows at least 3 of your picks. Its "Ask me about..." line is a real cross-domain Qloo recommendation from your strongest category.
  • Match Day. When people in a group share a sports team or player, Larry uses Qloo to find the team and a bridge for anyone who isn't a fan, built from their own picks (for example, Virat Kohli plus Spirited Away leads to Like Stars on Earth). Fixtures do not come from Qloo, so Larry only names a date from a hand-checked fixture list with its source shown. When there is no checked fixture, Larry says so honestly and offers a different plan.
  • Demographics. You choose an age range once (never a birthday). Only that coarse range is sent to Qloo as signal.demographics.age, so suggestions suit your age group.
  • Big near you. In card making, a picture row of films that are popular around your rough area (signal.location, a city-sized cell), so you can tap a familiar poster instead of spelling a title.

Why Larry would not work without Qloo. Without Qloo, Larry would be guessing at taste, and guessing is the problem with chatbots we set out to avoid. There would be no real cross-domain bridges, no "Why this?" naming whose picks led there, no popularity numbers for Hidden Gems or the Fingerprint, no taste-matched real places for the Plan Ticket, and no fair bridge for the friend who isn't a sports fan. Every step after the taste card stands on a Qloo result. Larry's job is the judgement on top: picking which results truly fit everyone, saying why in plain words, and turning them into one plan people can actually do.

Design and accessibility

  • A card table, not a chatbot. Your taste is a trading card with a coloured edge for each category. Common ground is "dealt" between cards on a dark play mat. Larry's face (our one illustration) appears in the header, in chats and at Larry's moments: thinking, a verified check-in, and the Glory moment. The badges are drawn in code, with the title word as real text.
  • Easy-read everywhere. Short sentences and plain words. Atkinson Hyperlegible for reading, Anybody for headings.
  • Tap-only. Every action can be done by tapping alone. Typing is optional, and speech-to-text is there for anyone who prefers to speak. The date of birth at sign-up is three large selects, never a typed date. Usernames are pre-filled with a made-up name and a "New name" button, so nobody has to invent one under pressure.
  • WCAG 2.2 AA as the minimum. High-contrast text, tap targets of at least 48 px, visible focus, live regions for loading and replies, and reduced motion respected.
  • Warm copy. Every limit, error and safety note says first what you can do and what is protected, in one or two sentences, with no fear words. When your Larry time runs out: "That's your Larry time for now! Everything else (your card, places, plans) still works."
  • Witty, with a plain line beside it. Larry writes fresh lines from the real shared items ("Somebody nearby has also cried at Coco. Twice, probably."). A "Plain words" setting keeps only the plain version.
  • Never addictive to the screen. No feeds, no endless chat, no daily streaks, no read receipts or typing dots. Weekly counts pause when you miss a week; they never reset, and Larry never says "you lost".

Safety and privacy

  • Consent by QR. You can only be in a group by scanning its QR in person. There is no user search, no follow and no direct message to strangers. Anyone in a chat can Leave, Unfriend, Block or Report in one tap. Unfriend is silent and immediate.
  • No stalking. Nobody can see anyone's location, venue history, schedule or "last seen". There are no maps of people. Private stages are visible only to you, because they could reveal a routine. On a public profile, strangers see a username and title counts only, never venue names or times.
  • Podiums are opt-in and unlinkable. "Show me on place leaderboards" is off by default. When it is on, you appear under a different anonymous name at each place, so a podium name cannot be traced to a profile.
  • Open to meet is for adults, both ways. Both people must be 18+, checked in at the same public venue, and opted in. Before both wave, each sees only a count ("2 people here like Ghibli"), never a name, photo or card, and a count under 2 is never shown. Visibility ends when you leave or after 3 hours. Any meeting is suggested only at that public venue.
  • Counts, not a diary. Your account keeps folded counts: place, visits, stage. No arrive or leave times and no week-by-week history ever leave your phone. Your location is checked at the moment of a check-in and then thrown away.
  • PII watch. Larry watches group and Open to meet messages for phone numbers, addresses, money requests and pressure to go somewhere private, and steps in kindly ("Let's keep numbers and addresses out of here for now. Meet at the place first.").
  • Crisis help first. Every message is checked for crisis language before the model runs. If it matches, Larry answers with a calm, caring message and helplines, and "Need help now?" is always one tap away.
  • Age. Accounts are for adults, in line with India's rules on minors' data. Under-18s can still use Larry on their own device (card, Talk taste, Pick a pal, places, check-ins) with no account, no groups and no Open to meet. Age is never shown to anyone.
  • You can delete it all from one place in the app.
  • Larry is labelled as an AI everywhere it speaks. It is not therapy, and it never claims feelings or tastes of its own.

Challenges we ran into

  • Making bridges fair. Early bridges came from one person's card while the other person's picks barely counted. Reading Qloo's explainability scores closely gave us the per-person threshold, the balance ranking and the franchise de-duplication.
  • Being honest about what Qloo can and can't say. We tested each Qloo-powered idea live before building it. Some did not hold up as first designed. There is no "rising in your city" list, so that idea became "Big near you", named for what it really is. A shared taste map left one person's taste out, so we kept it off. Match Day never invents a fixture.
  • Check-ins that mean something, without tracking anyone. We wanted titles you can only earn by really going, but we refused to keep a location history. The answer was to check each tap on the server, keep only a count, and throw the location away.
  • Safety without fear. Open to meet had to be safe enough that we would let a friend use it, and still feel warm. Every safety rule has a kind, plain sentence next to it.
  • Tap-only for everything. Commands in group chats come from one @Larry button with a menu, so nobody needs to type a slash command.

Accomplishments that we're proud of

  • An agent that measures success by how little you need it: by real visits and First Steps, not time in the app.
  • Every recommendation comes with a reason that names whose taste led there.
  • A loop that really ends outside: a real place, open at that time, with a verified check-in at the end.
  • A privacy model we can explain in one line: "We keep counts, not a diary."
  • A card-table design that feels like a game you play with friends, built to WCAG 2.2 AA with easy-read copy throughout.

What we learned

  • Taste only breaks the ice when it is specific and true. "You both like movies" starts nothing. "Your Spirited Away and their Minecraft both point to Zelda" starts a conversation.
  • Explainability matters as much as the result. Being able to say why turned Qloo's output into something people trust.
  • The best thing an agent can do in a social app is know when to be quiet.
  • Writing the safety rules in warm words changed the design itself, not just the copy.

What's next for Larry

  • Test with the people it is for: students in freshers' week, a stammering support group and a disability youth group. We have no users or metrics yet, and we will not claim any.
  • WhatsApp, where most of our first users already talk with their friends.
  • A native app with device integrity checks, so check-ins and titles are even harder to fake.
  • Moments that need two people at the place at once: "Times we've met", Duo weeks, Our Spot, Host, and Glory for plans both people actually attended.
  • Real fixtures for Match Day from official league schedules, with the source always shown.
  • Voice: hold-to-talk with Larry for people who find typing hard.

Built With

  • authentication
  • claude
  • cloud
  • css
  • demographics
  • firebase
  • firestore
  • insights-with-explainability
  • location
  • next.js
  • place-insights
  • popularity-filters
  • qloo-taste-ai-(search
  • react
  • sdk
  • tailwind
  • typescript
Share this project:

Updates

Submission history