Inspiration

Every group chat has the same message: “we should do something this weekend.” Everyone agrees, and then nothing happens. Or one person ends up doing all the work. They scroll back for dates and chase people for answers. Then they pay for everyone and spend the next week asking to be paid back. We wanted the chat itself to do that work, so friends could spend less time organizing and more time together.

What it does

InstaPlan turns your group chat into a trip planner. Anyone can start a plan. From then on, Muse listens as the group talks. It fills in who’s going, when, and where. It also keeps notes for each person, like “no seafood” or “wants a patio.” Once the plan has what it needs, Muse posts a recommended plan in the chat. A live vote pins to the top with a red LIVE dot. Each friend’s avatar shows where they stand. A green check means yes. An amber clock means they haven’t voted. A faded face with a red X means no or can’t make it. When enough people say yes, the plan locks in. The person who started it enters the total cost. InstaPlan splits it evenly, and each friend pays their share through Capital One Nessie without leaving the chat.

How we built it

The front end is Next.js 16 with React 19, TypeScript and Tailwind. It shows a group chat, a plan panel that fills in live, the pinned vote and the pay step. It works on phones too, where the plan opens as a bottom sheet. The listening engine is Python. It sends new messages to Muse Spark in small batches, so it makes fewer calls. Every update Muse returns has to point to the message it came from. Personal details have to come from the person who said them. Anything that fails those checks is thrown out. Vote counts and the cost split run in plain Python, not in a prompt. SerpApi finds photos for each plan category. Google Maps lets the group pin an exact place. Capital One Nessie handles the payments. Next.js forwards every request to our server, so no API key ever reaches the browser. For the full app, we set up FastAPI with Supabase for login and Postgres, with row level security locked down on every table.

Challenges we ran into

Nessie had changed since most guides were written. The old address refused connections. Transfers no longer take a payee. Amounts must be whole dollars, and the sandbox doesn’t update balances. We rebuilt payments as a withdrawal from the payer and a deposit to the person who paid the bill. Then we tracked balances ourselves. Muse sometimes guessed fields nobody mentioned. It also sometimes gave one person’s words to someone else. Requiring a source message for every update fixed both problems. Votes raised a fairness question. If the plan changes after people vote, their old votes shouldn’t count. Now any change resets the vote and tells everyone. Smaller problems cost us time too. The event Wi-Fi blocked our database port, so we switched to a phone hotspot. Python on a Mac was missing security certificates. We also had three streams of work to merge late at night.

Accomplishments that we're proud of

Muse turns a casual, messy conversation into a real plan, and it shows where every detail came from. The whole loop works in one chat: talk, vote, pay. Privacy was part of the design from the start. Friends never see each other’s budgets or bank details, and keys stay on the server. We used the Standard Muse model, which Meta does not use for training. We also cut a feature we liked, private check-ins, so we could finish the core experience well.

What we learned

Cutting scope early is a skill. The product got better once we stopped trying to do everything. We learned that an AI’s output needs rules around it before people can trust it. Sandbox APIs drift, so we test real requests before building on old docs. We also learned that people need to see the assistant working. A small “Muse is listening” line made the whole app feel more trustworthy.

What's next for InstaPlan

  • Connect the chat to real accounts through Supabase and FastAPI so groups can run many plans at once.
  • Use Muse Voice Transcribe so voice notes count toward the plan.
  • Suggest specific restaurants and stays with SerpApi and Google Maps, not just an area.
  • Support uneven splits and people who pay for different parts.
  • Send phone notifications when a vote starts.
  • Launch on our .tech domain.
  • We have not finished our project yet, this is just for the soft submission deadline!!

Built With

Share this project:

Updates

Submission history