# Demo Script — Real-Time Seller Motivation on IBM Confluent

**Runtime:** 6–8 minutes  
**Audience:** CDO, data architect, VP of sales operations  
**Setup:** Open the demo URL and let it load _before_ the call starts. The console runs in three acts; the act selector is at the top of the page.

---

## Before You Start — The One-Line Frame

> "Your seller data is spread across eighteen systems that arrive four different ways, one of them is a lakehouse you already bought from someone else, and most of it is a day stale by the time anyone can use it. We're not going to migrate any of it. We're going to stream all of it — and query it two seconds later."

---

## Act 1 — The Tangle (~2 min)

**1. Open on Act 1.**
Eighteen source cards are on screen — Salesforce, Slack, Workday, S3 file drops, Databricks, and thirteen more.

**2. Point at the velocity badges:** `CDC`, `STREAM`, `BATCH`, `FILE`.
Say the quiet part — a nightly warehouse load cannot serve a program where recognition happens in Slack in real time and headcount lands from Workday at 2 a.m. The mismatch is not a data-volume problem, it is a _latency_ problem.

**3. Point at the Databricks card.**
It is the only one badged `FEDERATED · query-in-place`. Flag it now: "We will come back to this one, and we will never copy it."

**4. Land the counter row:** 18 sources · 4 velocities · 1 open lakehouse · 0 migrations.

---

## Act 2 — The Unification (~3.5 min) — *this is the Confluent act, give it the time*

**5. Switch to Act 2** and scroll straight to the live stream panel. Click **Start 30-second stream**. Salesforce CDC and Slack events begin landing in their Confluent topics; leave it running while you talk.

**6. Narrate what is moving:**
The `biw.salesforce.cdc` and `biw.slack.events` counters ticking up, the per-seller bars filling for Rachel, Marcus and Maya, and rows appearing in the live event feed. "Every row on that feed is a message that just hit Kafka."

**7. Point at the cluster line under the feed** — a real IBM Confluent Cloud bootstrap over `SASL_SSL`. This is not a recording and not a mock: it is a managed Kafka cluster accepting production-shaped traffic while we talk.

**8. Follow one event end to end.**
Scroll up and click **+ Slack recognition**. Watch the pipeline light up left to right: source → Kafka on IBM Confluent → the dual-write processor → IBM DataStax (live "now") **and** Iceberg on watsonx.data (history "always").

**9. Read the latency chip out loud** — the event lands in about two seconds.
> "One event, written twice, on purpose. There is no ETL hop between 'now' and 'always', and no overnight window between the seller doing something and the platform knowing about it."

**10. Scroll to the federated join panel.**
Walk the SQL: one statement, `cassandra.biw_live` FULL OUTER JOIN `iceberg.biw` FULL OUTER JOIN `databricks.main.biw_demo`. The event that landed ten seconds ago is already in the result set.

**11. The money shot.**
Point at the gold badge: _Databricks — read in place · 0 rows copied._
> "Your Databricks investment stays exactly where it is. The streaming layer is new, the lakehouse is open, and the incumbent is read in place through open Iceberg formats. Nothing you put in is ever trapped — not by Databricks, and not by us."

---

## Act 3 — The Payoff (~2 min)

**12. Switch to Act 3** and note the lock-up line: everything from here is seller-facing, and the platform stack never appears on it.

**13. Rachel (Veteran Expert) loads by default.**
Read the nudge headline and body — generated by **IBM watsonx.ai**; the model badge is on the card. Then the reward bar: 800 points to go.

**14. Scroll the task list.**
Every task is priced, and **the four tasks add up to exactly the 800-point gap** — the goal is never out of reach by design.

**15. Click through Where the nudge lands:**
Elevate app → Salesforce Lightning → Slack DM → BluePoints / Thanks@IBM. One payload, four surfaces, identical copy.

**16. On the Slack surface, point at the provenance chips** under each task — `Salesforce · deal closed`, `Databricks · historical influence`.
> "This is the whole argument in one frame: the nudge is only possible because three sources that never used to meet were streamed together moments ago, and it can show its work."

**17. Switch sellers** to **Marcus** (Developing Contributor, 1,600 to go) or **Maya** (Team Transitioner, 2,100 to go) to show the same pipeline producing genuinely different coaching for a different persona.

---

## Close

> "Eighteen sources on one event backbone, queryable two seconds after they happen, joined with a lakehouse we never migrated — and a seller who gets told the one thing that moves them, while it still matters. The streaming layer is the product; the nudge is just where you can see it."

---

## Handling Questions

**"Why streaming — why not just load it nightly?"**
Because the payoff is perishable. A nudge that reacts to this morning's close lands; the same nudge tomorrow is noise. Confluent is also what lets eighteen different velocities share one backbone instead of eighteen bespoke pipelines, which is the maintenance cost nobody budgets for.

**"Is this real or is it a mock?"**
Real engines, synthetic rows. Every frame showing a number carries a persistent SIMULATED label. Kafka, Cassandra, Iceberg, Presto and watsonx.ai are all live services; the data is seeded (`SEED=20260812`) so the demo is byte-identical on every run.

**"Are you asking us to leave Databricks?"**
No, and the demo is built so you cannot accidentally imply it. Databricks is read in place, zero copy. IBM wins the streaming, integration and serving layers; the incumbent keeps the rest.

**"Where does the AI actually sit?"**
Thin and last. watsonx.ai writes the nudge copy and the task list from data the platform already unified. It is provenance-forward on purpose — the AI serves the data story, it doesn't replace it.
