wenmeet·PRD

Integration PRD · v1.0

Integration PRD

1 · Google Calendar (v1 — the only calendar)

CapabilityScopeDetail
Conflict nudges (read)calendar.readonlyOrganizer-only in v1. Free/busy per painted cell → "clashes with your 1:1" nudge. Invitee OAuth deferred to v1.1 — guests get no nudges, by decision.
Event writecalendar.eventsOn lock: event on organizer's calendar with all invitees as guests (Google emails them natively). Reschedule updates the same event; history in description.
Decline detectionpush channel (events.watch)Watch registered per locked meeting → /api/webhooks/gcal → DESTABILIZED → 1e. Channels renew via scheduled function (they expire ~7 days).

2 · Resend (email — the only v1 notification channel)

TemplateTriggerContent rule
invitemeeting createdFirst-person ask + tokenized paint link. No account language.
revealstate → PROPOSEDTo organizer: the one proposal + ⓘ breakdown summary.
lock_confirmstate → LOCKEDTo all: slot, attendees, quorum status. Calendar invite arrives separately from Google.
flex_ask2f flex sentTo one invitee: one-tap Sure / Can't links. Reveals aggregate only.
reschedre-lock after 1eOld slot struck through, new slot, one-line reason.
magic_linkguest claims history15-min single-use token → Supabase auth session.

3 · Netlify (hosting + functions)

4 · v2 media layer — deferred, decision wk 6

Decision date: end of week 6 (v1 launch), from the wk 4–6 spike readout. Owner: infra eng. The spike prototypes join-by-drag latency inside the live graph for both SDK options.

OptionForAgainst
Daily (SDK)Fastest embed; prebuilt UI escape hatch; recording API for 2e async recaps.Per-minute cost scales with blob dwell time; less layout control inside the blob ring.
LiveKit CloudDeep UI control (tiles inside the blob), open-source exit ramp, good data channels for presence.More integration work; recording pipeline is ours to assemble.
Meet/Zoom linksNear-zero build; blob is just a door.Breaks the core v2 promise — join-by-drag becomes join-by-new-tab; no presence inside the blob; ruled out unless spike fails both SDKs.

5 · Explicitly not integrated in v1