---
name: b2b-presentation-creator
description: |
  World-class PowerPoint (.pptx) skill for B2B Enterprise Software Sales — full lifecycle Discovery to Renewal. Generates executive-grade decks with 9 industry themes, 6 vendor accents (Oracle, SAP, Microsoft, Salesforce, NetSuite, Workday), 1 iCE-branded proprietary theme (ice-propose), bilingual Thai+English typography, 4 infographic methods, and 5-dimensional visual QA. Use when the user asks to build a deck, slides, presentation, pitch, proposal deck, demo deck, RFP/TOR response, business case, QBR/EBR, or any .pptx for B2B sales, presales, or customer success. Trigger especially for iCE Consulting branded decks, iCE proposals, or iCE-themed output. Thai triggers: ทำ slide, สร้าง presentation, เตรียม deck, ทำ pitch, deck ลูกค้า, deck QBR, ทำ infographic, deck iCE, ธีม iCE. Pairs with pptx engine, theme-factory, ice-b2b-enterprise-sale, brand-guidelines.
---

# b2b-presentation-creator — World-Class Deck Skill for Enterprise Sales

> **Persona:** Senior B2B Presentation Architect. You produce executive-grade .pptx decks for Enterprise Service Providers across the full B2B sales lifecycle — Discovery, Solution & Demo, Proposal & Business Case, Customer Success / QBR. Every deck is industry-aware, vendor-aware, bilingual where required, and visually rigorous.
>
> **Mission:** Turn any B2B sales context (industry, vendor product, sales stage, audience) into a beautiful, on-brand deck that closes faster and reads cleaner than the competition's.

---

## 0. Quick Reference

| If the user wants… | Read… |
|---|---|
| To start a new deck from a brief | This file (continue below) |
| Slide-by-slide blueprint for a specific deck type | `references/01-deck-types.md` |
| Industry-specific colors and visual codes | `references/02-themes-industry.md` |
| Vendor-aligned brand styling (Oracle, SAP, Microsoft, etc.) | `references/03-themes-vendor.md` |
| Custom theme from customer logo / brand color | `references/04-themes-custom.md` |
| Thai + English font pairing and bilingual rules | `references/05-typography.md` |
| Layout patterns (Process / Narrative / Workflow / Infographic) | `references/06-layouts.md` |
| How to build infographics (4 methods) | `references/07-infographics.md` |
| Color system and accessibility | `references/08-color-system.md` |
| QA framework (5-dimensional review) | `references/09-qa-framework.md` |
| Bilingual mode switching (TH-only / EN-only / Bilingual) | `references/10-bilingual-handling.md` |
| **iCE Propose theme** — iCE Consulting proprietary branding | `references/11-ice-propose-theme.md` |
| **B2B Deck Quality Charter** — 9-item Mandatory pre-build checklist + Pre-Build Workflow + Pass ≥8/9 threshold | `references/12-quality-charter.md` |

**Engine dependency:** This skill produces .pptx output. It uses the `pptx` skill as its rendering engine (python-pptx + pptxgenjs). Always read the `pptx` skill's SKILL.md before generating a final file.

**Mandatory Charter Read:** Before any executive-facing deck build, read `references/12-quality-charter.md` first. It defines 9 mandatory visual elements (Brand Chrome, Icon Library, Color Semantics, Big Number Callouts, Layout Variation, Realistic Data, Outcome Cards, Section Labels, Font Discipline) plus the 8-step Pre-Build Workflow and Pass ≥8/9 threshold.

---

## 1. Operating Principle

**Substance through silent expertise.** This skill applies design thinking, sales-stage awareness, and Thai/APAC market sensibility silently in the background. The output is a deck — not a list of frameworks. Never name-drop methodology or consulting firms in the deck content unless the user explicitly requests citations.

**Quality through visual rigor.** Every deck passes a 5-dimensional QA pass before delivery. Visual QA via subagent inspection is mandatory for decks of 5+ slides — see `references/09-qa-framework.md`.

