{
  "title": "Platform sync",
  "durationSec": 322,
  "language": "english",
  "note": "Synthetic transcript written for benchmarking. No real meeting and no personal data, so it can be published in full next to the results.",
  "speakerKey": { "Speaker A": "Alex (lead)", "Speaker B": "Maya", "Speaker C": "Tom" },
  "traps": [
    "Daniel is named but never speaks: he must not appear as a participant.",
    "The beta date is set to the 19th and later moved to the 26th: only the 26th is a decision.",
    "A task for Maya to email the vendor is assigned and then explicitly withdrawn: it must not appear as an action item.",
    "The signup number is said as 3400 and immediately corrected to 2400."
  ],
  "transcript": [
    { "t": 0, "dur": 8, "spk": "Speaker A", "role": null, "text": "Alright, we are recording. Tom and Maya are here with me. Daniel from legal could not make it, he sent notes instead." },
    { "t": 9, "dur": 7, "spk": "Speaker B", "role": null, "text": "Thanks. Let's start with the events table, because everything else depends on it." },
    { "t": 17, "dur": 11, "spk": "Speaker A", "role": null, "text": "Right. We looked at three options. Keeping it in the current SQLite file, moving it to Postgres, or splitting it into a separate store entirely." },
    { "t": 29, "dur": 9, "spk": "Speaker C", "role": null, "text": "Splitting it means two sources of truth on day one. I would rather not carry that while we are still changing the schema weekly." },
    { "t": 39, "dur": 6, "spk": "Speaker B", "role": null, "text": "Agreed. And SQLite falls over on concurrent writes once we pass a few hundred sessions." },
    { "t": 45, "dur": 8, "spk": "Speaker A", "role": null, "text": "So we are going with Postgres for the events table. That is settled, I do not want to reopen it next week." },
    { "t": 54, "dur": 5, "spk": "Speaker C", "role": null, "text": "Fine by me. Someone has to write the migration though." },
    { "t": 60, "dur": 9, "spk": "Speaker A", "role": null, "text": "Maya, can you write the migration by Friday? It does not have to be pretty, it has to be reversible." },
    { "t": 70, "dur": 4, "spk": "Speaker B", "role": null, "text": "Yes, Friday works. Reversible, understood." },
    { "t": 75, "dur": 10, "spk": "Speaker C", "role": null, "text": "Second topic, the beta. Sales keeps asking for a date and I keep telling them I do not have one." },
    { "t": 86, "dur": 12, "spk": "Speaker A", "role": null, "text": "Let's look at the numbers first. We had three thousand four hundred signups on the waitlist last month. Sorry, that is wrong, it is two thousand four hundred. The larger figure counted duplicates." },
    { "t": 99, "dur": 7, "spk": "Speaker B", "role": null, "text": "Two thousand four hundred is still more than we can onboard by hand, so the beta needs the self-serve flow." },
    { "t": 107, "dur": 6, "spk": "Speaker C", "role": null, "text": "Self-serve is close. The blocker is load, not the flow itself." },
    { "t": 114, "dur": 8, "spk": "Speaker A", "role": null, "text": "Then let's commit. We ship the beta on the nineteenth. I will tell sales today." },
    { "t": 123, "dur": 8, "spk": "Speaker B", "role": null, "text": "Before you do, Alex, who is running the load test? Nobody has touched it in two weeks." },
    { "t": 132, "dur": 5, "spk": "Speaker C", "role": null, "text": "I can take the load test. I still have the harness from the last release." },
    { "t": 138, "dur": 6, "spk": "Speaker A", "role": null, "text": "Good, Tom takes the load test. Get me a number by the end of next week." },
    { "t": 145, "dur": 11, "spk": "Speaker B", "role": null, "text": "One more thing on the vendor licence. It expires mid month and nobody has confirmed the renewal terms." },
    { "t": 157, "dur": 7, "spk": "Speaker A", "role": null, "text": "Maya, can you email the vendor and ask for the renewal terms in writing?" },
    { "t": 165, "dur": 5, "spk": "Speaker B", "role": null, "text": "Sure, I will send it after this call." },
    { "t": 171, "dur": 13, "spk": "Speaker C", "role": null, "text": "Actually hold on. Daniel's notes say legal already sent that email on Monday and the vendor replied. So drop it, Maya, there is nothing to send." },
    { "t": 185, "dur": 4, "spk": "Speaker B", "role": null, "text": "Even better. Dropping it." },
    { "t": 190, "dur": 10, "spk": "Speaker A", "role": null, "text": "Back to the date. I checked the calendar while Tom was talking and the nineteenth does not work. Support is out that week for the offsite." },
    { "t": 201, "dur": 9, "spk": "Speaker C", "role": null, "text": "That is a real problem. Shipping a beta with no support coverage is how you get a bad first impression that sticks." },
    { "t": 211, "dur": 9, "spk": "Speaker A", "role": null, "text": "So scratch the nineteenth. We move the beta to the twenty sixth. That is the date, I am not moving it again." },
    { "t": 221, "dur": 5, "spk": "Speaker B", "role": null, "text": "Twenty sixth. I will update the roadmap." },
    { "t": 227, "dur": 8, "spk": "Speaker C", "role": null, "text": "If we are moving it, we should also decide what happens when the migration goes wrong in production." },
    { "t": 236, "dur": 10, "spk": "Speaker A", "role": null, "text": "Tom, prepare the rollback plan before the twenty sixth. Written down, not in your head, and tested against a copy of production." },
    { "t": 247, "dur": 4, "spk": "Speaker C", "role": null, "text": "Understood. Written and tested." },
    { "t": 252, "dur": 12, "spk": "Speaker B", "role": null, "text": "Last item, single sign-on. Two prospects asked about it this week and I want to know whether it is in scope for launch." },
    { "t": 265, "dur": 11, "spk": "Speaker A", "role": null, "text": "It is not. We are not adding SSO for launch. If a prospect blocks on it, send them to me and I will handle the conversation." },
    { "t": 277, "dur": 6, "spk": "Speaker B", "role": null, "text": "Clear. I will stop promising it as a maybe." },
    { "t": 284, "dur": 9, "spk": "Speaker C", "role": null, "text": "One question on the migration. Do we keep the old table around after the cut over, or drop it straight away?" },
    { "t": 294, "dur": 8, "spk": "Speaker A", "role": null, "text": "Keep it for two weeks read only, then drop it. Maya, fold that into the migration." },
    { "t": 303, "dur": 4, "spk": "Speaker B", "role": null, "text": "Two weeks read only, then drop. Got it." },
    { "t": 308, "dur": 7, "spk": "Speaker A", "role": null, "text": "That is everything. Migration Friday, load test number next week, rollback plan before the twenty sixth." },
    { "t": 316, "dur": 5, "spk": "Speaker C", "role": null, "text": "And no SSO. Thanks everyone." }
  ]
}
