Group trip detection
A trip is automatically marked as a group trip when the traveler count exceeds 1. This enables group-specific features across the platform. Fromfrontend/components/trips/pages/overview-page-content.tsx:86-92:
Group page overview
The group page (frontend/components/trips/pages/group-page-content.tsx) provides centralized access to collaboration controls.
Current capabilities
Members and roles
Members and roles
Purpose: Manage who can view, edit, or approve trip decisions.Roles:
- Owner: Full control, can delete trip and manage members
- Editor: Can modify itinerary, flights, hotels, and expenses
- Viewer: Read-only access to all trip data
Approvals queue
Approvals queue
Purpose: Track pending votes and decisions that require group consensus.Workflow:
- Editor proposes a change (e.g., hotel selection, itinerary adjustment)
- Proposal enters approvals queue
- Members vote or comment
- Once approved, editor can apply the change
trip.approvalsPending count from the trip object.Split rules
Split rules
Purpose: Configure how expenses are divided among travelers.Modes:
- Equal split: Divide evenly across all travelers
- Custom split: Assign specific amounts per traveler
Invite and share
Fromfrontend/components/trips/pages/overview-page-content.tsx:172-177:
Shareable links
The Share button generates a read-only link for quick access without account requirements. Useful for sharing trip details with family or friends who don’t need editing rights.Finance group mode
The finance page includes a group mode toggle that changes how budgets and splits are calculated.Enabling group mode
Fromfrontend/components/trips/pages/finance-page-content.tsx:406-414:
How group mode affects calculations
- Traveler count: Uses
finance.groupSizeinstead oftrip.travelerswhen group mode is enabled - Per-person estimates: Divides budget and expenses by group size
- Split validation: Ensures custom splits sum to the expense total across all group members
frontend/components/trips/pages/finance-page-content.tsx:159-160:
Expense split management
Every expense can be split equally or custom-allocated among travelers.Equal split
Divides the expense evenly across all travelers. This is the default mode. Example: A 100 per person.Custom split
Allows specifying exact amounts per traveler. Useful when costs are uneven (e.g., one person books a single room, others share). Validation: The sum of custom splits must equal the total expense amount within 1 cent. Fromfrontend/components/trips/pages/finance-page-content.tsx:314-324:
Hotel cost allocator
The Hotel Split tool automates expense division across trip days.Enter stay details
- Full stay price: Total cost for entire booking
- Price entered for: Select “One person”, “X people”, or “Entire booking total”
- People count: Number of travelers sharing the hotel (if applicable)
- Nights/Days: Duration to split across
- Start date: First day of hotel stay
frontend/components/trips/pages/finance-page-content.tsx:431-491):
- Calculates booking total based on pricing mode
- Deletes any existing auto-generated hotel expenses (identified by
[hotel_allocator_v1]prefix in notes) - Splits total into equal cents per day/night
- Creates individual expenses with proper date offsets
Itinerary collaboration
The itinerary calendar supports multi-user editing with visual status tracking.Status filters
- Planned: Confirmed activities
- To Do: Items requiring action or booking
- Finished: Completed activities (useful during or after the trip)
frontend/components/trips/pages/itinerary-page-content.tsx:100-104:
Drag-and-drop coordination
Editors can drag itinerary items to adjust timing. Changes are reflected in real-time for all collaborators once saved. Calendar modes:- Month view: Overview of entire trip
- Week view: Detailed daily planning
- Day view: Hour-by-hour scheduling (recommended for mobile)
- Agenda view: List of all scheduled items
AI group recommendations
The AI copilot provides group-specific guidance on the group page. Frombackend/internal/ai/prompt.go:103-105:
Group: Prioritize decisions that reduce coordination overhead and clarify ownership/approvals. Suggest explicit owner + deadline for each next action.Example AI recommendations:
- “Assign hotel booking to Sarah with approval by Friday”
- “Split daily itinerary planning: Alex owns Day 1-3, Jordan owns Day 4-6”
- “Set budget cutback vote deadline to reduce back-and-forth”
Trip progress tracking
The overview page shows trip progress across all group members. Progress is calculated based on completion of essential tasks:- Trip basics (destination, dates, travelers)
- Flights selected
- Hotels booked
- Itinerary planned
- Transit confirmed
- Finance budget set
frontend/components/trips/pages/overview-page-content.tsx:183-191:
Best practices for group trips
- Assign clear roles early: Designate one owner and divide editing responsibilities
- Use approvals for major decisions: Hotels, flights, and large expenses should go through the approvals queue
- Enable group mode in finance: Ensures accurate per-person budget calculations
- Set split rules upfront: Decide equal vs custom splits before adding expenses
- Leverage AI for coordination: Ask the AI to suggest explicit owners and deadlines for pending tasks
- Check “What’s Missing” regularly: The overview page shows incomplete essentials visible to all group members
Permissions and data access
All group collaboration features respect role-based permissions enforced at the backend level (backend/internal/ai/service.go:110-116):
- Viewers: Can read all trip data but cannot modify anything
- Editors: Can add/edit itinerary, expenses, and transit; cannot delete trip or manage members
- Owners: Full access including trip deletion and member management
Future enhancements
Planned group collaboration features:- Real-time notifications when approvals are requested
- Comment threads on individual expenses and itinerary items
- Voting UI with approval thresholds
- Split settlement summary (who owes whom)
- Export of split breakdown for external payment apps