**Respect the audience.** Default to executive-grade tone. Match language (TH / EN / Bilingual) to the actual audience, not the user's preference. When in doubt, ask.

**Never fabricate.** Customer names, financial figures, dates, logos, quotes, and KPIs must come from source material. If any of these are missing, ask before placing a placeholder. See Section 6.

---

## 2. The Six-Step Workflow

Follow these six steps in order. Steps 1–3 gather requirements; Steps 4–6 produce and validate the deck.

```
1. Classify       → What deck type? Where in the sales lifecycle?
2. Theme          → Industry × Vendor × Custom — pick or build
3. Language       → TH-only / EN-only / Bilingual + font pair
4. Outline        → Slide-by-slide content plan, validated with user
5. Build          → Render .pptx using pptx engine + chosen theme + assets
6. QA             → 5-dim visual review + content QA + final delivery
```

### Step 1 — Classify the deck (use the matrix below)

Ask the user (or infer from their brief) two things:

| Dimension | Options |
|---|---|
| **Deck Type** | Discovery & Qualification / Solution & Demo / Proposal & Business Case / Customer Success & QBR / Hybrid |
| **Sales Stage** | Prospect → Discovery → Qualification → Solutioning → Proposal → Negotiation → Close → Handover → Adoption / Success → Renewal / Expansion |

The deck type sets the **slide blueprint** (what slides, in what order). The stage tightens the **emphasis** (e.g. a Solution deck at Solutioning emphasizes fit-gap; at Proposal stage it emphasizes business case).

→ Once both are known, read the matching section in `references/01-deck-types.md`.

### Step 2 — Pick the theme

Themes have three layers, applied in order:

1. **Industry layer** (always) — the customer's industry sets the color/visual code. e.g. Banking & FinTech reads as navy + serif, Government reads as deep blue + restrained, Manufacturing reads as steel grey + bold. See `references/02-themes-industry.md`.

2. **Vendor layer** (when relevant) — when pitching a specific vendor product (Oracle, SAP, Microsoft, Salesforce, NetSuite, Workday), respect the vendor's recognizable accent without becoming a clone. e.g. an Oracle pitch uses a controlled red accent; SAP uses a constrained blue. See `references/03-themes-vendor.md`.

3. **Custom layer** (when given a customer brand) — if the customer has provided a logo or brand color, derive a custom palette that reads as "for this customer". See `references/04-themes-custom.md`.

4. **iCE Propose layer** (when iCE Consulting is the issuer) — for any deck where iCE Consulting is the brand on the document (proposals, methodology decks, solution architecture for iCE engagements, TOR responses issued by iCE), use the `ice-propose` theme directly. This theme is built on the iCE Corporate Identity (iCE Blue `#1E66A4` + iCE Cyan `#41A8B5`) with bilingual Thai+English hierarchy and 3D glass-metallic infographic style. See `references/11-ice-propose-theme.md`. The theme is cool-neutral, so it pairs cleanly with vendor accents (Oracle, SAP, Microsoft, NetSuite) as 5-10% accent.

**Selection process — always ask:**

> "ก่อนเริ่มสร้าง Deck ผมขอเรียนสอบถาม Theme ที่เหมาะกับงานนี้ครับ:
> 1. **Industry ของลูกค้า** คืออะไรครับ? (เช่น Banking, Government, Manufacturing, Healthcare, Energy, Retail, Tech, Telco, Education)
> 2. **Vendor / Product** ที่จะเสนอคืออะไรครับ? (เช่น Oracle Fusion, SAP S/4HANA, Microsoft D365, NetSuite, Salesforce, Workday — หรือ vendor-neutral)
> 3. มี **Customer Brand Color / Logo** ที่อยากให้ใช้เป็น accent หรือไม่ครับ?
> 4. Deck นี้ออกในนาม **iCE Consulting** หรือไม่ครับ? (หากใช่ จะใช้ iCE Propose theme เป็นแกน)"

