Inspiration

Group chats are where hangouts go to die. Someone says "we should do something this weekend," and then nobody can agree on when, where or how much to spend. We wanted one place where an organizer starts the plan, everyone adds their own times, and the group gets a plan everyone can actually make and afford.

What it does

Meta's Muse Spark is the brain of TXMates. It takes what SerpApi finds on the web and what Capital One's Nessie API says about the group's finances, reasons over both, and turns them into a plan the group can actually do.

  • Create a hangout. The organizer names the group, adds friends, picks a city, proposes a few dates, and chooses interests (food, live music, outdoors, gaming, nightlife, arts and more).
  • Collect availability. Each friend gets a personal link to a When2Meet-style grid (8 AM–11 PM), or they can import their calendar as an .ics file. The grid turns solid green where everyone is free.
  • Muse Spark + SerpApi: find real things to do. SerpApi pulls live search results for the city. Muse Spark reads them, decides whether each one is a place or a dated event, pulls out event dates, and sorts them into categories. That turns raw search results into clean activity cards with source links.
  • Muse Spark + Nessie: a budget the whole group can afford. TXMates reads account data through Capital One's Nessie API. Muse Spark uses it to suggest one group price point with a safety buffer. It stays private: Muse only reports the group number and never exposes anyone's balance.
  • Three plan options. Best overall, cheapest, and best interest match, each a timed schedule inside the group's shared free window, with cost per person and for the whole group.
  • AI plan notes. Muse Spark writes why the plan works, an icebreaker, and a coordination tip.
  • Decide together. Friends vote on each stop (votes are saved), swap or reorder stops, then lock the plan and download it as an image to drop in the group chat.

How we built it

We built the frontend with Next.js 16 (App Router), React 19 and TypeScript, styled with Tailwind CSS v4 and Lucide icons. Next.js API routes handle hangouts, availability, votes, discovery and AI requests, and data lives in SQLite through Node's built-in node:sqlite. Meta Muse Spark is called through an OpenAI-style chat API that returns structured JSON. It sits in the middle of the app: it classifies search results and turns Nessie account data into a group budget, and it writes the plan notes. Nessie is called server-side using seeded test customers. For search, we support SerpApi in the app. Because SerpApi's free tier has a limited number of searches, we use a self-hosted OpenSERP instance for day-to-day testing and as an automatic fallback. Switching to SerpApi is one setting (SEARCH_PROVIDER=serpapi), and the app runs fully on SerpApi.

Challenges we ran into

SerpApi's search limits meant we couldn't burn queries during development, so we built a search layer that can use either SerpApi or OpenSERP and falls back to OpenSERP. Getting reliable JSON out of Muse Spark meant budgeting for its reasoning tokens, cleaning up stray formatting, and falling back when a reply still couldn't be parsed. Using financial data responsibly meant designing the Nessie flow so Muse only reveals a group price point, never individual balances. We also kept everyone's answers in sync without a real-time backend.

Accomplishments that we're proud of

Muse Spark, SerpApi and Nessie work together in one flow: live search results and real account data go in, and a group plan that fits everyone's time and budget comes out. The whole thing, from proposed dates to the availability grid to a locked plan you can share, fits in one dashboard. The app also keeps working when an outside service is slow or offline.

What we learned

We learned how to use an AI model as a reasoning layer between real APIs instead of just a text generator. We also learned to design around rate-limited APIs with a fallback, and to handle financial data with privacy in mind. Fallbacks matter as much as the main feature when you depend on outside services. We also learned the importance of using Cursor and Impeccable Skill to automate the fine-tuning of front-end UI. This is what took it from looking like an extremely AI-looking project to one more professional.

What's next for TXMates

Next we want accounts, real-time updates, direct Google Calendar sync and directions between stops. Then we'll move Nessie from test data to real account linking and expand beyond Texas.

Built With

Share this project:

Updates

Submission history