Founder & Product Manager · 2026 – Present

Orbit.

The collaboration-first planning app for group trips and events. Plan together.

Platform
iOS · React Native · Expo
Backend
Supabase · Postgres · Edge Functions
AI
Claude (booking import, itinerary suggestions)
Role
Solo — product, design, and engineering
TestFlight Beta · App Store launch upcoming
Scroll
24
Postgres tables with row-level security, the data architecture behind every feature
4
AI-powered Edge Functions: booking extraction, itinerary suggestions, flight lookup, cover image search
10+
Plan tabs shipped: Itinerary, Expenses, Travel, Stays, Tasks, Polls, Notes, Photos, Documents, Chat
1
Builder. Product, design, architecture, code, and every decision — owned end to end
The problem

Group planning lives in five different apps.

A group chat for decisions, a spreadsheet for costs, a notes app for the itinerary, screenshots of confirmations, and a separate RSVP link. Nothing is shared, nothing is live, and no single place answers "what's the plan, who's coming, who owes what, and what still needs doing."

💬
Fragmented across tools
Plans scatter across iMessage threads, Google Docs, and Venmo requests. No single source of truth. The organizer ends up stitching everything together manually.
😩
One person carries everything
The organizer shoulders all the cognitive load. Everyone else is passive — not because they don't care, but because there's no good way to help that doesn't create chaos.
🧾
Expense tracking is a mess
Splitting costs across a group involves manual spreadsheets, memory, and awkward "who owes what" conversations. Settlement is even harder.
📸
Bookings live in inboxes
Flight and hotel confirmations arrive by email and get buried. Getting them into a shared plan requires copy-pasting into a doc nobody keeps updated.
What I built

Every feature owned end to end.

From the product vision and PRD through UX, data architecture, and code. Orbit covers the full group planning lifecycle — plan, decide, coordinate, live the trip, and remember it.

✓ Shipped
Real-time multi-user collaboration
Every change propagates live across all members via Supabase Realtime. Comments, reactions, and an activity log record what happened and who did it.
✓ Shipped
AI booking import
Paste or screenshot a flight or hotel confirmation. Claude's extract-booking Edge Function parses it into a structured itinerary item — airline, times, confirmation code, check-in/out — in seconds.
✓ Shipped
Shared expenses with settlement
Track expenses by category, split across members, and calculate who owes what. Settlement calculator shows the minimum number of transfers to clear all debts. Venmo integration built in.
✓ Shipped
Itinerary with AI suggestions
Date pills, location timeline, floating wall-clock times for flights across timezones. AI suggests activities based on your location, dates, and what's already on the plan.
✓ Shipped
Tasks, polls, and decisions
Assign tasks to members. Run polls with deadlines that auto-close. Every item is live, reactive, and synced across the group the moment something changes.
✓ Shipped
Push notifications + chat
Global chat with @mentions and reactions. Push notifications fire from Postgres triggers via pg_net — no app server needed. Respects per-user notification preferences.
Who it's for

Four roles. One shared plan.

Orbit is built around how groups actually plan — not how we wish they did. Different people want different surfaces.

📋
The Organizer
Primary user
Starts the plan, invites people, drives the itinerary, tracks who's in. Needs control, a headcount, and a way to delegate without losing oversight.
🙋
The Participant
Active contributor
Actively helps plan — adds ideas, logs expenses, votes on decisions. Needs to contribute without stepping on others or creating a second version of the plan.
The Attendee
Event-heavy case
Mostly just needs to say "I'm in" and show up. Needs a frictionless RSVP flow, not a full planning surface.
👀
The Passive Friend
Observer
Along for the ride. Wants to see the plan and get nudged when something needs them. Not planning, just staying informed.
Stack & architecture

Built to be actually shipped.

React Native + Expo iOS app, Expo Router navigation Core
Supabase Auth, Postgres, Realtime, Storage, Edge Functions Core
Postgres (24 tables) Row-level security on every per-plan table Core
Anthropic Claude Booking extraction, itinerary suggestions, flight lookup AI
Expo Push + pg_net Push notifications triggered from Postgres Infra
Unsplash API Cover photo search via Edge Function UX
EAS + TestFlight Build, submit, beta distribution Release
AI features
Claude does the heavy lifting on capture and discovery
Four Edge Functions hold the Anthropic key server-side and broker all AI calls. Secrets never touch the client.
extract-booking — paste or screenshot a confirmation, get structured data
suggest-itinerary — activity ideas based on location, dates, and existing plan
lookup-flight — flight details from an airline + flight number
image-search — Unsplash cover photos brokered server-side
How I'd know if it's working

Metrics designed around collaboration, not vanity.

🎯
North star
% of plans with 2+ active contributors — because a plan with one person isn't a group planning app, it's a notes app.
Activation
% of new users who create or join a plan within day 1. The empty state after signup is the first friction point.
Collaboration depth
Median members per active plan. Tabs used per plan. % of plans with expenses logged. AI import usage rate.
Retention
Plans created per user over time. Return rate between trips — the leading indicator for whether Orbit becomes a habit, not a one-time tool.
Reliability
Crash-free session rate. Push notification delivery rate. Realtime sync latency. These need to be invisible — if they're not, nothing else matters.
What building this taught me

The hardest decisions were about what to cut.

I've shipped products at PwC for 4+ years, working across PepsiCo, Stellantis, FPL, and Acrisure. What Orbit gave me that client work didn't was complete ownership — of every product decision, every tradeoff, every line of code. There's no hiding from a bad call when you're the only one who made it.

The product got better every time I removed something, not when I added it.

The hardest lesson was scope. The first version of the feature list was much longer. Cutting the Gmail import — even though it was technically interesting — was the right call because the booking extraction from paste/screenshot solved 90% of the problem with a fraction of the auth complexity. Removing native animation libraries after they caused crashes taught me that stability is a feature, and invisible infrastructure is better product work than visible features.

The thing I'm most proud of isn't any individual feature. It's that the architecture holds — 24 tables, row-level security on everything, realtime sync across all plan data, AI features brokered server-side with secrets never touching the client. It's built the way a real product should be built.