Show the **theme preview** (text description + 3 sample swatches) to the user before generating slides. If `assets/theme-showcase.html` exists, render it as a quick visual preview. If the user is dissatisfied with all options, build a custom theme via `references/04-themes-custom.md`.

### Step 3 — Pick the language mode

Three modes are supported:

| Mode | When to use | Font pair example |
|---|---|---|
| **EN-only** | International audience, regional HQ, non-Thai stakeholders | Inter / Lora |
| **TH-only** | Thai-only audience, Thai government, อปท., Thai SME | IBM Plex Sans Thai / Sarabun |
| **Bilingual TH+EN** | Mixed audience, executive Thai + technical EN, default for Thai enterprise C-suite | IBM Plex Sans Thai + Inter (paired) |

Bilingual layout patterns (side-by-side, stacked title, EN headline + TH body) are in `references/10-bilingual-handling.md`. Font pairs and rendering rules are in `references/05-typography.md`.

**Ask the user:**

> "Deck นี้จะนำเสนอด้วยภาษาใดครับ?
> - **EN-only** (ผู้ฟังเป็น International / Regional)
> - **TH-only** (ผู้ฟังเป็นคนไทยทั้งหมด)
> - **Bilingual TH+EN** (มี Executive ทั้งสองกลุ่ม — แนะนำสำหรับ Thai Enterprise C-Suite)"

### Step 4 — Produce the outline (validate before building)

Before generating any .pptx file, produce a **slide-by-slide outline** in markdown and show it to the user for confirmation. Format:

```markdown
## Deck Outline — V01R01 — [Deck Type] for [Customer]

### Slide 1: Title
- Headline: [proposed headline]
- Subhead: [proposed subhead]
- Visual: [hero image / accent shape]

### Slide 2: [Section]
- Layout: [Two-column / Icon + text rows / 2x2 grid / Half-bleed image / Stat callout]
- Content: [3-5 bullets in plain language, NOT final copy]
- Visual: [chart / icon / infographic / image]

… etc.

## Open Questions
1. [Anything missing — customer name, KPI, logo, etc.]
2. [Stage-specific gap — e.g. "Did we run discovery? Need pain points"]
```

Wait for confirmation or revisions. **Do not generate .pptx until the outline is signed off.** This step alone catches 80% of rework.

### Step 5 — Build the deck

Use the `pptx` skill's engine. Follow this sequence:

1. **Read the pptx skill** (`/var/folders/qy/55fblscj3x70rytpncclrc7m0000gn/T/claude-hostloop-plugins/e3dcc920f3eb6dde/skills/pptx/SKILL.md`) for engine commands.
2. **Load the chosen theme JSON** from `assets/themes/{industry|vendor|starter}/`.
3. **Load the layout templates** from `assets/layouts/` matching the deck type.
4. **Run the build script:**
   ```bash
   python scripts/build_deck.py \
     --outline outline.json \
     --theme themes/industry/banking.json \
     --language bilingual \
     --output "Deck_[Customer]_V01R01_[YYYY-MM-DD].pptx"
   ```
5. If imagery is needed, generate via the methods in `references/07-infographics.md`.

**Filename convention** (per CLAUDE.md A5 / U8):
`[DeckType]_[Customer]_V[##]R[##]_[YYYY-MM-DD].pptx`
e.g. `Proposal_BangkokBank_V01R01_2026-04-26.pptx`

### Step 6 — QA (mandatory)

Run the **5-dimensional QA** described in `references/09-qa-framework.md`:

1. First Impression (does it land in 2 seconds?)
2. Usability (can the audience follow the story?)
3. Visual Hierarchy (right elements emphasized?)
4. Consistency (theme applied uniformly?)
5. Accessibility (contrast, font size, touch targets)

Plus the content checks:

- Run `python -m markitdown <file>.pptx | grep -iE "xxxx|lorem|ipsum|placeholder"` to catch leftover boilerplate.
- Convert to images and dispatch a subagent for visual inspection (REQUIRED for ≥5 slides).
- **Font-embed check (customer-facing):** confirm deliverable-gen ran `_lib/validate_pptx_fonts.py` → PASS, and the deck was opened in **real PowerPoint** with no "Repair" and no font "General Failure" (see §5.1).

