A Chrome extension + companion website that turns single-player travel booking sites (Airbnb, MakeMyTrip, Agoda, …) into live multiplayer sessions with automatic expense splitting.
See prd.md for the full product requirements document and project-documentation.md for system design notes.
Group travel planning is painful — links get lost in group chats, dates collide, and one person ends up fronting ₹50,000+ on their credit card hoping friends pay them back.
CoBook solves this by:
- Letting you start a session from any supported booking site via the extension.
- Syncing the viewed property + an upvote/downvote board across all members in real-time.
- Hijacking checkout to fractionalize the total cost across all session members and generate instant payment requests (UPI / Venmo / CashApp).
The product cannot be used solo — every session forces invites, creating a built-in viral loop (target K-Factor > 1.2).
| Layer | Choice |
|---|---|
| Extension UI | React 18 + Vite + Tailwind CSS |
| Real-time backend | Supabase Realtime (Postgres + WebSocket) |
| Expense ledger | PostgreSQL NUMERIC(10,2) to avoid float errors |
| DOM parsing | JSON-based adapter schema (server-updateable, no Chrome re-review) |
| Hosting (web) | Vercel |
| Extension | Chrome MV3-compatible structure |
.
├── extension/ # Chrome extension (the product itself)
│ ├── manifest.json
│ ├── popup.html / popup.jsx
│ └── src/
│ ├── content.jsx # Injected on supported booking sites
│ ├── background.js # MV3 service worker
│ ├── supabaseClient.js
│ ├── hooks/
│ │ ├── useSessionSync.js
│ │ └── usePaymentSync.js
│ ├── screens/ # Onboarding, Lobby, Payment, Success, …
│ └── utils/
│ ├── auth.js
│ └── scraper.js # Adapter-driven DOM extraction
│
├── website/ # Marketing / install / privacy site
│ ├── index.html
│ └── src/
│ ├── App.tsx
│ ├── components/
│ ├── pages/PrivacyPolicy.tsx
│ └── main.tsx
│
├── supabase_schema.sql # Postgres schema
├── platform_adapters.sql # Booking-site adapter definitions
├── prd.md # Product requirements doc
├── project-documentation.md # Architecture deep-dive
└── CHANGES.md # Change log
cd extension
npm install
npm run dev # for the popup UI
# Then load the built `dist/` as an unpacked extension at chrome://extensionscd website
npm install
npm run dev # Vite dev server (default :5173)- Apply
supabase_schema.sqlto a fresh Supabase project. - Optionally apply
platform_adapters.sqland seed adapter rows.
| Stream | Mechanism |
|---|---|
| Affiliate routing | Final checkout URL passes through an affiliate network (1–5% on high-ticket bookings) |
| Convenience fee | Flat $2 / ₹50 micro-fee for auto payment routing |
- K-Factor must exceed 1.2
- Session-to-checkout rate
- Adapter failure rate (DOM scraper misses) — monitored via Sentry
prd.md— full PRD (problem, audience, MVP, monetization, KPIs)project-documentation.md— architecture + design choicesCHANGES.md— change log
This is currently a solo-founder project. Issues + PRs are welcome — please read prd.md first to stay aligned with the MVP scope (Airbnb + MakeMyTrip only, v1).
MIT — © 2026 Pranav Gawas