Talk Over Cookies · V2 · Documentation

Institutions meet through cookies, conversation and culture.

V2 is the cultural-exchange network: memberships, an intelligent matching engine and brand-new peer-to-peer video sessions between schools — built for fun, safe cross-border conversation.

4
membership plans
8
conversation themes
40 min
guided session
1 credit
per program
What is V2

From solo sessions to institution-to-institution exchange

There is no third-party host in the equation. Schools and colleges buy annual memberships and connect directly with peer institutions:

Live matching engine

Availability and membership changes trigger matching. Suitable offers respect both institutions’ hours and calendars; the nightly sweep adds fairness and repair.

Two geo pools

India-interstate exchanges, and international exchanges (never within the same country) — enforced automatically.

Branded video sessions

WebRTC with a shared clock and agenda, normally 40 minutes. Delayed starts still receive the full duration; reconnecting resumes the same clock.

Memberships & top-ups

Oldest usable plan credits are effective first. Top-ups follow the plan-stack rules; returned credits keep their individually attributed validity.

Smart notifications

Offers, requests, reminders, feedback, credit returns and postcard readiness — in-app/web push respecting notification preferences.

Admin control room

Program Flow, read-only match/member monitoring, themes, coupons and audit records. Plain-language stage explanations include optional technical detail.

Safety & presence by design

Institution accounts complete their profile and availability before matching. Coordinators facilitate their classes through a shared, guided agenda, normally 40 minutes. The app shows partner locations rather than institution identities; authorized admins monitor program records and live presence separately from historical attendance.

For founders & business

How the business works

Membership plans

One active membership can hold multiple plan bundles. Prices include applicable GST; privately shared discount codes are validated at checkout.

Get StartedIndia
🏫India · Interstate 5
₹2,500
5 programs / year · up to 10 students each
Popular✨India
🏫India · Interstate 12
₹4,999
12 programs / year · up to 10 students each
Go GlobalIndia
🌍India · International 10
₹9,999
10 programs / year · up to 10 students each
GlobalInternational
🌍International · 10
$99
10 programs / year · up to 10 students each

Economics at a glance

  • Recurring revenue
    Annual memberships; renewals stacked on top of remaining credits create a natural re-buy cadence.
  • Credit-based capacity
    Each finalized program consumes exactly 1 credit per institution. Payment/invoice records—not credit usage—measure money collected.
  • Region-gated plans
    India plans (₹) drive domestic growth; an international plan ($) opens global markets without same-country pairing.
  • Organic distribution
    Coupon generator + WhatsApp support keep acquisition lightweight for school coordinators.
For product & UX

The member journey

1

Choose a plan

Schools & colleges pick a membership that fits their program budget for the year.

2

Profile & availability

Complete the institution profile, confirm its time zone, then choose age-banded weekly windows and School/College Hours.

3

Find suitable offers

Offers respect geography, compatible age bands, usable credit category, hours and off days. No suitable partner right now is an honest possible outcome.

4

Both institutions confirm

One confirmation is still an offer. Both confirmations book the program and consume one eligible credit from each institution exactly once.

5

Connect and share

The shared clock starts when both booked participants connect, for the full configured duration. A private postcard follows genuine completion.

6

Top up & renew

Using the last credit does not block an unfinished booking. Renew through the usual checkout to add credits and return directly to bookings.

The Available screen

One list, three buckets. A first confirmation stays pending; both confirmations move the booked program to My Bookings. The feed refreshes while visible and hides offers that are no longer bookable.

Needs your confirmation

The other side already requested — one click confirms.

You requested

Waiting on the other institution to confirm.

Fresh matches

Newly proposed pairings ordered by how close they are to your preferred time.

The admin control room

Program Flow
Follow offers, confirmation, booked programs, actual live clocks and outcomes. Read the expandable founder guide beside the real records.
Matches
Review pairing quality and marketplace coverage. Institutions confirm their own offers; there is no admin booking path.
Memberships
Monitor institution plans, usable credits and expiry. Participant renewal uses checkout; account controls live on Users.
Themes
Curate the conversation topics, assign featured months, and import ICS calendars for date-driven “theme of the day”.
Coupons
Generate discount codes with the TOC brand baked in — single-use or perpetual.
Logs & Geography
Full audit trail plus state/country booking leaderboards for growth decisions.
For engineers & architects

Architecture & internals

Next.js 14 (App Router)TypeScriptSupabase (Postgres · Auth · Realtime)VercelRazorpayWebRTC (STUN/TURN)Web Push (VAPID)Tailwind v4PlaywrightVitest

Data model, at a glance

membershipsOne active membership per institution; credits, credits used, expiry, coupons, payment refs.
preferred_slotsPer-age-group weekly windows — each [day, time] slot serves one age group; the source of truth the engine matches on.
match_proposalsPairing record: pair, theme, proposed day/window, per-side confirmation timestamps, status.
programsBooked matched programs with scheduled UTC window, actual shared clock, lifecycle version and outcome.
program_credit_debitsPrivate exactly-once debit attribution and original-expiry credit returns.
participant_access_sessions · program_notification_outboxPrivate verified-session access and durable lifecycle announcements.
program_postcardsBoth PNG sizes and capture frames in private storage; byte-level ownership/admin authorization.
match_themes · theme_schedulesManaged topic roster + featured month windows (weeks removed).
coupons · admin_invites · password_reset_tokensCommerce, admin bootstrap, and self-managed resets.

