Inspiration

We're four exchange students from Korea, and we kept living the same moment:

"I want to do something right now, but there's no one to do it with."

As exchange students, we naturally stuck with the same few people we were comfortable with. It was easy, but our friend circle got small fast. So whenever one of us wanted to play basketball or see a musical, the odds that someone in that small circle wanted the same thing, at the same free hour, were close to zero. There were thousands of students around us. We just had no way to find the ones who wanted the same thing.

The problem wasn't a lack of people. It was that someone always has to speak up first. You post "anyone up for basketball?" in a group chat, nobody replies, and it's embarrassing. With strangers, you look at a profile first, and you judge. And whoever asks becomes the host.

Back home, this has a one-word answer. A friend says "I'm craving boba," and you say 나도! (nado): "me too!" No planning, no hosting, no asking first. Abroad, nobody was around to say it. So we built the thing that says it for you.

What it does

Nado finds students at your school who want to do the same thing as you, in your next free hour, and opens the plan for you.

  1. Sign in with your school email. (For this hackathon, we built it for NYU, but nothing about Nado is specific to one school.) You get a random nickname like Coral Owl. No photo, no bio.
  2. Set up once. Pick your interests and the smallest group you'd enjoy for each. Upload a screenshot of your class schedule, and Claude reads your classes.
  3. Get matched. Every minute, Nado checks the next four hours across campus. When enough students want the same thing during the same free hour (at least the minimum each person chose), you get a plan: Boba · 3:15–4:15 PM · right after MATH-UA 121 · 4 matched · meet at the library lobby.
  4. Tap Nado! and confirm. The hour goes on your schedule, so you're never double-booked.
  5. Meet. Always at a public campus lobby first. Find each other with a small game: hints unlock one by one, and if you're lost, tap "I give up" and your screen glows.
  6. Found! Claude asks the first question about the activity you share, so nobody has to break the silence.

No host. No profiles. No empty events. A plan only exists once enough people already fit it, so nobody gets rejected and nobody waits alone.

How we built it

Layer Technology
App + API Next.js, installable web app (judges join from their own phone via QR code)
Database + real-time Supabase (Postgres + Realtime) for schedules, rooms, and live invites
AI Claude API (vision, reasoning, short text)
Hosting Vercel
Development Built with Claude Code

Our rule: Claude does what only a language model can do. Code does what has to be exact.

What Claude does

  1. Reads your schedule. Upload a screenshot from your school's registration system (Albert, for NYU) and Claude extracts each class (course, day, start, end).
  2. Understands any interest. "Badminton" becomes a category, a realistic group size for strangers, and a good venue.
  3. Cleans and screens. "bubble tea" → boba; "boba, Koreans only" → boba (the condition is removed and the student is told); dating requests are skipped.
  4. Explains the plan. A one-line reason for the meeting spot.
  5. Breaks the ice. One light question about the activity you share.

Claude never sees names, emails, or IDs, and every call has a non-AI fallback, so a failed call never stops a plan.

What code does

Matching is plain, tested TypeScript. A group can meet when:

  • everyone is free for the whole hour,
  • the group is at least as big as each member's own minimum and no bigger than the activity's limit,
  • and the plan starts a little in the future, within the next four hours.

Start times snap to the half hour or to the exact moment someone's class ends, which is what makes "right after class" possible. Rooms with a real student are confirmed first, then bigger rooms, then earlier ones. A student holds only one room per overlapping hour and one room per activity per day. Same input, same groups, so we can always explain why this group.

A campus to test it on. A matching app is only as good as the people on it, so we generated 800 virtual NYU students, each with realistic Mon/Wed and Tue/Thu class blocks, lunch rushes, evening labs, interests, and minimum group sizes. When a judge signs in, they join as student #801.

Challenges we ran into

  • "Isn't this just Meetup?" Our first version showed a list of rooms, and mentors said it looked like Meetup or 222. The difference was real but invisible. So we removed browsing entirely: nobody hosts, nobody scrolls. You get a plan for your next free hour, or nothing.
  • LLMs are bad at clocks. We first asked Claude to compute overlapping free time directly. It was mostly right, which isn't good enough when "mostly" sends someone to boba during their lecture. We moved all time math into code and kept Claude for language.
  • A matching app with no users matches nobody. To show Nado working, we needed a whole campus. So we generated 800 students with realistic schedules. Then a new problem: the virtual students matched each other first and left no one for the real judge. Now a plan only opens when it includes a real student.
  • Our first hackathon, and a new stack. None of us had shipped with Supabase or Vercel before. Learning databases, real-time updates, and deployment overnight, while the idea itself was still changing, was the hardest part of the weekend.

Accomplishments that we're proud of

  • Our first hackathon. Four exchange students went from a shared frustration to a working app we'd actually use ourselves, in one weekend.
  • Safety by design. No nationality, race, or gender field exists anywhere in the app. Nicknames until you meet, public meeting spots, and nothing happens until you tap Nado! and confirm.
  • AI used where it matters, and nowhere else. Claude reads schedules, understands any interest, screens out bias, and breaks the ice. Who meets whom stays in tested, explainable code.
  • 800 virtual students who feel real. Every one has their own weekly schedule, interests, and group preferences, so every hour of the week looks different.
  • Anyone with a verified school email can join a living campus from their own phone. Scan a QR code(or by link), upload your schedule, and get matched with students who are actually free right after your class.

What we learned

  • The best use of AI is often a narrow one. Claude is most valuable exactly where people would give up: reading a schedule screenshot, understanding an interest like "badminton," writing the first sentence nobody wants to say. Deciding who meets whom stayed in code we can explain.
  • Design for how AI fails the person on the other end. For every Claude call, we asked: what happens to a student if this is wrong? Then we built a fix for each case. You review the schedule Claude read, you set your own minimum group size, and you always meet at a public campus lobby first.
  • Feedback is a gift, even at 2 a.m. When mentors told us our first version looked like Meetup, it stung. But it pushed us to find what actually made Nado different, and to make that difference visible.
  • You can learn a whole stack in a weekend. As first-time hackers, we learned databases, real-time updates, and deployment by building, breaking, and fixing them in the same night.

What's next for Nado (me too!)

  • Reporting after each meetup, limited to no-shows, harassment or insults, and inappropriate behavior, so reports protect people without turning into a rating system.
  • More campuses, one at a time. Nado works best inside one school, where "see you after class" means something. NYU was our first; any campus can be next.

Nobody has to ask first. Nado opens the plan. You just say "나도!" — nado. Me too.

Built With

Share this project:

Updates

Submission history