Founder & Product Manager · 2026 – Present

Orbit.

The collaboration-first app for planning anything with your people: trips, dinners, events, and the groups you keep coming back to. Plan together.

Platform
iOS · React Native · Expo
Backend
Supabase · Postgres · Edge Functions
AI
Claude (booking import, itinerary suggestions)
Role
Solo — product, design, and engineering
External beta on TestFlight
Scroll
24
Postgres tables with row-level security, growing as Groups & Circles land
4
Edge Functions keeping every key server-side: three AI-powered (booking extraction, itinerary suggestions, flight lookup) plus cover image search
0
Plan types to pick up front. Itinerary, Expenses, Polls, Tasks, Chat, and five more tabs appear as a plan needs them
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, show up, 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.
What's changing

Less to declare, more to do together.

Orbit started as a trips-and-events app. Watching how groups actually coordinate, most plans are smaller and more frequent: dinners, hangs, the same friends again next month. Orbit's next chapter removes the upfront choices and organizes Orbit around people instead of plan types.

◐ In progress
One field to start any plan
A single-field composer replaces the floating action button and the trip-or-event choice. Type what you're planning and go; Orbit doesn't need to know what kind of plan it is yet.
◐ In progress
Tabs that appear when needed
Plans open lean. Ghost tabs sit at the edge and append on tap, so a dinner stays a dinner and a week in Lisbon grows into itinerary, stays, and expenses.
◐ In progress
Groups & Circles
Persistent sets of people you plan with again and again. The main way in is a prompt after a plan wraps: plan something else with these five?
◐ In progress
Group pills on home
Filter pills by plan type give way to pills for your groups, so home is organized around who you're planning with.
◐ In progress
The Someday shelf
A home for ideas that don't have a date yet, so “we should do that sometime” has somewhere to live until someone commits.
Soft responses
Beyond yes or no: “I'm down” with a condition attached. Sequenced behind a permissions change that lets members update their own responses.
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
Just wants to say yes
Mostly just needs to say "I'm in" and show up. Needs a frictionless RSVP flow, not a full planning surface. Soft responses ("I'm down if…") are next.
👀
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
Edge Functions hold the Anthropic and Unsplash keys server-side and broker every external call. 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 (not AI, same pattern)
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 plans — 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 spent 4+ years at PwC shipping products for 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 same lesson keeps showing up at a bigger scale. Cutting the trip/event fork removed a decision people had to make before they'd done anything, and it made room for Orbit to be about every kind of plan, not just travel. Progressive tabs beat upfront declarations: a plan should grow into what it needs instead of asking you to predict it. And groups get created after a plan, not before. Nobody wants to fill out an empty group form, but "plan something else with these five?" right after a good night out is an easy yes.

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.