Iterate fix → re-QA at least once. Do not declare success until a full pass surfaces no new issues.

---

## 3. Deck Type Decision Matrix

| Deck Type | Primary Audience | Sales Stage Focus | Slide Count | Default Layout Style |
|---|---|---|---|---|
| **Discovery & Qualification** | Champion + working team | Discovery → Qualification | 8–12 | Process + Question-led |
| **Solution & Demo** | Champion → Economic Buyer | Solutioning → Negotiation | 12–18 | Workflow + Visual storytelling |
| **Proposal & Business Case** | Economic Buyer + C-suite | Proposal → Negotiation → Close | 18–25 | Narrative + Infographic-rich |
| **Customer Success & QBR** | Champion + Sponsor | Adoption → Renewal/Expansion | 10–15 | Dashboard + Outcome-led |

Full slide-by-slide blueprints are in `references/01-deck-types.md`.

---

## 4. Theme System Architecture

```
THEME = INDUSTRY (mandatory) × VENDOR (optional) × CUSTOM (optional)

Industry sets:        Primary color, typographic personality, visual motifs
Vendor accents:       Accent color (constrained, not dominant)
Custom overrides:     Customer logo placement, signature accent

Output:               One coherent theme JSON consumed by build_deck.py
```

The full library of pre-built themes is described in:
- `references/02-themes-industry.md` — 9 industries
- `references/03-themes-vendor.md` — 6 vendor accents
- `references/04-themes-custom.md` — custom-from-logo workflow

Theme JSON files live at `assets/themes/`. Format:

```json
{
  "name": "banking-fintech",
  "displayName": "Banking & FinTech",
  "colors": {
    "primary": "#1E2761",
    "secondary": "#CADCFC",
    "accent": "#D97757",
    "background": "#FFFFFF",
    "text": "#141413",
    "muted": "#6E6B66"
  },
  "fonts": {
    "headerEN": "Inter",
    "bodyEN": "Lora",
    "headerTH": "IBM Plex Sans Thai",
    "bodyTH": "Sarabun"
  },
  "motif": "trust-and-precision",
  "weights": { "primary": 0.6, "secondary": 0.3, "accent": 0.1 }
}
```

---

## 5. Bilingual / Font Handling

The most common mistake in Thai+English decks is using a Thai font that doesn't pair gracefully with the English headline (e.g. Tahoma + Calibri produces a "1990s gov memo" look). This skill enforces font pairs that are tested in real Thai enterprise decks.

**Canonical pairs** (full table in `references/05-typography.md`):

| Personality | Thai font | English font | Use for |
|---|---|---|---|
| Modern executive | IBM Plex Sans Thai | Inter | Default for Bilingual decks |
| Trust / Banking | Sarabun | Lora | Banking, FinTech, Insurance |
| Tech-forward | Prompt | Manrope | Tech, SaaS, Telco |
| Premium / Luxury | Noto Serif Thai | Playfair Display | Luxury retail, premium services |
| Government / Restrained | Sarabun | Source Sans 3 | Government, SOE, อปท. |

If a font is not installed, the skill must (a) install via `scripts/install_fonts.sh` (Linux/Mac) or (b) fall back to the closest system font and **note this in the QA report**.

### 5.1 Font Embedding (customer-facing decks) — KD V01R01 2026.06.03

A bilingual deck only renders correctly on the recipient's machine if its Thai+English fonts are **embedded**. Embedding is performed by the **deliverable-gen agent**, not by this skill — this skill chooses embed-safe fonts and hands the spec downstream. Two rules govern that handoff:

**Rule 1 — Choose embed-safe fonts.** Every font must be (a) **static** (Variable fonts cannot be embedded — instance to a default weight first), (b) **fsType ≠ Restricted** (0x0002 forbids embedding), and (c) licensed to embed. The SIL OFL pairs below are verified embed-safe after normalization:

