Raw transcript
sample-transcript.md · Tue 19 May 2026, 9:31–9:52 AESTGenerated minutes
Minutes — Relay billing migration — weekly standup
Summary
The team confirmed the Relay billing migration remains on track for a target cutover of Tuesday 2 June 2026, with a go/no-go review on Thursday 28 May. Duplicate invoice rows affecting ~400 annual-plan accounts will be deduplicated in the migration script rather than by reopening the frozen legacy biller, with every dropped row written to an audit log for QA verification. Pre-cutover work was sequenced: the dedupe patch, the affected-account list and the staging deployment of the new invoice UI are all due Friday 22 May, and annual-plan customers will be emailed roughly a week before cutover. The incident runbook still points at the legacy biller and has no owner for the update — flagged as a high risk to resolve before the go/no-go.
Decisions
| # | Decision | Decided by |
|---|---|---|
| D1 | Dedupe the ~400 duplicate annual-plan invoice rows in the migration script — keep the newer-metadata row, log every dropped row to an audit log — rather than reopening the frozen legacy biller. | Priya Nair |
| D2 | Target cutover locked for Tuesday 2 June 2026; go/no-go review Thursday 28 May (30 min, all attendees, Tom brings the CI numbers). | Priya Nair |
| D3 | The customer-email header-banner review must not block the send; copy sign-off (Sofia content, legal compliance) comes first. | Priya Nair |
Action items
| # | Action | Owner | Due | Priority |
|---|---|---|---|---|
| A1 | Land the patched migration script with duplicate-invoice dedupe plus audit log. | Marcus Webb | 2026-05-22 | high |
| A2 | Loop Tom in on the migration-script PR to review the audit-log format. | Marcus Webb | — | medium |
| A3 | Deliver final error-state copy for the new invoice UI to Jenna (incl. legal's failed-payment change). | Sofia Reyes | 2026-05-21 | high |
| A4 | Deploy the complete invoice UI to staging with the flag on, once copy arrives. | Jenna Liu | 2026-05-22 | medium |
| A5 | Pin CI to the payment-sandbox v2 endpoint to stop the timeouts. | Tom Okafor | 2026-05-20 | high |
| A6 | Send Sofia the full annual-plan account list with the ~400 flagged separately. | Marcus Webb | 2026-05-22 | high |
| A7 | Draft the pre-cutover email to annual-plan customers ahead of legal review. | Sofia Reyes | 2026-05-27 | high |
| A8 | Review the email header banner on return from leave (non-blocking per D3). | Dev Patel | — | low |
| A9 | Send the calendar invite for the 28 May go/no-go. | Priya Nair | 2026-05-19 | medium |
| A10 | Raise any audit-log anomalies in the ~400 accounts before the go/no-go, not at it. | Marcus Webb | 2026-05-28 | medium |
| A11 | Update the incident runbook to point at the new billing service dashboards before cutover. | UNASSIGNED ⚠ | — | high |
| A12 | Raise runbook ownership in the team channel and get a named owner this week. | Priya Nair | 2026-05-19 | medium |
| A13 | Write up the EU tax-compliant invoicing request (Meridian) for next quarter's planning doc. | Sofia Reyes | — | low |
Discussion
Backfill progress and duplicate invoice rows
Backfill ~82% complete. Marcus found duplicate invoice rows on ~400 annual-plan accounts from the 2023 Stripe migration — porting both rows risks double-charging high-value customers. Fixing at source would reopen the frozen legacy biller. Outcome: dedupe in the migration script (D1); patch + audit log due Friday (A1).
New invoice UI (frontend)
UI complete behind the flag except error states, blocked on final copy held up by one legal change. Jenna will not ship placeholder text. Outcome: copy Thursday (A3); staging with flag on Friday (A4).
QA and CI stability
Suite green locally, but CI fails ~1 run in 4 since Wednesday — payment sandbox timeouts after a provider release defaulted CI to the old API version. Retry-budget policy judged not a this-week fix. Outcome: pin v2 endpoint Wednesday (A5); retry budget parked to the go/no-go (P1).
Pre-cutover customer communications
Annual-plan customers to be emailed at least a week before cutover. Marcus supplies the account list; Sofia drafts, legal reviews; banner review by Dev is non-blocking (D3). Outcome: list Friday (A6); draft ≈ 27 May (A7); banner non-blocking (A8).
Cutover date and go/no-go
Conditional yeses from every workstream — Marcus (patch + weekend backfill), Tom (a clean CI week after the pin), Sofia (email out by ~25–26 May), Jenna (two weeks on staging). Outcome: cutover locked 2 June (D2); go/no-go 28 May (F1); invite same day (A9).
Incident runbook currency
Saturday-night escalation exposed the runbook still points at legacy biller dashboards — on-call during cutover would be flying blind. Nobody volunteered in the meeting. Outcome: update needed but UNASSIGNED (A11); ownership being sourced via the channel (A12).
EU tax-compliant invoice formatting (Meridian)
Second request this quarter; real but out of scope for May. Outcome: parked to next quarter's planning (P2, A13).
Risks & blockers
- Duplicate rows on ~400 annual-plan accounts could double-charge customers — Marcus Webb, high. Mitigation: D1 + audit log + A10.
- CI failing ~1 in 4 undermines trust in signals during cutover week — Tom Okafor, medium. Mitigation: A5; cutover conditional on a clean CI week.
- Incident runbook points at the legacy biller; on-call flying blind — Tom Okafor, high. Mitigation: A12; the update itself unassigned (A11).
- Customer-email timeline has no slack (list 22 May → draft → legal → send by ~25–26 May) — Sofia Reyes, medium. See extraction notes.
Parking lot
- CI retry budget for network-class failures — deferred to the 28 May go/no-go with a week of post-pin data.
- EU tax-compliant invoice formatting (Meridian) — deferred to next quarter's planning.
Follow-ups
- Go/no-go review — 2026-05-28 — cutover readiness; Tom brings CI numbers.
- Next weekly standup — 2026-05-26.
- Billing migration cutover (target) — 2026-06-02.
Transcription & extraction notes
- [00:08:38] "SPEAKER 2" attributed to Marcus Webb: Sofia replies "Thanks, Marcus" immediately after, and the content concerns the audit log he owns.
- [00:04:31] inaudible segment: the specific sandbox-provider release was not captured; only its stated effect is recorded.
- A7 due date 2026-05-27 is approximate: "middle of next week" resolved per the date-resolution rules.
- Sofia's email timeline is internally tight (send ~25–26 May vs draft ~27 May, legal 28 May). Recorded as stated; owner should reconcile.
- A8 assigned to Dev Patel in absentia, not yet acknowledged — owner confidence "inferred".
- A11 is UNASSIGNED — agreed as needed but nobody took it; ownership being resolved via A12.
- Duration (21 min) from the transcript footer's explicit wall-clock statement; speech-time timestamps end at ~00:10:20.
- Off-topic chatter (kitchen renovation / coffee machine, a neighbour's dog) was omitted from the minutes.
Excerpt of sample-output.json — the same facts as the minutes, machine-readable and validated against output-schema.json. Note the owner-confidence and due-date-source fields, and the verbatim evidence quotes.
{
"meeting": {
"title": "Relay billing migration — weekly standup",
"date": "2026-05-19", "start_time": "09:31", "timezone": "AEST",
"duration_minutes": 21, "meeting_type": "standup",
"attendees": [ …5 attendees with roles… ],
"apologies": ["Dev Patel (Product Designer) — on leave until Monday 25 May"]
},
"summary": "The team confirmed the Relay billing migration remains on track…",
"decisions": [
{
"id": "D1",
"decision": "Duplicate invoice rows on the ~400 affected annual-plan accounts will be deduplicated in the migration script — keep the row with the newer metadata, drop the other, and write every dropped row to an audit log — rather than fixing the data in the legacy biller.",
"rationale": "The legacy biller has been frozen since March; touching it would reopen change approval on very old code.",
"decided_by": "Priya Nair", "unanimous": true
}, … D2, D3 …
],
"action_items": [
{
"id": "A1",
"task": "Land the patched migration script with duplicate-invoice deduplication (keep the row with the newer metadata, drop the other) plus an audit log recording every dropped row.",
"owner": "Marcus Webb",
"owner_confidence": "explicit",
"due_date": "2026-05-22",
"due_date_source": "resolved_relative",
"priority": "high",
"source_quote": "If today goes okay — by Friday. Friday for the patched script plus the audit log."
},
…
{
"id": "A11",
"task": "Update the incident runbook to point at the new billing service dashboards before cutover.",
"owner": null,
"owner_confidence": "unassigned",
"due_date": null,
"due_date_source": "none",
"priority": "high",
"source_quote": "Someone should really update the incident runbook for the new service before we cut over."
}, … 13 items total …
],
"risks": [ …4 risks with severity + mitigation… ],
"parking_lot": [ …2 parked topics… ],
"follow_ups": [ …3 scheduled events… ],
"extraction_notes": [
"[00:08:38] 'SPEAKER 2' attributed to Marcus Webb: Sofia replies 'Thanks, Marcus' immediately after…",
"A11 (incident runbook update) is UNASSIGNED — the work was agreed as needed but nobody took it…",
… 8 notes total …
]
}
The full, unabridged JSON (17 KB, schema-valid) ships in the pack as sample-output.json.