How matching really runs

  1. 1 · Availability and membership changes trigger a participant-scoped pass. A bounded pass can report that matching is still in progress; the nightly sweep adds fairness and repair.
  2. 2 · Compatible age bands, different geography, usable credit category, saved hours and off days govern eligibility. Preferred-window overlap ranks offers; a fallback can use one institution’s filed time that both can attend.
  3. 3 · Interstate programs need Interstate credits; programs between different countries need International credits. The oldest usable plan entry determines the current category.
  4. 4 · Audience-appropriate monthly/calendar themes rotate by how recently each institution saw them. Recently shown themes move back; repeats can eventually occur.
  5. 5 · Both institutions must confirm before the program, its two bookings and one credit debit per institution are recorded atomically.

Security & trust

  • Row-level security on every table — users only ever see their own data (admins via service role).
  • Booking is atomic and retry-safe: both bookings and both attributed credit debits succeed together. Money is recorded separately through verified payment processing.
  • Razorpay webhook verified with HMAC-SHA256; server-side coupon re-validation on every free path.
  • Tokens for admin invites and password resets are single-use, expiring, stored as SHA-256 hashes only.
  • First-claim wins: once a window is booked, overlapping open proposals are atomically expired.
Clients
Browser, Server and Admin (service-role) Supabase clients; RLS protects every row; money via transaction RPCs.
Live sessions
Peer-to-peer WebRTC over a Supabase Realtime channel — presence, offers, reactions and mute controls.
Notifications
In-app inbox + VAPID web push; per-type preferences default to ON.
Review & QA

Test scenarios for the review phase

Use synthetic institution accounts and an admin in a disposable development database with matching test-mode integrations. These scenarios describe expected product behaviour; never simulate bookings, no-shows, coupon use or payments against real schools in production.

Onboarding & access

S1 · First setupOpen /setup with an empty DB, create the first admin via the magic link, set a password. Expect: lands on the admin console; /setup is now closed.
S2 · Invite an adminUsers → Invite Admin → new admin magic link → set password. Expect: both see the admin console.
S3 · Region gatingIndia profile → try plan outside-in; non-India profile → try plan 1/2/3. Expect: order creation rejected with a clear message.

Purchase & membership

S4 · Paid planMembership → Plan 2 → Razorpay test card → success handler. Expect: active membership (12 credits), coordinator staff row, reconcile + webhook both idempotent.
S5 · 100% couponUse a synthetic test coupon only in a disposable database. Expect: the genuinely free path bypasses Razorpay and grants membership credits once.
S13 · Renewal top-upRenew same plan. Expect: credits = remaining + plan count; expiry extends +1 year.
S21 · Coupon lifecycleAdmin generates a single-use code, uses it once, uses again. Expect: second use rejected, used_count incremented.

Matching & booking

S7 · Live match on slot saveTwo IN institutions, different states, same day+window, shared interest. Save the second institution’s slots. Expect: newAvailability ≥ 1, both see the proposal + program_available notification.
S9 · Two-party confirmA requests → B confirms. Expect: program created (type=matched), one credit used per side, proposal booked, listed in both My Bookings.
S10 · First-claim winsGive a third party an overlapping open proposal with A; A finalizes with B. Expect: third party’s proposal becomes expired.
S11 · Slot edit expiryA removes the window where an open proposal sits and saves. Expect: that proposal expires; Available refreshes within 30s.
S15 · Admin monitorOpen Flow, Programs and Matches as an admin. Expect: consistent records from the shared loader and no admin match-booking control.

Live sessions

S17 · Full session loopIn the configured join window, both booked participants enter and connect. Expect: one full-duration shared clock, uninterrupted audio across camera toggle, genuine completion and private postcard readiness.
S18 · Notification prefsTurn off program_available push for a user, then trigger a new match. Expect: in-app row still created; no push sent.
S19 · Cancel a programUse an authorized admin cancellation on a disposable fixture. Expect: booked institutions notified, program closed; no automatic credit-return or cash-refund claim.
S24 · Program not heldAdvance synthetic fixture times past scheduled end plus 30 minutes with 0/1/2 recorded arrivals and no started clock. Expect: attributable returns only to attendees, no postcard/feedback.

Ops & data

S14 · Offer deadlineMove a disposable offer’s pinned time outside the configured matching window. Expect: not confirmable and eventually expired; there is no independent seven-day offer-age rule.
S12 · Credits exhaustedSpend the last credit on a fixture booking. Expect: unfinished-booking access even after new sign-in; after closure, continuing-session history versus fresh-login renewal; renewal restores funding.
S20 · Geography & financialsWith seeded bookings check the Geography leaderboards and Financials for the current month/all. Expect: correct aggregates.
S22 · Password resetRequest reset → email link → new password. Expect: token single-use, old password rejected, enumeration-safe responses.
S23 · Automated suiteRun unit tests and the configured isolated/native browser suites. Account-seeding tests require a disposable database, never production.

Ready when you are.

This documentation is kept close to the build. Point of contact for sourcing is the institutional support line on WhatsApp — and the internal system reference lives alongside the codebase.

v2.0 · Membership + Matching + Livetalkovercookies.com

Install App

Get the app for the best experience