Inspiration

We've all seen group trips get complicated before they've even started. One person wants a weekend away, another is trying to save money, and someone else is juggling everyone's schedules. Eventually the conversation turns to budgets, and not everyone feels comfortable saying what they can afford.

That's especially true when friends come from different backgrounds or different countries. Flights cost different amounts depending on where you live, everyone thinks in a different currency, and nobody wants to be the person who says "I can't afford that." So people compromise, stay quiet, or drop out.

We wanted to remove that conversation entirely. Travelling with friends should be about spending time together, not about explaining your finances.

What it does

The web application helps friends plan a trip together without anyone revealing their budget.

  • Sign up and add friends. Everyone has an account with their home currency and home airport, and adds friends by username.
  • Plan a trip privately. Each person enters three budgets in their own currency: one for their own flights, a group budget for the stay and shared activities, and a private daily budget for food and extras. They also add the dates they're free. Nobody else can see any of it, and the group only sees how many people are ready, never who.
  • See what fits everyone. Once everyone has entered their details, the app works out which destinations and dates fit every person's flight, daily and group budget, and shows up to five options labelled "fits everyone", each with an estimated cost per person. If nothing fits, the group sees a neutral message that never reveals whose budget is the problem.
  • Vote anonymously and book. Everyone votes yes or no and sees totals only. Once more than half the group agrees, the organiser books it.
  • Log expenses during the trip. Expenses can be logged in any currency as shared, as an optional extra split only among the people who joined in, or as personal and visible only to you. Each one is converted at that moment's exchange rate and split exactly, and friends are notified when an expense includes them.
  • Keep track privately. Each person sees a pacing line only they can see, such as "You're €18 under your daily pace."
  • Settle up simply. At the end, the app works out who owes whom with as few payments as possible, shows each payment in the payer's own currency, and links to pay with Wise.

The core idea is that privacy is built into planning from the start. Instead of only splitting costs after a trip, we help groups find a trip everyone can comfortably say yes to.

How we built it

  • Frontend: React.
  • Backend: Node.js and Express, with JWT sessions and passwords hashed with scrypt.
  • Database: PostgreSQL on Tiger Data. Money is always stored as whole numbers in minor units (pence, cents, kobo), and a database trigger checks that every expense's shares add up exactly to its total. Sample past-trip spending is stored as a Tiger Data hypertable with a continuous aggregate.
  • Exchange rates: the Wise API, cached, with a clearly labelled fallback if Wise can't be reached.
  • Planning logic: deterministic server code, not AI. It finds the dates everyone shares, calculates a hidden group "ceiling" from everyone's budgets, and checks every destination against each person's flight, daily and group budget. It's covered by unit tests built around our demo data.
  • Privacy: enforced on the server. Private data is only ever queried for the logged-in user, responses are built from explicit field lists, and the ceiling never leaves one function.
  • Demo data: sample destinations, flight prices and users across London, Lagos and Madrid, with destination photos from Wikimedia Commons.
  • Developer setup: a single npm run dev command installs everything and runs the frontend and backend together.

Our idea was fully original and not formulated with AI. We used AI tools (Claude) to help structure draft parts of the code (database structure, seeding, feasibility logic, Wise module and tests) which we then reviewed, tested and integrated. Our full AI disclosure is in the README.

Challenges we ran into

  • Money across currencies. Comparing budgets in GBP, NGN and EUR, splitting a bill three ways without losing a cent, and converting payments back into each person's currency all needed careful integer maths and stored exchange rates.
  • Things changing underneath us. The shortlist recalculates whenever anyone saves a budget or drops out, so we had to make sure two saves, a vote and a booking couldn't interfere with each other.
  • Getting live API access in a day. Access to Wise's API involves a sandbox account setup, so we built the exchange-rate module to work with a labelled fallback while we sorted that out.
  • Scope. We had far more ideas than time, so we kept cutting back to the one flow that has to work: private budgets → a shared shortlist → booking → expenses → settling up.

Accomplishments that we're proud of

  • The whole journey works end to end: sign up, add friends, plan a trip, enter private budgets, see what fits everyone, vote, book, log expenses, track your pace and settle up.
  • A group can agree on a destination and dates without a single person stating their budget.
  • Multi-currency splits that are exact to the cent, with every exchange rate stored and labelled.
  • Privacy rules that are tested, not just promised. Our tests check that shortlist options never contain budgets or the ceiling.
  • Optional extras that let friends with bigger budgets do more, without anyone having to explain why they're sitting something out.

What we learned

  • Privacy is about what people can work out, not just what they can see. Small details like counts, timing and wording matter as much as hiding fields.
  • Agreeing on what each endpoint returns, and what it must never return, before building made it much easier to work in parallel and to check privacy.
  • Keeping money logic deterministic and tested, and using AI only where it genuinely helps, makes the product easier to trust and easier to explain.
  • In a hackathon, a smaller flow that works completely beats many half-finished features.

What's next for Group Trip Planner: Decisions Made Easy

  • Live Wise rates and payments. Switch fully to live exchange rates, and make the Wise payment link prefill each person's amount and currency.
  • Private-first resolution. When nothing fits, ask everyone privately at the same moment whether they could stretch their budget or dates, before the group sees anything.
  • Less typing. Scan a receipt with Gemini, or say "I paid 42 euros for dinner for all of us" and have it logged by voice with ElevenLabs, in any language.
  • A daily nudge reminding everyone to log what they spent.
  • Spending history from Tiger Data, so groups can see typical daily costs and their own spending over time.
  • Smarter planning. An agent that re-plans when a stay becomes unavailable or someone's dates change, plus itinerary suggestions with optional extras and real flight and stay search.
  • Deployment on Vultr with our own domain.

Our goal is simple: make it easier for people to travel together without money becoming an uncomfortable part of the friendship.

Built With

Share this project:

Updates

Submission history