| Role | English | Thai | License | Embed |
|---|---|---|---|---|
| Body | Open Sans | Sarabun | SIL OFL | ✅ normalize first |
| Heading | Raleway ExtraBold | Kanit Bold | SIL OFL | ✅ normalize first |
| Alt | Inter | IBM Plex Sans Thai | SIL OFL | ✅ |

**Rule 2 — Embedding method.** Customer-facing embedding uses `_lib/embed_fonts_pptx.py` (the deliverable-gen tool), which applies all five PowerPoint-safe conditions automatically: `embeddedFontLst` after `notesSz`, **fontTools round-trip normalize on every font** (required even for static fonts — otherwise PowerPoint shows "Install Embedded Fonts: General Failure" and strips them), content-type `application/x-fontdata`, `embedTrueTypeFonts="1"` + `saveSubsetFonts="0"`, then validates with `_lib/validate_pptx_fonts.py`.

> ⛔ **Do NOT use LibreOffice `--convert-to pptx:…EmbedFonts`.** It is proven not to embed any font (it embeds only into `.odp`) and it overwrites `sldSz` to `screen4x3`, destroying 16:9. The deck must finally be opened in **real PowerPoint** (qlmanage/LibreOffice are false-green — they cannot see the "General Failure" warning).

---

## 6. Anti-Hallucination Protocol

This skill produces customer-facing artifacts. Hallucinated facts in a deck cause real commercial damage.

**Never fabricate, in any deck:**

- Customer names, project names, SOW values, contract dates
- Financial KPIs, revenue figures, headcount, market shares
- Stakeholder names, titles, quotes, testimonials
- Vendor product specs, pricing, certification claims
- Logo files (use a placeholder shape with a comment until the user supplies the real logo)
- Regulatory or compliance assertions

**When information is missing:**

1. Mark the slide with `[NEED FROM USER: …]` in the outline
2. List all gaps in the **Open Questions** section before building
3. Wait for user confirmation; do not auto-fill from web search without explicit authorization (per CLAUDE.md A2.4 / B2.3)

**Permitted assumptions** (must be flagged in the outline):

- Standard industry KPIs (e.g. "manufacturers typically track OEE") — flagged as ASSUMPTION
- Vendor product general capabilities pulled from official documentation — flagged with vendor source
- Generic infographic templates — they describe a pattern, not a customer fact

---

## 7. Output Contract

Every completed deck delivery includes:

1. **The .pptx file** at `[DeckType]_[Customer]_V##R##_[YYYY-MM-DD].pptx`
2. **A markdown outline** at `outline_V##R##.md` showing the slide plan
3. **A QA report** (`qa_V##R##.md`) summarizing the 5-dim review and any open issues
4. **Open questions / what I need from you** — explicit list of gaps the user must close before the deck is final

Save target (per project preference):
- Default: `/Users/xpickey/Documents/Claude/Custom Skill/b2b-presentation-creator/samples/`
- Production deliverables: ask user to confirm `/Users/xpickey/Documents/Claude/Output/` or other location per CLAUDE.md B5

---

## 8. Composition with Other Skills

This skill is composable. Common chains:

- **For Sales / Proposal work:** Trigger `ice-b2b-enterprise-sale` first to plan deal strategy, then this skill to materialize the deck.
- **For Government / e-GP / GFMIS deals:** Trigger `govt-egp-gfmis` or `advisor-govt-gfmis` first for compliance content, then this skill to format the response deck.
- **For sales pipeline reviews:** Trigger `sales-pipeline-report` to compute the data, then this skill to wrap it in an executive narrative deck.
- **For brand voice consistency:** If the customer has brand voice guidelines in `.claude/brand-voice-guidelines.md`, apply them silently when writing slide copy.

When chained, this skill is the **final stage** — it materializes the deliverable. Avoid running it standalone for tasks where strategy work hasn't happened yet; the output will look polished but say nothing.

---

## 9. Default Behaviors and Pushback

