Inspiration

It started right here at HackTX. One of us came looking for teammates and had a hard time finding any. We posted in the Discord and in the team-finding channels, but nobody replied. In the end, the only option left was walking up to people one by one and asking, "Are you already on a team? Do you want to team up?"

That's how we formed our team, and it was hard. Starting a conversation with a stranger in person is awkward. You don't know if they're already taken, what they're into, or if they even want to talk. Most people are in the same position, so everyone waits for someone else to go first.

We realized the problem isn't a lack of people. Hackathons, conferences and new cities are full of people who want the same thing you do. The hard part is that first step: finding the right people and breaking the ice without putting yourself out there to everyone.

We also didn't want the usual fix of posting your plans and schedule publicly for anyone to see, because that's a real privacy risk. So we asked: what if AI did the awkward part for you, finding people who share your plans and organizing the meetup, while everyone stays in control of who they meet?

That's InGather. Less scrolling. More together.

What it does

InGather turns "I wish I had someone to do this with" into a small, real meetup.

  1. Describe your plan in plain words. Type or say something like "I'm at HackTX this weekend, free after 6, looking for 2–3 people to grab tacos and talk about AI." Muse Spark reads it and fills in the whole plan for you: city, dates, free times, interests and group size. Nothing is saved until you check it.
  2. Choose how to find people:
    • Public: post your plan on the Home feed so people with similar interests can tap "Ask to join". You accept or decline each request.
    • Private: nobody can see your plan. Our matching model suggests people you could reach out to, with a short reason for each, like "You both like tech and coffee and you're both free Saturday evening."
  3. You stay in control.
    • Nobody is invited until you approve them, and nobody joins without saying yes.
    • Passing on someone is private; they're never told.
    • If someone declines, InGather finds a replacement and asks you before inviting anyone new.
  4. Pick a place together. InGather finds the middle point between everyone's rough areas, and Muse Spark searches the web for three real public places nearby that fit the group, like a café, a taco spot or a library. Everyone votes, and the place with the most votes wins.
  5. Meet up. Once everyone confirms the time and place, a private group chat opens with an icebreaker based on what the group has in common, and you can add the meetup to your calendar in one tap.

We also added the details that make it feel like a real social app:

  • an Instagram-style home feed of open groups with realistic photos of each activity;
  • profiles with optional age range, gender, school and work, all hidden unless you choose to share them with your group;
  • avatars you can shuffle or replace with your own photo;
  • blocking and reporting, and the option to remove any plan, group or chat.

How we built it

Matching people (our own ML model). We trained a model to decide who fits a plan, instead of asking a chatbot.

  • Data: the public Meetup.com dataset (1.78 million members and 10.6 million group memberships).
  • Interest similarity: it learned which interests go together, so "AI" and "machine learning" count as close, but "AI" and "knitting" don't.
  • Who joins: it was trained on about 300,000 real decisions about who joined a group and who didn't.
  • The model: gradient-boosted trees over 11 features, like shared interests, same activity and overlapping free time.
  • Results: on groups it had never seen, its top-5 picks were right 72% of the time, versus 62% for just counting shared interests.
  • Cost and speed: a search takes about a second and uses no AI tokens.

Meta's Muse models.

  • Muse Spark 1.3:
    • an Intake agent that turns a sentence into a full plan;
    • a venue agent that uses web search to find real public places near the group;
    • a scene agent that describes a realistic photo of each group's activity;
    • icebreakers, join-request notes and welcome messages.
  • Muse Image turns those descriptions into realistic photos for every plan and group.
  • Muse Voice Transcribe lets you speak your plan instead of typing it.

The math the backend checks. A group can only meet if everyone has some free time in common. If person \( i \) is free during times \( A_i \), the group of \( n \) people needs:

$$ A_1 \cap A_2 \cap \dots \cap A_n \neq \varnothing $$

This is checked by our server, not by an AI model, so the AI can never invent a time that doesn't work.

Privacy and safety by design.

  • One gatekeeper: a single backend "policy" service decides who can see what. Anyone outside a plan or group gets the same "not found" response, so they can't even tell it exists.
  • No hidden data in photos: uploaded photos are cleaned of hidden data like GPS location.
  • Profile details are opt-in: they're hidden by default, never used for matching and never sent to AI.
  • Tested attacks: 186 backend tests try to break our own rules, like reading someone else's plan, accepting someone else's invitation or faking a verification.

Stack. React, Vite and Tailwind on the frontend; FastAPI, SQLAlchemy and Postgres on the backend; everything runs in one Docker container. We built it with Claude Code as a team of AI "engineers" plus a reviewer agent that approved or rejected each piece of work.

Demo setup. Our demo has 1,000 fictional Austin residents with their own plans and groups, so you can try the whole flow. Verification is simulated (no ID is checked). A real Stripe Identity check is built but needs API keys.

Challenges we ran into

  • Deciding where AI should help, and where it shouldn't. We wanted AI to do real work, but not to have power it shouldn't have. We ended up using a trained model to pick people, Muse Spark for language and web research, and human approval for every step that involves another person. The backend enforces the rules no matter what any model says.
  • Privacy versus usefulness. Finding a fair meeting spot needs to know roughly where people are, without revealing anyone's location. We round everyone's area to about 1 km, only ever share the group's midpoint, and never show coordinates.
  • Making AI output trustworthy.
    • Early on, the AI sometimes drafted free times outside the plan's dates.
    • Some generated photos showed messy apartments instead of public places.
    • The venue search sometimes couldn't prove where a place came from.

We added server-side checks for each of these, and the app now labels venue suggestions "Verified via search" only when that's true.

Accomplishments that we're proud of

  • The full journey works end to end: describe a plan → get matched → invite → replan after a decline → vote on a real place → confirm → chat.
  • A model trained on real human data, which beats the simple "count shared interests" approach.
  • The venue vote, where the group picks between three real, nearby places instead of one person deciding.
  • Privacy we tested ourselves, with 186 backend tests that try to break it.
  • It feels like an app people would actually use, not just a demo.

What we learned

  • Match the tool to the job. A trained model is better at ranking people (fast, consistent and fair), while Muse Spark shines at understanding messy human sentences and researching real places.
  • Muse Spark was faster and more reliable than we expected, especially with structured output and web search.
  • Good AI products need guardrails outside the AI. The most important safety rules live in our backend, not in prompts.

What's next for InGather

  • Deploy it so people at the next hackathon can actually use it, starting with team-finding and meetups at events like HackTX.
  • Retrain the matcher on real InGather outcomes (who accepted and who passed) instead of simulated parts.
  • Add what a real launch needs: email confirmation, password reset, real ID verification and a human moderation team behind reports.
  • Event mode, so organizers can let attendees find teammates and groups safely within their event.

Built With

Share this project:

Updates

Submission history