I don’t see the opportunity.
We might both be studying or running errands, but neither of us thinks to turn it into a hangout.
A product exploration for Sparkchat
Helping friends discover plans they could share, without the awkwardness of asking first.
Sparkchat got the plans out of the group chat. But “I’m working at this café” still left me wondering: am I invited, or are they meeting someone else? Then there’s the opposite moment: “You went to that store yesterday? I wanted to go too!” Crossed started with both—the invitation we’re unsure about, and the plan we only hear about afterwards.
Sparkchat’s Broadcast feature lets you share a plan and invite friends to join. But there’s a moment before pressing Join that I found interesting: did they actually want me there, or did they just share it with everyone?
Seeing a plan isn’t always the same as feeling invited.
We might both be studying or running errands, but neither of us thinks to turn it into a hangout.
A friend broadcasts a gym plan. Did they want me to join, or did they just share it with everyone?
What if Sparkchat could spot those opportunities and invite us both? Crossed starts with the things we’re already doing, finds a plan we could share, and gives us that opening without either person having to ask first.
I asked people about the plans they do alone, the friends they’d like to see, and what gets in the way. Their answers gave me a starting point—and a reason to look beyond just making a match appear.
Exploratory survey · Percentages of respondents, rounded to whole numbers.
They had one or more people they’d be happy to hang out with, but rarely talked to or made plans with.
In the last 30 days, they’d done something alone at least twice that they’d have enjoyed with a friend who had a compatible plan.
People could choose more than one reason, so these percentages don’t add up to 100%.
Studying and working were the most selected plans people could see themselves sharing, followed by gym and leisure plans. These gave me practical activities to start with.
Selecting Sarah meant different things to different people: some would genuinely be happy to do the activity together, while others would probably be okay with it. I’d need to test whether the selection screen makes that intention clear enough.
“How often do you have something you plan to do alone that you would also be happy doing with a friend?”
I also asked about missed opportunities in the last 30 days, barriers to reaching out, friend selection, and what people would do after a match.
Most respondents chose moderately close friends as the group this would be most useful with. That gives me a more specific audience to explore than assuming it’s equally useful with every friend.
I add something I’m already planning to do and privately pick friends I’d be happy to see. Crossed compares our activities, times, and locations. If a friend picks me too and our plans fit, Crossed brings the idea to both of us: here’s something you could do together.
Share what I’m already doing, where and when. No new event to organize.

Select who I’d like company from. They make their own selection independently.

Crossed reveals the shared plan to both friends, with a way to start chatting and work out the details.

I wanted the suggestions to be worth saying yes to, so I kept adding rules: enough time, a practical location, mutual interest. Each one felt reasonable. But put them all together… I’d made it surprisingly hard for two plans to match.
Both people have to pick each other. That removes the guessing, but means fewer friends can become a match.
I wanted enough time to hang out. The downside: a perfectly good quick coffee wouldn’t count.
Meeting has to be practical. Even if everything else fits, being too far apart can rule it out.
Look up to three days ahead and focus on one match at a time. Simpler to act on, but fewer options to choose from.
That gave me something specific to check in testing: which rules were protecting a useful match, and which were ruling out a perfectly good coffee with a friend?
I mapped the screens and flows in Figma, then worked with Claude to build them in Next.js and TypeScript. I used MapTiler for place search and geocoding: turning a place name into coordinates so the prototype could locate plans and check how far apart they were. That let me move beyond showing what a match would look like and actually try to make one happen.
The earlier flow explores contextual consent before revealing identities. The current prototype demonstrates private friend selection and a compatible-plan reveal.
Once I could enter different plans, times, and places, the matching rules had to work together. That’s where the problem showed up.
I was excited to try the matching flow. Then I kept landing on “no overlap yet.” I’d built the moment where two plans come together, but there wasn’t much for Crossed to work with in the first place.
That’s the cold-start problem here: Crossed needs friends adding relevant plans around the same time. A bigger database alone wouldn’t solve it if those people didn’t know each other or lived nowhere nearby. But if your first few plans lead nowhere, what makes you want to add another?
Before changing the matching rules, I needed to separate two questions: were there too few relevant plans, or was I filtering out plans that could have worked?

I’d look at how many people have a friend with an active plan in the same area and time window. If there’s barely anyone to match with, I’d first help a small friend group start together.
If friends are adding plans, I’d record where potential matches drop out: mutual selection, activity, time, or location. Then I’d ask about plausible near-matches. Would a 30-minute coffee actually have worked?
My prototype testing surfaced the empty-result problem; it didn’t tell me how real users would respond. I’d need that small-group trial before deciding whether to change onboarding, a matching rule, or the idea itself.
I’d love to try this with a friend group that already spends time around the same campus library or cafés. They’d have real routines that might cross, and I could be there to help if adding a plan felt confusing.
I haven’t run this trial yet. Here’s how I’d approach the first few weeks:
I’d sit with the group and help everyone add something they’re actually doing that week. Who they want to see would still be private. I want to find out whether their real plans overlap.
When nothing matches, I’d check why. Was nobody nearby, did the times miss, or was there no mutual selection? For practical near-misses, I could ask whether the plan would have worked without exposing anyone’s private choices.
If people say a quick coffee would have been nice, I’d try lowering the 60-minute minimum for coffee. One change at a time would help me see what actually helped. Mutual interest would still be required.
After helping everyone get started, I’d ease off the reminders. Do they add another plan themselves? If they don’t, I’d want to hear what made it feel like too much effort or not worth coming back to.
I’d keep track of how many plans lead to a mutual match, how long the first match takes, and whether the friends actually arrange to meet. I’d also check who adds another plan the following week, including people who never got a match.
I’d compare the weeks when I was helping with the weeks when I stepped back. That would tell me more than a busy first day where everyone was trying it because I asked.
This project gave me more practice with user research, and a reminder I needed: don’t believe in my own assumptions 100%. Just because I can picture myself using something doesn’t mean other people will. Next time, I want to test the idea with people earlier, before getting too carried away building it.
Then came the cold-start issue. I could build the matching flow, but Crossed still needed enough friends adding plans for anything to happen. Seeing “no overlap yet!” kept bringing me back to that. Getting people started together needs as much thought as the feature itself.
It was also my first time using a map tool! I learned how to use MapTiler to search for places, turn them into coordinates, and check whether two plans were actually close enough. (Was trying to use Apple Maps integration, but ouch, I’m just a broke uni student.)
I’m excited to keep testing this with real people. I want to find out whether Crossed can turn one of those “why didn’t you tell me?” moments into an actual plan together.