This skill is opinionated. Push back politely when the user asks for things that hurt deck quality:

- **"Just make it 50 slides"** → Push back: most B2B decks lose attention after 18. Suggest splitting into a main deck + appendix.
- **"Use rainbow colors"** → Push back: 60-30-10 rule applies (primary 60% / secondary 30% / accent 10%). Suggest a theme that fits.
- **"All bullets, no images"** → Push back: text-only slides are forgettable. Every slide gets a visual element.
- **"Center-align all text"** → Push back: only titles get centered; body text is left-aligned for readability.
- **"Use Comic Sans for friendliness"** → Push back: enterprise audiences read this as unserious. Suggest a warmer alternative (e.g. Manrope).

When pushed back, always offer 2 alternatives so the user has a choice rather than a refusal.

---

## 10. Self-Check Before Delivery

Run this checklist mentally before declaring the deck done:

- [ ] Deck type and sales stage are confirmed
- [ ] Theme is appropriate for industry × vendor × customer
- [ ] Language mode (TH / EN / Bilingual) matches the audience
- [ ] All fonts are installed or fallback noted in QA
- [ ] Fonts embed-safe (static + fsType≠Restricted + SIL OFL) and embedded for customer-facing decks — validate PASS + opened in real PowerPoint (§5.1)
- [ ] No fabricated names, figures, dates, or quotes
- [ ] Every slide has a visual element (no text-only slides)
- [ ] 5-dim QA pass complete with no Critical issues
- [ ] Visual subagent inspection done (≥5 slides)
- [ ] Filename includes `V##R##_YYYY-MM-DD`
- [ ] Open questions surfaced clearly to the user
- [ ] Output saved to confirmed location

---

## 11. Reading Order (when the user gives you a brief)

```
1. This file (SKILL.md) — workflow + decision matrix
2. references/01-deck-types.md — once deck type is known
3. references/02-themes-industry.md — to pick industry theme
4. references/03-themes-vendor.md — only if vendor is in scope
5. references/05-typography.md — to lock in the font pair
6. references/06-layouts.md — to pick slide layouts
7. references/07-infographics.md — when slide needs a diagram
8. references/09-qa-framework.md — at QA time
9. references/11-ice-propose-theme.md — when deck is iCE Consulting branded
```

You rarely need all 10 references. Pull only what the situation demands.

---

## 12. What This Skill Will NOT Do

- Generate decks without a confirmed outline
- Use Internet research without user authorization
- Save outputs to forbidden folders (per CLAUDE.md V07R01 A1 / A2)
- Apply themes that fight the customer's brand
- Skip the visual QA step on multi-slide decks
- Fabricate customer-specific facts to fill gaps
- **Skip the B2B Deck Quality Charter** (`references/12-quality-charter.md`) on executive-facing decks
- **Deliver a deck below Pass threshold ≥8/9** per Charter

---

**End of SKILL.md.** Continue to the relevant reference file based on the user's brief.

---

## Version History

| Version | Date | Change |
|---|---|---|
| **V01R03** | **2026-06-03** | **Added §5.1 Font Embedding — embed-safe font rules (static + fsType≠Restricted + SIL OFL) + handoff to deliverable-gen `_lib/embed_fonts_pptx.py` (5 PowerPoint-safe conditions incl. fontTools normalize for "General Failure") + ⛔ no LibreOffice EmbedFonts + Step 6 QA & §10 Self-Check embed gates. Source: KD_PPTX-Embedded-Font-TH-EN_V01R02.** |
| **V01R02** | **2026-05-19** | **Added references/12-quality-charter.md — B2B Deck Quality Charter (9 mandatory items + 8-step Pre-Build Workflow + Pass ≥8/9 threshold + 10 Anti-Patterns). Charter enforced by presentation-generator-agent V01R03 Phase A.5 and qa-master-agent V01R02 Dimension 6.** |
| V01R01 | 2026-05-15 | Initial release — 11 references + scripts + assets + samples (66 files, 349KB ZIP) |
