Inspiration

Planning a group trip is painful, especially spring break. Everyone's dates, budgets and ideas get buried in the group chat, one person ends up doing everything, and the trip often never happens. We wanted the planning to happen right where the group already talks: the group chat.

What it does

Scout is an AI travel agent you add to your iMessage group chat. Everyone taps through a quick card with their trip type, dates, budget, home city and interests. Scout researches well-reviewed destinations and sends three brochures, and the group decides together. Then everyone swipes on activities, and Scout turns the favorites into a day-by-day plan on your calendar. Flight and hotel cards show live prices, with one tap to book, and Scout makes it easy to split the costs at the end.

How we built it

Photon's Pro plan doesn't support iMessage group chats: its numbers are shared, and it can't join or create groups. So we built our own group chat system. Scout has a real iMessage number through Linq that friends add to their group. We wrote a custom platform for Photon's Spectrum SDK so every group message still runs through Photon. Our backend receives each message, keeps track of the group, handles messages one at a time, and supports tapbacks, threaded replies and typing indicators. It falls back to plain text whenever a phone can't show something.

For the interface, we extended HermesShare, an open-source iMessage extension that turns JSON into native iPhone screens. We added a calendar, budget slider, checklists, text fields and a swipe deck, so our agent can send real interactive widgets instead of walls of text.

Scout pulls live flight and hotel prices from Google Flights and Google Hotels, and each card has a Book button that opens that exact flight or hotel. It tells a personal vote apart from a group decision, scores everyone's activity swipes, and locks in what the group chooses. The agent is a Python service running Claude, with GPT as a fallback, plus web search and Google Places.

Challenges we ran into

Our Photon plan didn't support group chats, so we rebuilt that layer ourselves on top of Linq. iMessage won't run web code, so every widget had to be drawn by an extension installed on each phone. Widget replies couldn't reach Scout through the phone line, so we made them send plain text instead. On real iPhones we fought app signing and cards opening blank. And we discovered just how hard it was to get the AI to chime in at just the right moments.

Accomplishments that we're proud of

We have a working AI agent in a real iMessage group chat, on a plan that "can't do groups". It sends native, interactive widgets inside iMessage, and it takes a group from "we should go somewhere" to a booked trip without anyone leaving the chat.

What we learned

Even simple ideas can be technically very challenging to execute. As we set out to streamline and automate the process of planning trips, we discovered just how complicated that process was! What happens when people have different budgets? Or are coming in from different locations on different flights? Or doing different sets of experiences with different expenditures? Wrestling with these revealed just the surprising amount of detail reality had. We learned to start simple and layer functionality on top.

What's next for Scout

Our swiping interface did not fully work as expected due to last minute hiccups, so we'd love to fix that first. We also want to be able to handle increasingly complex trip planning circumstances, ship our iMessage extension through TestFlight and add an Experiences tab for excursions at your hotel. Most of all, we want to talk to real users and understand what aspects of this product might be most valuable to them.

Built With

Share this project:

Updates

Submission history