Inspiration
Planning a group trip usually means scattered chats, dozens of travel tabs, different budgets, and one person trying to keep every decision straight. We wanted to give everyone a shared place to plan together, while making sure each traveler has a say in the itinerary and the cost.
What it does
CoTravel brings the group’s plans into one workspace. Travelers can share their dates, budget, departure city, and preferences; explore flights and stays with an AI assistant; compare options on a map; and see a personal view of the trip.
Our itinerary optimizer considers constraints such as cost, dietary needs, opening hours, and travel time. It can also suggest plans where friends split up for an activity and meet again. For purchases, our test-mode payment flow is built around a rule: the agent can propose, but each person approves their share.
How we built it
We used Next.js, React, TypeScript, and Tailwind for the app; Supabase for shared trip data, authentication, and updates; and FastAPI with OR-Tools to score feasible itineraries. We also built structured AI tools and a Stripe test-mode payment backend.
We tried integrating the Duffel API for travel options. Its sandbox data, however, did not have enough useful inventory for the trips and comparisons our app needed. To keep the experience testable, we created representative mock travel data in our database.
Challenges we ran into
The Duffel integration taught us that getting an API to respond is only part of the job: its data also has to support the experience you are building. Sparse sandbox results made it difficult to show meaningful choices, so we had to build a dependable data set for the prototype.
Wiring the app together was another major challenge. Changing a flight can affect arrival times, the itinerary, the trip price, and other booking decisions. Early on, those changes did not always update every related part of the app properly. We spent a lot of time tracing how one decision should flow through shared trip data, pricing, and payment state. That consistency is still an area we are improving.
Accomplishments that we’re proud of
We built a shared trip studio alongside the systems that make its ideas possible: AI-assisted discovery, a constraint-based itinerary optimizer, individual trip views, and a payment flow that keeps spending approval with the travelers. We’re proud that CoTravel considers the needs of the whole group instead of producing a generic itinerary for one person.
What we learned
We learned that an integration needs useful data, not just a working endpoint. We also learned how much care a shared planning app needs when decisions are connected: changing one option should update the plan and its costs without leaving someone else looking at stale information. What’s next for CoTravel
We want to make flight and stay changes reliably update every affected price, itinerary item, approval, and booking state. We also plan to add more end-to-end tests, improve the live group experience, and move beyond the limitations of sandbox travel data as we prepare for real-provider use.
Built With
- fastapi
- githubactions
- mapbox
- musesparkapi
- next.js
- postgresql
- python
- react
- shadcn
- stripe
- supabase
- tailwindcss
- typescript
- vercelaisdk


Log in or sign up for Devpost to join the conversation.