Human overview · for understanding
≤5s recorder dispatch + email-independent CRM touchpoint · 2026-07-08
≤5s recorder dispatch + email-independent CRM touchpoint
Master summary — the gist in 30 seconds
Input: a calendar-poll signal saying 'someone joined this Meet'. Output: (1) Fireflies gets the record-this-meeting instruction in under 5 seconds of OUR half of the trip, and (2) once the call ends, the transcript shows up as a touchpoint on the lead's CRM card — even if the lead joined with a personal Gmail instead of the address on file.
flowchart LR A["Calendar poll<br/>detects a join"] --> B["Our webhook<br/>/meet/participant-joined"] B -->|"≤5s budget"| C["Fireflies<br/>addToLiveMeeting"] C --> D["Call happens,<br/>Fireflies records"] D --> E["Transcript webhook<br/>handle_fireflies"] E -->|"match by event/link/title,<br/>NOT by email"| F["CRM touchpoint<br/>on the right deal"]
Input: the existing latency instrument, which starts timing only once the Fireflies call begins. Output: a timer that starts the instant our webhook receives the signal, so it captures ALL the pre-work (decoding, marker-writes, deal lookup) too — the true 'our half'. If that true number ever creeps past 5 seconds, the fix is to fire the Fireflies call in the background instead of making the calendar-poll wait on it.
flowchart TD
A["Webhook entry"] -->|"NEW: timer starts here"| B["Decode + write markers"]
B --> C["Look up the deal"]
C --> D["Call Fireflies"]
D --> E["Fireflies acknowledges"]
E --> F{"Full delta ≤ 5s?"}
F -->|yes| G["Keep it synchronous"]
F -->|no| H["Fire the call in the<br/>background instead"]
Input: a real scheduled meeting, a second human joining from an email the CRM has never seen. Output: two proofs read straight from production — the measured signal-to-ack delay is at or under 5 seconds, and after the call ends a touchpoint appears on the lead's card with the right call type in Notion.
flowchart LR
A["Schedule a ZZ-tagged<br/>test Meet"] --> B["Mátyás + 1 other<br/>(different email) join"]
B --> C["Read dispatch_latency<br/>marker ≤ 5s?"]
C --> D["Call ends,<br/>transcript arrives"]
D --> E["Touchpoint appears<br/>on the CRM deal?"]
E --> F{"Both true?"}
F -->|no| G["Fix + retry,<br/>up to 4x"]
F -->|yes| H["Ship it"]
Input: the current deployed state (the 5-minute early-join window, the email-independent matching logic, the primary/fallback recorder split). Output: three confirm-only checks proving nothing regressed — no new code unless a check goes red.
flowchart TD A["MR-04: early-join window<br/>still 5 minutes, deployed copy matches repo"] B["MR-05: a lead joining from<br/>any email still attributes correctly"] C["MR-06: primary (Fireflies SDK) +<br/>fallback (our poll) never double-record"] D["All green -><br/>no rebuild needed"] A --> D B --> D C --> D