Inspiration
Every group trip starts with excitement—and dies in the group chat.
When friends try to travel together, planning breaks down under social friction:
- The Budget Dilemma: No one wants to be the first to admit their financial limit, leading people to either overspend uncomfortably or drop out silently with vague excuses.
- Date Deadlocks: Juggling blackout windows across school schedules and jobs leads to endless polling threads with zero resolution.
- The Organizer Burden: A single coordinator is left doing all the logistical heavy lifting and booking, only to be questioned when plans don't align.
This coordination failure is a classic Pareto inefficiency in microeconomics: an optimal overlap exists where everyone’s constraints are satisfied, but social discomfort prevents people from disclosing their true parameters.
We built PACT to replace group chat paralysis with deterministic consensus: a platform where travelers enter private constraints securely, reach consensus mathematically, and transition into a shared living manifest and memory vault.
What It Does
PACT guides groups through the entire travel lifecycle across three structured phases:
Phase 1: Pre-Trip Consensus Room
- Zero-Knowledge Silent Ballot: Travelers submit private budgets, target dates, and vetoes. Private numbers are never shown to friends—only the computed group intersection is revealed.
- Deterministic Pareto Consensus Engine: Calculates group alignment across candidate itineraries using an objective scoring model: $$\text{Score}(c) = w_b \cdot \Phi_b(c) + w_d \cdot \Phi_d(c) - \lambda \sum_{i=1}^{n} V_i(c)$$ where $\Phi_b$ represents budget feasibility, $\Phi_d$ represents date alignment, and $V_i(c) \in {0, 1}$ represents hard member vetoes.
- Tactile Wax Seal Climax: When votes exceed the supermajority threshold ($\tau \ge 0.70$), an emerald wax seal stamp locks the pact with spring recoil physics, unlocking an authenticated Trip Brief and exportable Pact Receipt.
Phase 2: In-Trip Living Manifest
- AI-Curated Highlights: Context-aware activity suggestions powered by Gemini that resolve dietary restrictions, cost caps, and operating hours.
- One-Tap Itinerary Pinning: Optimistic state updates that add verified spots directly to group schedules.
- Offline-Cached Local Support: Instant one-tap access to emergency hotlines (Dial 112) and verified local transport operators.
- Encrypted Circle Chat: Direct, focused in-trip messaging with persistent plan reminders.
Phase 3: Post-Trip Vault & Shared Memories
- Google Photos-Style Shared Canvas: High-resolution collaborative photo gallery preserving the adventure permanently.
- Audio Voice Capsules: An interactive recorder featuring real-time 8-bar equalizer waveforms and persistent audio memories.
- The Pact Story Receipt: An exportable, branded story card designed for social sharing that highlights unanimous consensus.
How We Built It
PACT is built as an offline-resilient, cross-platform mobile application utilizing:
- Framework & Core: React Native on Expo SDK 52 with TypeScript in strict mode.
- Animation Physics: React Native Reanimated 3 running at 60 FPS for spring-recoil wax seal stamps, pulsing audio equalizer bars, and optimistic layout transitions.
- State Management: Dual-layer Zustand architecture (
useCircleStoreanduseGatherlyStore) separating authenticated Supabase cloud synchronization from an isolated 5-Minute Judge Sandbox to guarantee zero cold-start crashes. - Data Layer & Security: Supabase PostgreSQL protected by Row-Level Security (RLS) policies. Private constraints, vetoes, and budgets are locked to user IDs and aggregated at the database edge.
- Monetization Engine (RevenueCat): Integrated with the RevenueCat React Native SDK to power our Pro Circle Inheritance model.
The RevenueCat Pro Circle Inheritance Flywheel
Traditional per-seat SaaS pricing fails in group travel because casual participants refuse to purchase monthly subscriptions. PACT solves this through circle inheritance:
- The Purchase: One organizer buys a flat $9.99 PACT Organizer Pass.
- The Entitlement Propagation: RevenueCat validates the organizer’s active entitlement. PACT automatically inherits and propagates
protier status to all 24 member slots in that circle. - The Viral Growth Loop: 1 paying customer introduces up to 23 active travelers into the ecosystem with zero onboarding friction.
Challenges We Ran Into
- Eliminating Floating-Point Leaks in Sealed Voting: To ensure private budgets could never be reverse-engineered from intermediate gauge states, we had to ensure the consensus engine computes score derivatives in isolated memoized selector graphs, publishing only normalized consensus percentages.
- Zero-Dummy Realtime Member Lifecycles: Designing an invite system that avoided placeholder dummy data while preventing race conditions when two travelers claim open circle slots simultaneously required atomic slot-reservation logic.
- Hermes Dynamic Currency Formatting: Formatting multi-currency amounts (USD, EUR, GBP, INR, JPY, AED) across web and Android without crashing the Hermes JavaScript engine required building an internal locale-safe formatting fallback dictionary.
- Android Hardware Safe-Area Collision: Addressing status bar clipping and keyboard overlay quirks across diverse Android aspect ratios without breaking iOS safe areas required strict layout auditing across all primary modal drawers.
Accomplishments That We're Proud Of
- 247 / 247 Automated Tests Passing: Achieved 100% test passage across 58 test suites with zero TypeScript compiler errors (
tsc --noEmit), verifying privacy isolation, currency conversion, and member capacity limits. - The 5-Minute Judge Sandbox: Built an instant, isolated sandbox mode pre-seeded with 5 unique traveler personas (Maya, Jake, Priya, Alex, Sam), enabling judges to test the full consensus loop without creating accounts.
- Hardware-Accelerated Interaction Design: Engineered custom Reanimated 3 wax seal physics with tactile haptic recoil and live-oscillating audio waveform equalizers.
What We Learned
- Multiplayer Monetization Dynamics: Designing paywalls for group utility requires shifting focus from individual subscriptions to collective group unlocking. Lowering friction for invited guests directly fuels organic viral distribution.
- Zero-Knowledge UX Design: Users care deeply about privacy in social coordination. Displaying explicit "Sealed Input" indicators creates the psychological safety necessary for honest inputs.
- Robust State Isolation: Isolating testable mock states from network-backed cloud persistence is essential for building production-grade demo experiences that never fail under unstable network conditions.
What's Next for PACT
- Agentic Auto-Booking via Amadeus APIs: Transitioning the Living Manifest from recommendation into autonomous group reservation and ticketing.
- Automated Expense Escrow: Integrating smart split-bill settlement directly into the post-trip vault to eliminate post-vacation debt chasing.
- Dynamic Travel eSIM Provisioning: Allowing organizers to provision group data packages for international trips in one tap through RevenueCat consumable passes.
Built With
- android
- elevenlabs
- expo.io
- google-gemini
- jest
- postgresql
- react-native
- react-native-reanimated
- revenuecat
- supabase
- typescript
- zustand
Log in or sign up for Devpost to join the conversation.