Presentation Spec — Mixed-Stakeholder Deck
The structure anchor for generated/plan-presentation.pptx. Every regeneration reads this file first and populates slides exactly as described below. Edit this file to change deck structure; do not edit prompts, do not edit the source plan files.
Meta
| Property |
Value |
| Audience |
Mixed stakeholder — steering committee, leadership, build team leads, adjacent-initiative owners. Some execs, some technical. |
| Total slides |
18 |
| Target read time |
30–45 minutes walked through, ~10 minutes self-read |
| Theme |
document-skills:theme-factory default professional theme. Clean, neutral, no custom branding on first pass. Override: add a **Theme override:** line here with the target preset if you want different. |
| Body font |
Theme default sans-serif |
| Accent color |
Theme default |
| Source of truth for title |
"Shopfloor IT/OT Transformation — 3-Year Plan" |
| Subtitle template |
"As of {{date}}" where {{date}} is the regeneration timestamp in YYYY-MM-DD form |
Truncation rules (apply to every slide unless overridden per-slide)
- Max 6 bullets per slide. If the source section has more than 6 bullets of load-bearing content, pick the 6 most load-bearing and add a footer line: "Full detail:
<source file> → <section name>."
- Max ~12 words per bullet. Aim for scan-ability, not completeness.
- No nested bullets. If the source has nested bullets, flatten to one level by merging or dropping sub-points.
- Preserve source vocabulary. Use the same words the plan uses (e.g., "OtOpcUa," "ScadaBridge," "SnowBridge," "pillar 3," "data locality," "single sanctioned crossing point") — don't paraphrase technical terms or the Vision line.
- TBDs stay visible. If a source section contains a
_TBD_ that is load-bearing for the slide's point, call it out explicitly: "(TBD — see source.)" Don't silently drop TBDs.
- Overflow callout. When content is truncated, the footer line "Full detail:
<source file> → <section name>" appears in small text at the bottom of the slide.
Layout fallbacks
If document-skills:pptx cannot render a requested layout:
- 3-column content → single column with visual separators. Applies to slide 5 (Three Pillars).
- 2-column content → single column with a horizontal rule. Applies to slide 16 (Open Coordination Items).
- Diagram + caption → caption only with a "(Diagram not yet available — render
<path>.mmd and re-run)" note. Applies to slides 8 and 9 until the PNG files exist in diagrams/.
- Multi-column table that overflows → split across two slides labeled "N/2" and "2/2". Applies to slide 13 (Roadmap grid) if 7 rows × 3 columns doesn't fit one slide at readable type size.
Slide 1 — Title
| Property |
Value |
| Layout |
Title |
| Source |
— (no source file) |
| Content |
Title: "Shopfloor IT/OT Transformation" · Subtitle: "3-Year Plan" · Footer: "As of {{regeneration-date}}" |
| Rules |
No bullets, no extra content. Title slide is deliberately minimal. |
Slide 2 — Executive Summary
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../goal-state.md → Vision + Success Criteria |
| Population |
5 bullets: (1) the Vision line verbatim, (2)–(4) one line per pillar (the binary success criterion, not the rationale), (5) a single line naming the key non-goals in the form "Out of scope: operator UX modernization, licensing, VM-level DR, physical network segmentation." |
| Notes |
This slide is the TL;DR for anyone who reads only one slide. Keep it tight. |
Slide 3 — Today's Reality
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../current-state.md — synthesize from Systems & Interfaces and Equipment OPC UA sections |
| Population |
5 bullets describing the pain points of the current state: (1) split SCADA stack (Aveva + Ignition by purpose), (2) WAN-dependent central Ignition with direct OPC UA sessions to site equipment, (3) multiple concurrent OPC UA sessions to the same equipment, (4) legacy IT↔OT integrations outside ScadaBridge (3 of them), (5) fragmented data access and inconsistent values between consumers |
| Notes |
The source file doesn't have a dedicated "pain points" section (it's a _TBD_). Synthesize from the inline observations in Systems & Interfaces and Equipment OPC UA. Don't invent pain points that aren't grounded in the source. |
Slide 4 — Vision
| Property |
Value |
| Layout |
Big-text / quote layout |
| Source |
../goal-state.md → Vision |
| Population |
The Vision line ("stable, single point of integration between shopfloor OT and enterprise IT") as the centerpiece. 3 sub-bullets below it on what that means concretely — extracted from the paragraph that follows the Vision line in goal-state.md. |
| Notes |
This slide repeats the Vision from slide 2 deliberately — slide 2 is the 30-second summary; slide 4 is where the Vision actually gets the airtime the conversation will return to. |
Slide 5 — Three Pillars
| Property |
Value |
| Layout |
3-column content (fallback: single column with visual separators) |
| Source |
../goal-state.md → Success Criteria |
| Population |
Column 1: Pillar 1 — Unification (100% of sites on standardized stack). Column 2: Pillar 2 — Analytics/AI Enablement (≤15-minute analytics SLO; one "not possible before" use case in production). Column 3: Pillar 3 — Legacy Retirement (inventory to zero). Each column: (a) title, (b) the binary criterion in one line, (c) one line of "what this means" context. |
| Rules |
All three pillars must appear. Do not prioritize one over the others here — they are equal end-state criteria per the plan. |
Slide 6 — Enterprise Layout
| Property |
Value |
| Layout |
Content (bulleted, grouped by tier) |
| Source |
../current-state.md → Enterprise Layout |
| Population |
Grouped bullets: (a) Primary Data Center — South Bend. (b) Largest Sites — Warsaw West, Warsaw North (one cluster per building). (c) Other Integrated Sites — Shannon, Galway, TMT, Ponce (single cluster per site). (d) Not Yet Integrated — Berlin, Winterthur, Jacksonville (and others, with volatility note). |
| Notes |
The volatility note about smaller sites changing belongs on the slide as a one-line disclaimer at the bottom. |
Slide 7 — Today's Systems
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../current-state.md → Systems & Interfaces |
| Population |
6 bullets, one line each: (1) Aveva System Platform — validated data collection; (2) Ignition SCADA — KPI monitoring (central, WAN-dependent); (3) ScadaBridge — in-house Akka.NET integration layer, already deployed; (4) LmxOpcUa — in-house OPC UA server exposing System Platform objects; (5) Camstar MES — sole enterprise MES; (6) Aveva Historian — sole historian, central-only, permanent retention. |
| Notes |
Delmia DNC is mentioned as one of the two legacy Web API interfaces but does not need its own bullet here — it's captured on slide 15. |
Slide 8 — Goal State: Layered Architecture
| Property |
Value |
| Layout |
Diagram + caption |
| Source |
../goal-state.md → Layered Architecture + diagrams/architecture-layers.png |
| Population |
Embed diagrams/architecture-layers.png as the centerpiece. Caption: one line per layer — "Layer 1 Equipment · Layer 2 OtOpcUa (equipment + System Platform namespaces) · Layer 3 SCADA (System Platform + Ignition) · Layer 4 ScadaBridge (IT↔OT bridge)". Callout: "ScadaBridge central is the sole IT↔OT crossing point." |
| Fallback |
If architecture-layers.png does not exist, render a placeholder box with the text "Diagram not yet available — render diagrams/architecture-layers.mmd at https://mermaid.live and save PNG to diagrams/architecture-layers.png, then re-run regenerate presentation." |
Slide 9 — Goal State: End-to-End Data Flow
| Property |
Value |
| Layout |
Diagram + caption |
| Source |
../goal-state.md → the tag-flow sentence (search for "A tag read from a machine in Warsaw West") + diagrams/end-to-end-flow.png |
| Population |
Embed diagrams/end-to-end-flow.png. Caption: the tag-flow sentence from goal-state.md, verbatim or near-verbatim. |
| Fallback |
Same fallback pattern as slide 8, but for end-to-end-flow.mmd / .png. |
Slide 10 — OtOpcUa — the unification layer
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../goal-state.md → OtOpcUa — the unified site-level OPC UA layer |
| Population |
6 bullets: (1) single sanctioned OPC UA access point per site, one session per equipment; (2) two namespaces — equipment + System Platform (absorbs LmxOpcUa); (3) clustered, co-located on existing System Platform nodes; (4) hybrid driver strategy — proactive core library + on-demand long-tail; (5) OPC UA-native auth (UserName + standard security modes, inherited from LmxOpcUa); (6) tiered cutover — ScadaBridge → Ignition → System Platform IO across Years 1–3. |
Slide 11 — Analytics Stack: SnowBridge, Snowflake, dbt
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../goal-state.md → SnowBridge + Aveva Historian → Snowflake + Snowflake-side transform tooling |
| Population |
6 bullets: (1) SnowBridge — custom-built machine-data-to-Snowflake upload service; (2) source abstraction — Aveva Historian SQL in Year 1, Redpanda/ScadaBridge in Year 2; (3) governed selection with blast-radius approval workflow; (4) dbt curated layers, orchestrator out of scope; (5) ≤15-minute analytics SLO; (6) one "not possible before" AI/analytics use case in production by end of plan (pillar 2 gate). |
Slide 12 — Redpanda EventHub: the async backbone
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../goal-state.md → Async Event Backbone |
| Population |
6 bullets: (1) self-hosted, central in South Bend (single-cluster HA); (2) per-topic tiered retention — operational 7d / analytics 30d / compliance 90d; (3) bundled Schema Registry; (4) Protobuf schemas in central schemas repo with buf CI, BACKWARD_TRANSITIVE compatibility; (5) {domain}.{entity}.{event-type} topic naming, site identity in message not topic; (6) SASL/OAUTHBEARER auth + prefix ACLs. |
Slide 13 — 3-Year Roadmap (workstreams × years)
| Property |
Value |
| Layout |
Table — 7 rows × 3 columns (+ workstream name column = 4 columns total) |
| Source |
../roadmap.md → The grid |
| Population |
Render the 7×3 roadmap grid as a PPTX table. Truncate each cell to the single most important commitment (not the full cell text, which would overflow). Workstream column: full name. Year columns: ~10-word headline per cell. Color-code cells by pillar if the theme supports it. |
| Fallback |
If the 7×3 table doesn't fit one slide at readable type size, split across two slides: workstreams 1–4 on slide 13a (OtOpcUa, Redpanda, SnowBridge, dbt), workstreams 5–7 on slide 13b (ScadaBridge Extensions, Site Onboarding, Legacy Retirement). Label slides 13 and 14, renumber subsequent slides. |
Slide 14 — Year 1 Focus
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../roadmap.md → the Year 1 column across all 7 workstreams |
| Population |
7 bullets, one per workstream, ordered by prerequisite position: (1) OtOpcUa — evolve LmxOpcUa, protocol survey, deploy to every site, begin tier-1 cutover; (2) Redpanda — stand up central cluster, schema registry, initial topics; (3) SnowBridge — design + first source adapter (Historian SQL) with filtered flow; (4) dbt — scaffold project, first curated model; (5) ScadaBridge Extensions — deadband publishing + EventHub producer; (6) Site Onboarding — document lightweight onboarding pattern (no new sites Year 1); (7) Legacy Retirement — populate inventory (done), retire first integration as pattern-proving exercise. |
| Rules |
Exceeds the 6-bullet truncation rule. 7 bullets here is intentional because each bullet represents one workstream's Year 1 commitment — dropping one would misrepresent the plan. Keep all 7, tighten wording to ≤10 words per bullet. |
Slide 15 — Pillar 3: Legacy Retirement (3 → 0)
| Property |
Value |
| Layout |
Content (bulleted + callout) |
| Source |
../current-state/legacy-integrations.md → Current inventory |
| Population |
3 bullets — one per legacy integration: (1) LEG-001 Aveva Web API → Delmia DNC (bidirectional orchestrated handshake; harder retirement — requires ScadaBridge scripts to re-implement System Platform parse logic). (2) LEG-002 Aveva Web API ← Camstar MES (Camstar-initiated; easier retirement — ScadaBridge already has native Camstar path; requires Camstar-side reconfiguration). (3) LEG-003 System Platform → custom email notification service (easier retirement — ScadaBridge native notifications already exist). Callout at bottom: "Historian MSSQL reporting surface (BOBJ / Power BI) is explicitly carved out as not legacy — see legacy-integrations.md → Deliberately not tracked." |
Slide 16 — Open Coordination Items
| Property |
Value |
| Layout |
2-column content (fallback: single column with horizontal rule) |
| Source |
../goal-state.md → Strategic Considerations (Adjacent Asks) |
| Population |
Left column — Digital Twin: 4 bullets: (1) Management ask, not a committed workstream; (2) Plan shaped to serve if it materializes (OtOpcUa, Redpanda, Snowflake); (3) 8 clarification questions + 4-bucket decision framework ready; (4) Next: schedule management conversation — brief at goal-state/digital-twin-management-brief.md. Right column — BOBJ → Power BI: 4 bullets: (1) In-flight reporting initiative, not owned by this plan; (2) Three consumption paths analyzed (Snowflake dbt / Historian direct / both); (3) Recommended position: Path C — hybrid, with Path A as strategic direction; (4) Next: schedule coordination conversation with reporting team — 8 questions ready in goal-state.md. |
Slide 17 — Non-Goals
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../goal-state.md → Non-Goals |
| Population |
6 bullets, one line each: (1) Operator UX modernization — deprioritized against the three pillars; (2) Support staffing decisions — other teams; (3) Licensing strategy — not tracked; (4) Self-hosted orchestrator selection — chosen outside this plan; (5) VM-level DR — out of scope for Redpanda; (6) Physical network segmentation — out of scope. |
| Notes |
This slide is important for managing stakeholder expectations — what the plan does not commit to is as load-bearing as what it does commit to. Do not drop this slide even if time is short. |
Slide 18 — Asks & Next Steps
| Property |
Value |
| Layout |
Content (bulleted) |
| Source |
../status.md → Top pending items + inferred from ../roadmap.md → Year 1 |
| Population |
5 bullets: (1) Sponsor confirmation + Year 1 funding commitment; (2) Named owners for each of the 7 workstreams (build team alignment); (3) Digital Twin management conversation — schedule (see brief); (4) Power BI coordination conversation with reporting team — schedule; (5) Equipment protocol survey owner named (Q1 Year 1 prerequisite for OtOpcUa core driver library). |
| Notes |
This is the closer slide. Each bullet should be a discrete ask with a clear "who needs to do what" so the audience leaves with action. |
Editing this spec
- Structural changes go here. If you want to add, remove, reorder, or reshape a slide, edit this file. Don't edit the prompt ("regenerate presentation") and don't edit the source plan files.
- Content changes go in the source. If a slide's content is wrong because the plan itself is wrong, edit the source plan file (
current-state.md, goal-state.md, roadmap.md, etc.) — the next regeneration will pick up the change automatically because this spec references the source file, not a snapshot.
- Theme / visual changes go in the meta section at the top of this file. Add a
**Theme override:** line naming the target preset, or tweak the truncation rules. First regeneration uses theme-factory default; iterate from there.
- Never edit
generated/plan-presentation.pptx by hand. Any hand-edits are overwritten on the next regeneration. If you find yourself wanting to hand-edit, the correct move is to edit this spec and regenerate.
Slide-count budget
Current: 18 slides. If additions push this above 22, reconsider whether the deck is still "mixed-stakeholder" or has quietly become a build-team deck. The mixed-stakeholder audience tops out around 20 slides before attention fragments; a build-team deck belongs in a separate spec file (build-team-spec.md or similar) feeding a second generated output.