Workflow
1. Clarify Requirements
- Ask the user: Single-slide or multi-slide (3-4 slides)?
- Ask the user: Any specific focus areas or topics to emphasize?
- Only after user confirms, proceed to research
2. Research & Planning
Data Sources:
- Primary: Company filings (BamSEC, SEC EDGAR - "Item 1. Business", MD&A), investor presentations, corporate website
- Market data: Bloomberg, FactSet, CapIQ (price, shares, market cap, net debt, EV, ownership)
- Estimates: FactSet/CapIQ consensus for NTM revenue, EBITDA, EPS
- News: Press releases from last 90 days, M&A activity, guidance changes
Required Metrics:
- Financials: Revenue, EBITDA, margins (%), EPS, FCF for ±3 years
- Valuation: Market Cap, EV, EV/Revenue, EV/EBITDA, P/E multiples
- Growth: YoY growth rates (%)
- Ownership: Top 5 shareholders with % ownership
- Segments: Product mix and/or geographic mix (% breakdown)
Normalization:
- Convert all amounts to consistent currency
- Scale consistently ($mm or $bn throughout, not mixed)
Before Building:
- Print outline to chat with 4-5 bullet points per item (actual numbers, no placeholders)
- Print style choices: fonts, colors (hex codes), chart types for each data set
- Get user alignment: "Does this outline and visual strategy align with your vision?"
3. Slide-by-Slide Creation
CRITICAL: You MUST create ONE slide at a time and get user approval before proceeding to the next slide.
For EACH slide:
- Create ONLY this one slide with PptxGenJS
- MANDATORY: Convert to image for review - You MUST convert slides to images so you can visually verify them:
soffice --headless --convert-to pdf presentation.pptx
pdftoppm -jpeg -r 150 -f 1 -l 1 presentation.pdf slide
- MANDATORY VISUAL REVIEW: You MUST carefully examine the rendered slide image before proceeding:
- Text overlap check: Scan every text element - do any labels, bullets, or titles collide with each other?
- Text cutoff check: Is any text truncated at boundaries? Are all words fully visible?
- Chart boundary check: Do charts stay within their containers? Are ALL axis labels fully visible?
- Quadrant integrity: Does content in one quadrant bleed into adjacent quadrants?
- If ANY overlap or cutoff is detected: Fix immediately using these strategies in order:
- First: Reduce font size (go down 1-2pt)
- Second: Shorten text (abbreviate, remove less critical info)
- Third: Adjust element positions or container sizes
- Re-render and verify again - do not proceed until all text fits cleanly
- Show slide image to user with download link
- STOP and wait for explicit user approval before creating the next slide. Do NOT proceed until user confirms.
YOU MUST CHECK FOR THESE SPECIFIC ISSUES ON EVERY PAGE:
- Table rows colliding with text below them
- Chart x-axis labels cut off at bottom
- Long bullet points wrapping into adjacent content
- Quadrant content bleeding into adjacent quadrants
- Title text overlapping with content below
- Legend text overlapping with chart elements
- Footer/source text colliding with main content
Slide Format Requirements
Information Density is Critical
The #1 goal is MAXIMUM information density. A busy executive should understand the entire company story in 30 seconds. Fill every quadrant to capacity.
Per quadrant targets:
- Company Overview: 6-8 bullets minimum (HQ, founded, employees, CEO/CFO, market cap, ticker, industry, key stat)
- Business & Positioning: 6-8 bullets (revenue drivers, products, market share %, competitive moat, customer count, geographic mix)
- Key Financials: Table with 8-10 rows OR chart + 4-5 key metrics (Revenue, EBITDA, margins, EPS, FCF, growth rates, valuation multiples)
- Fourth quadrant: 5-7 bullets (ownership %, recent M&A, developments, catalysts)
Information packing techniques:
- Combine related facts: "HQ: Austin, TX; Founded: 2003; 140K employees"
- Always include numbers: "$50B revenue" not "large revenue"
- Add context: "EBITDA margin: 25% (vs. 18% industry avg)"
- Include YoY changes: "Revenue: $125M (+28% YoY)"
- Use percentages: "Enterprise: 62% of revenue"
If a quadrant looks sparse, add more:
- Segment breakdowns with %
- Geographic revenue splits
- Customer concentration (top 10 = X%)
- Recent contract wins with $ values
- Guidance vs. consensus
- Insider ownership %
Line spacing - use single textbox per section:
def add_section(slide, x, y, w, header_text, bullets, header_size=10, bullet_size=8):
"""Header + bullets in single textbox with natural spacing"""
tb = slide.shapes.add_textbox(x, y, w, Inches(len(bullets) * 0.18 + 0.3))
tf = tb.text_frame
tf.word_wrap = True
# Header paragraph
p = tf.paragraphs[0]
p.text = header_text
p.font.bold = True
p.font.size = Pt(header_size)
p.font.color.rgb = RGBColor(0, 51, 102)
p.space_after = Pt(6) # Small gap after header
# Bullet paragraphs
for bullet in bullets:
p = tf.add_paragraph()
p.text = bullet
p.font.size = Pt(bullet_size)
p.space_after = Pt(3)
return tb
Key spacing principles:
- Put header + bullets in SAME textbox (no separate header textbox)
- Use
space_after = Pt(6) after header, Pt(3) between bullets
- Don't hardcode gaps - let paragraph spacing handle it naturally
- If content overflows, reduce font by 1pt rather than removing content
3-4 dense slides - use quadrants, columns, tables, charts
Bullets for ALL body text - NEVER paragraphs. Use ONE textbox per section with all bullets inside - do NOT create separate textboxes for each bullet point. Use PptxGenJS bullet formatting:
// CORRECT: Single textbox with bullet list - each array item becomes a bullet
// Position in top-left quadrant (Company Overview) - after header with accent bar
slide.addText(
[
{ text: 'Headquarters: Austin, Texas; Founded 2003', options: { bullet: { indent: 10 }, breakLine: true } },
{ text: 'Employees: 140,000+ globally across 6 continents', options: { bullet: { indent: 10 }, breakLine: true } },
{ text: 'CEO: Elon Musk; CFO: Vaibhav Taneja', options: { bullet: { indent: 10 }, breakLine: true } },
{ text: 'Market Cap: $850B (#6 globally by market cap)', options: { bullet: { indent: 10 }, breakLine: true } },
{ text: 'Segments: Automotive (85%), Energy (10%), Services (5%)', options: { bullet: { indent: 10 } } }
],
{ x: 0.45, y: 0.95, w: 4.5, h: 2.6, fontSize: 11, fontFace: 'Arial', valign: 'top', paraSpaceAfter: 6 }
);
// WRONG: Multiple separate textboxes for each bullet - causes alignment issues
// slide.addText('Headquarters: Austin', { x: 0.5, y: 1.0, bullet: true });
Bullet formatting tips:
bullet: { indent: 10 } - controls bullet indentation (smaller = tighter)
paraSpaceAfter: 6 - space after each paragraph in points
- Pack multiple related facts into each bullet (e.g., "HQ: Austin; Founded: 2003")
- Include specific numbers and percentages for information density
Title case for titles (not ALL CAPS), left-aligned
Consistent fonts everywhere including tables
Company's brand colors - YOU MUST research actual brand colors via web search before creating slides. Do not guess or assume colors.
Follow brand guidelines if provided
Visual Reference
See examples/Nike_Strip_Profile_Example.pptx for layout inspiration. Adapt colors to each company's brand.
First Page Layout
Must pass "30-second comprehension test" for a busy executive.
Slide Setup (CRITICAL)
Use 4:3 aspect ratio (standard IB pitch book format):
const pptx = new pptxgen();
pptx.layout = 'LAYOUT_4x3'; // 10" wide × 7.5" tall - MUST USE THIS
Slide Coordinate System
PptxGenJS uses inches. 4:3 slide = 10" wide × 7.5" tall.
- x: horizontal position from left edge (0 = left, 10 = right)
- y: vertical position from top edge (0 = top, 7.5 = bottom)
- Content must stay within bounds - leave 0.3" margin on all sides
First Page Positioning (in inches)
┌─────────────────────────────────────────────────────────────────┐
│ y=0.2 Title: Company Name (Ticker) │
├────────────────────────────┬────────────────────────────────────┤
│ y=0.6 Company Overview │ y=0.6 Business & Positioning │
│ x=0.3, w=4.7 │ x=5.0, w=4.7 │
│ h=3.0 │ h=3.0 │
├────────────────────────────┼────────────────────────────────────┤
│ y=3.7 Key Financials │ y=3.7 Stock/Recent Developments │
│ x=0.3, w=4.7 │ x=5.0, w=4.7 │
│ h=3.5 │ h=3.5 │
└────────────────────────────┴────────────────────────────────────┘
y=7.5
Title Section (y=0.2)
Company Name (Ticker) - Example: Tesla, Inc. (TSLA)
slide.addText('Tesla, Inc. (TSLA)', { x: 0.3, y: 0.2, w: 9.4, h: 0.35, fontSize: 18, bold: true });
4-Quadrant Layout (y=0.6 to y=7.2)
| Quadrant |
Position |
Content |
| 1 |
x=0.3, y=0.6, w=4.7, h=3.0 |
Company Overview: HQ, founded, key stats, business summary (4-5 bullets) |
| 2 |
x=5.0, y=0.6, w=4.7, h=3.0 |
Business & Positioning: revenue drivers, products/services, competitive position, growth drivers (4-5 bullets) |
| 3 |
x=0.3, y=3.7, w=4.7, h=3.5 |
Key Financials: Revenue, EBITDA, margins, EPS, FCF + Valuation (Mkt Cap, EV, multiples) — table OR chart, not both |
| 4 |
x=5.0, y=3.7, w=4.7, h=3.5 |
For public companies: 1Y stock price chart + top shareholders. For private: Recent developments or Ownership/M&A history |
Font Sizes - USE THESE EXACT VALUES
| Element |
Size |
Notes |
| Slide title |
24pt |
Bold, company brand color |
| Quadrant headers |
14pt |
Bold, with accent bar |
| Body/bullet text |
11pt |
Regular weight |
| Table text |
10pt |
Use 9pt for dense tables |
| Chart labels |
9pt |
Keep labels short |
| Source/footer |
8pt |
Bottom of slide |
CRITICAL: If text overflows, REDUCE font size by 1pt and re-render.
Visual Accents (REQUIRED)
Each quadrant header MUST have a colored accent bar to the left:
// Add accent bar for quadrant header
slide.addShape(pptx.shapes.RECTANGLE, {
x: 0.3, y: 0.6, w: 0.08, h: 0.25,
fill: { color: 'E31937' } // Use company brand color
});
slide.addText('Company Overview', {
x: 0.45, y: 0.6, w: 4.5, h: 0.3, fontSize: 14, bold: true, fontFace: 'Arial'
});
Visual elements to include:
- Accent bars next to all section headers (brand color)
- Thin horizontal divider line between top and bottom quadrants
- Company logo in top-right corner if available
- Subtle gridlines in tables (light gray #CCCCCC)
First Page Formatting
- Font: Arial (or as specified by user/brand guidelines)
- Quadrant titles: Title Case (not ALL CAPS), e.g., "Company Overview" not "COMPANY OVERVIEW"
- Bullets: Bold key terms at start, e.g., "Market Position: Leading global manufacturer..."
- White background only — no boxes, fills, or shading
- Section headers: bold text, follow brand guidelines for styling
- All quadrants equally sized and aligned
Subsequent Pages: Free-Form Layouts
- Two-column (40/60 or 50/50), full-slide charts, or sidebar layouts
- Each page elaborates on first page content
- Maintain consistent typography and color scheme
- Suggested flow: Products/Market → Financial Analysis → Leadership
Charts (Multi-Slide Profiles)
For multi-slide profiles: Include 2-3 actual PptxGenJS charts. Never use placeholder divs or static images.
For single-slide profiles: Use tables for financials (more space-efficient). Only add a chart if it replaces the table, not in addition to it.
| Data Type |
Chart Type |
| Revenue trends |
Line or column (multi-year) |
| Geographic breakdown |
Horizontal bar |
| Product mix |
Pie with percentages |
| Financial comparison |
Column |
| Stock price (1Y daily) |
Line |
Chart Code Examples
Horizontal Bar (fits in bottom-right quadrant for 4:3 slide):
slide.addChart(pptx.charts.BAR, [{
name: 'FY2024 Revenue by Region',
labels: ['North America', 'EMEA', 'China', 'APLA'],
values: [21.4, 13.6, 7.6, 6.7]
}], {
x: 5.0, y: 4.1, w: 4.5, h: 3.0, // Fits in bottom-right quadrant (4:3)
barDir: 'bar', chartColors: ['FF6B35'], showValue: true,
dataLabelFontSize: 10, catAxisLabelFontSize: 10, valAxisLabelFontSize: 10,
dataLabelFormatCode: '$#,##0.0B',
title: 'Revenue by Geography', titleFontSize: 12, titleBold: true
});
Pie Chart (fits in bottom-right quadrant for 4:3 slide):
slide.addChart(pptx.charts.PIE, [{
name: 'Product Mix',
labels: ['Footwear', 'Apparel', 'Equipment'],
values: [68, 29, 3]
}], {
x: 5.0, y: 4.1, w: 4.5, h: 3.0, // Fits in bottom-right quadrant (4:3)
showPercent: true, showLegend: true, legendPos: 'r',
dataLabelFontSize: 10, legendFontSize: 10,
chartColors: ['FF6B35', '2C2C2C', '4A4A4A'],
title: 'Revenue Mix FY24', titleFontSize: 12, titleBold: true
});
Line Chart (full width for subsequent slides):
slide.addChart(pptx.charts.LINE, [{
name: 'Revenue ($B)',
labels: ['FY21', 'FY22', 'FY23', 'FY24', 'FY25E'],
values: [44.5, 46.7, 48.5, 51.4, 54.2]
}], {
x: 0.3, y: 1.2, w: 9.4, h: 5.5, // Full width for 4:3 slide
chartColors: ['FF6B35'], showValue: true, lineSmooth: true,
dataLabelFontSize: 11, catAxisLabelFontSize: 11, valAxisLabelFontSize: 11,
title: 'Revenue Trend & Forecast', titleFontSize: 14, titleBold: true
});
Financial Data Formatting
Always use native PptxGenJS tables or charts - NEVER plain text prose or HTML tables.
Use slide.addTable() for financial data (fits in bottom-left quadrant for 4:3 slide):
// Add header with accent bar first
slide.addShape(pptx.shapes.RECTANGLE, {
x: 0.3, y: 3.7, w: 0.08, h: 0.25, fill: { color: 'E31937' }
});
slide.addText('Key Financials & Valuation', {
x: 0.45, y: 3.7, w: 4.5, h: 0.3, fontSize: 14, bold: true, fontFace: 'Arial'
});
// Financial data table
slide.addTable([
[{ text: 'Metric', options: { bold: true, fill: '003366', color: 'FFFFFF' } },
{ text: 'FY24', options: { bold: true, fill: '003366', color: 'FFFFFF' } },
{ text: 'FY25E', options: { bold: true, fill: '003366', color: 'FFFFFF' } }],
['Revenue', '$51.4B', '$54.2B'],
['YoY Growth', '+6.0%', '+5.5%'],
['EBITDA', '$8.9B', '$9.5B'],
['EBITDA Margin', '17.3%', '17.5%'],
['EPS', '$3.42', '$3.75'],
['Market Cap', '$185B', '—'],
['EV/EBITDA', '12.5x', '11.7x']
], {
x: 0.45, y: 4.1, w: 4.3, h: 3.0, // Below header in bottom-left quadrant
fontFace: 'Arial', fontSize: 10,
border: { pt: 0.5, color: 'CCCCCC' },
valign: 'middle',
colW: [1.8, 1.25, 1.25] // Column widths
});
❌ Incorrect: Plain text like Note: FY2024 revenue growth +1.0%, Net Income $5.1B...
❌ Incorrect: HTML tables that don't convert properly to PowerPoint
For projections, use Bear/Base/Bull case scenarios in structured tables.
Quality Checklist
First Page
All Slides
Note: Reference the PPTX skill for PowerPoint file creation.
Hermes Profile Notes
This skill was packaged from pi-financial-services source path plugins/vertical-plugins/investment-banking/skills/strip-profile for the Hermes financial-services profile. Use institutional data connectors first when available, cite sources, and stage outputs for qualified human review.
Common Pitfalls
- Do not present drafts as investment, legal, tax, or accounting advice.
- Do not use web search as the primary source when an institutional MCP/data connector is available.
- Do not execute transactions, contact clients, post to a ledger, or approve onboarding. Stage outputs for review.
Verification Checklist
1---2name: strip-profile3description: Use when financial-services work requires creates professional investment banking strip profiles (company profiles) for pitch books, deal materials, and client presentations. Generates 1-4 information-dense slides with quadrant layouts, charts, and tables..4license: MIT5---67## Workflow89### 1. Clarify Requirements10- **Ask the user**: Single-slide or multi-slide (3-4 slides)?11- **Ask the user**: Any specific focus areas or topics to emphasize?12- **Only after user confirms**, proceed to research1314### 2. Research & Planning15**Data Sources:**16- **Primary**: Company filings (BamSEC, SEC EDGAR - "Item 1. Business", MD&A), investor presentations, corporate website17- **Market data**: Bloomberg, FactSet, CapIQ (price, shares, market cap, net debt, EV, ownership)18- **Estimates**: FactSet/CapIQ consensus for NTM revenue, EBITDA, EPS19- **News**: Press releases from last 90 days, M&A activity, guidance changes2021**Required Metrics:**22- **Financials**: Revenue, EBITDA, margins (%), EPS, FCF for ±3 years23- **Valuation**: Market Cap, EV, EV/Revenue, EV/EBITDA, P/E multiples24- **Growth**: YoY growth rates (%)25- **Ownership**: Top 5 shareholders with % ownership26- **Segments**: Product mix and/or geographic mix (% breakdown)2728**Normalization:**29- Convert all amounts to consistent currency30- Scale consistently ($mm or $bn throughout, not mixed)3132**Before Building:**33- Print outline to chat with 4-5 bullet points per item (actual numbers, no placeholders)34- Print style choices: fonts, colors (hex codes), chart types for each data set35- Get user alignment: "Does this outline and visual strategy align with your vision?"3637### 3. Slide-by-Slide Creation38**CRITICAL: You MUST create ONE slide at a time and get user approval before proceeding to the next slide.**3940**For EACH slide:**411. Create ONLY this one slide with PptxGenJS422. **MANDATORY: Convert to image for review** - You MUST convert slides to images so you can visually verify them:43 ```bash44 soffice --headless --convert-to pdf presentation.pptx45 pdftoppm -jpeg -r 150 -f 1 -l 1 presentation.pdf slide46 ```473. **MANDATORY VISUAL REVIEW**: You MUST carefully examine the rendered slide image before proceeding:48 - **Text overlap check**: Scan every text element - do any labels, bullets, or titles collide with each other?49 - **Text cutoff check**: Is any text truncated at boundaries? Are all words fully visible?50 - **Chart boundary check**: Do charts stay within their containers? Are ALL axis labels fully visible?51 - **Quadrant integrity**: Does content in one quadrant bleed into adjacent quadrants?524. **If ANY overlap or cutoff is detected**: Fix immediately using these strategies in order:53 - **First**: Reduce font size (go down 1-2pt)54 - **Second**: Shorten text (abbreviate, remove less critical info)55 - **Third**: Adjust element positions or container sizes56 - **Re-render and verify again** - do not proceed until all text fits cleanly575. Show slide image to user with download link586. **STOP and wait for explicit user approval** before creating the next slide. Do NOT proceed until user confirms.5960**YOU MUST CHECK FOR THESE SPECIFIC ISSUES ON EVERY PAGE:**61- Table rows colliding with text below them62- Chart x-axis labels cut off at bottom63- Long bullet points wrapping into adjacent content64- Quadrant content bleeding into adjacent quadrants65- Title text overlapping with content below66- Legend text overlapping with chart elements67- Footer/source text colliding with main content6869---7071## Slide Format Requirements7273### Information Density is Critical7475**The #1 goal is MAXIMUM information density.** A busy executive should understand the entire company story in 30 seconds. Fill every quadrant to capacity.7677**Per quadrant targets:**78- **Company Overview**: 6-8 bullets minimum (HQ, founded, employees, CEO/CFO, market cap, ticker, industry, key stat)79- **Business & Positioning**: 6-8 bullets (revenue drivers, products, market share %, competitive moat, customer count, geographic mix)80- **Key Financials**: Table with 8-10 rows OR chart + 4-5 key metrics (Revenue, EBITDA, margins, EPS, FCF, growth rates, valuation multiples)81- **Fourth quadrant**: 5-7 bullets (ownership %, recent M&A, developments, catalysts)8283**Information packing techniques:**84- Combine related facts: "HQ: Austin, TX; Founded: 2003; 140K employees"85- Always include numbers: "$50B revenue" not "large revenue"86- Add context: "EBITDA margin: 25% (vs. 18% industry avg)"87- Include YoY changes: "Revenue: $125M (+28% YoY)"88- Use percentages: "Enterprise: 62% of revenue"8990**If a quadrant looks sparse, add more:**91- Segment breakdowns with %92- Geographic revenue splits93- Customer concentration (top 10 = X%)94- Recent contract wins with $ values95- Guidance vs. consensus96- Insider ownership %9798**Line spacing - use single textbox per section:**99```python100def add_section(slide, x, y, w, header_text, bullets, header_size=10, bullet_size=8):101 """Header + bullets in single textbox with natural spacing"""102 tb = slide.shapes.add_textbox(x, y, w, Inches(len(bullets) * 0.18 + 0.3))103 tf = tb.text_frame104 tf.word_wrap = True105106 # Header paragraph107 p = tf.paragraphs[0]108 p.text = header_text109 p.font.bold = True110 p.font.size = Pt(header_size)111 p.font.color.rgb = RGBColor(0, 51, 102)112 p.space_after = Pt(6) # Small gap after header113114 # Bullet paragraphs115 for bullet in bullets:116 p = tf.add_paragraph()117 p.text = bullet118 p.font.size = Pt(bullet_size)119 p.space_after = Pt(3)120 return tb121```122123**Key spacing principles:**124- Put header + bullets in SAME textbox (no separate header textbox)125- Use `space_after = Pt(6)` after header, `Pt(3)` between bullets126- Don't hardcode gaps - let paragraph spacing handle it naturally127- If content overflows, reduce font by 1pt rather than removing content128129---130131- **3-4 dense slides** - use quadrants, columns, tables, charts132- **Bullets for ALL body text** - NEVER paragraphs. **Use ONE textbox per section with all bullets inside** - do NOT create separate textboxes for each bullet point. Use PptxGenJS bullet formatting:133 ```javascript134 // CORRECT: Single textbox with bullet list - each array item becomes a bullet135 // Position in top-left quadrant (Company Overview) - after header with accent bar136 slide.addText(137 [138 { text: 'Headquarters: Austin, Texas; Founded 2003', options: { bullet: { indent: 10 }, breakLine: true } },139 { text: 'Employees: 140,000+ globally across 6 continents', options: { bullet: { indent: 10 }, breakLine: true } },140 { text: 'CEO: Elon Musk; CFO: Vaibhav Taneja', options: { bullet: { indent: 10 }, breakLine: true } },141 { text: 'Market Cap: $850B (#6 globally by market cap)', options: { bullet: { indent: 10 }, breakLine: true } },142 { text: 'Segments: Automotive (85%), Energy (10%), Services (5%)', options: { bullet: { indent: 10 } } }143 ],144 { x: 0.45, y: 0.95, w: 4.5, h: 2.6, fontSize: 11, fontFace: 'Arial', valign: 'top', paraSpaceAfter: 6 }145 );146147 // WRONG: Multiple separate textboxes for each bullet - causes alignment issues148 // slide.addText('Headquarters: Austin', { x: 0.5, y: 1.0, bullet: true });149 ```150151 **Bullet formatting tips:**152 - `bullet: { indent: 10 }` - controls bullet indentation (smaller = tighter)153 - `paraSpaceAfter: 6` - space after each paragraph in points154 - Pack multiple related facts into each bullet (e.g., "HQ: Austin; Founded: 2003")155 - Include specific numbers and percentages for information density156- **Title case** for titles (not ALL CAPS), left-aligned157- **Consistent fonts** everywhere including tables158- **Company's brand colors** - YOU MUST research actual brand colors via web search before creating slides. Do not guess or assume colors.159- **Follow brand guidelines if provided**160161### Visual Reference162See `examples/Nike_Strip_Profile_Example.pptx` for layout inspiration. Adapt colors to each company's brand.163164---165166## First Page Layout167168Must pass "30-second comprehension test" for a busy executive.169170### Slide Setup (CRITICAL)171**Use 4:3 aspect ratio** (standard IB pitch book format):172```javascript173const pptx = new pptxgen();174pptx.layout = 'LAYOUT_4x3'; // 10" wide × 7.5" tall - MUST USE THIS175```176177### Slide Coordinate System178PptxGenJS uses inches. 4:3 slide = **10" wide × 7.5" tall**.179- **x**: horizontal position from left edge (0 = left, 10 = right)180- **y**: vertical position from top edge (0 = top, 7.5 = bottom)181- **Content must stay within bounds** - leave 0.3" margin on all sides182183### First Page Positioning (in inches)184```185┌─────────────────────────────────────────────────────────────────┐186│ y=0.2 Title: Company Name (Ticker) │187├────────────────────────────┬────────────────────────────────────┤188│ y=0.6 Company Overview │ y=0.6 Business & Positioning │189│ x=0.3, w=4.7 │ x=5.0, w=4.7 │190│ h=3.0 │ h=3.0 │191├────────────────────────────┼────────────────────────────────────┤192│ y=3.7 Key Financials │ y=3.7 Stock/Recent Developments │193│ x=0.3, w=4.7 │ x=5.0, w=4.7 │194│ h=3.5 │ h=3.5 │195└────────────────────────────┴────────────────────────────────────┘196 y=7.5197```198199### Title Section (y=0.2)200**Company Name (Ticker)** - Example: `Tesla, Inc. (TSLA)`201```javascript202slide.addText('Tesla, Inc. (TSLA)', { x: 0.3, y: 0.2, w: 9.4, h: 0.35, fontSize: 18, bold: true });203```204205### 4-Quadrant Layout (y=0.6 to y=7.2)206207| Quadrant | Position | Content |208|----------|----------|---------|209| **1** | x=0.3, y=0.6, w=4.7, h=3.0 | **Company Overview**: HQ, founded, key stats, business summary (4-5 bullets) |210| **2** | x=5.0, y=0.6, w=4.7, h=3.0 | **Business & Positioning**: revenue drivers, products/services, competitive position, growth drivers (4-5 bullets) |211| **3** | x=0.3, y=3.7, w=4.7, h=3.5 | **Key Financials**: Revenue, EBITDA, margins, EPS, FCF + Valuation (Mkt Cap, EV, multiples) — **table OR chart, not both** |212| **4** | x=5.0, y=3.7, w=4.7, h=3.5 | **For public companies**: 1Y stock price chart + top shareholders. **For private**: Recent developments or Ownership/M&A history |213214### Font Sizes - USE THESE EXACT VALUES215| Element | Size | Notes |216|---------|------|-------|217| Slide title | 24pt | Bold, company brand color |218| Quadrant headers | 14pt | Bold, with accent bar |219| Body/bullet text | 11pt | Regular weight |220| Table text | 10pt | Use 9pt for dense tables |221| Chart labels | 9pt | Keep labels short |222| Source/footer | 8pt | Bottom of slide |223224**CRITICAL: If text overflows, REDUCE font size by 1pt and re-render.**225226### Visual Accents (REQUIRED)227Each quadrant header MUST have a colored accent bar to the left:228```javascript229// Add accent bar for quadrant header230slide.addShape(pptx.shapes.RECTANGLE, {231 x: 0.3, y: 0.6, w: 0.08, h: 0.25,232 fill: { color: 'E31937' } // Use company brand color233});234slide.addText('Company Overview', {235 x: 0.45, y: 0.6, w: 4.5, h: 0.3, fontSize: 14, bold: true, fontFace: 'Arial'236});237```238239**Visual elements to include:**240- Accent bars next to all section headers (brand color)241- Thin horizontal divider line between top and bottom quadrants242- Company logo in top-right corner if available243- Subtle gridlines in tables (light gray #CCCCCC)244245### First Page Formatting246- **Font: Arial** (or as specified by user/brand guidelines)247- **Quadrant titles**: Title Case (not ALL CAPS), e.g., "Company Overview" not "COMPANY OVERVIEW"248- **Bullets**: Bold key terms at start, e.g., "**Market Position:** Leading global manufacturer..."249- White background only — no boxes, fills, or shading250- Section headers: bold text, follow brand guidelines for styling251- All quadrants equally sized and aligned252253---254255## Subsequent Pages: Free-Form Layouts256257- Two-column (40/60 or 50/50), full-slide charts, or sidebar layouts258- Each page elaborates on first page content259- Maintain consistent typography and color scheme260- Suggested flow: Products/Market → Financial Analysis → Leadership261262---263264## Charts (Multi-Slide Profiles)265266**For multi-slide profiles**: Include 2-3 actual PptxGenJS charts. Never use placeholder divs or static images.267268**For single-slide profiles**: Use tables for financials (more space-efficient). Only add a chart if it replaces the table, not in addition to it.269270| Data Type | Chart Type |271|-----------|------------|272| Revenue trends | Line or column (multi-year) |273| Geographic breakdown | Horizontal bar |274| Product mix | Pie with percentages |275| Financial comparison | Column |276| Stock price (1Y daily) | Line |277278### Chart Code Examples279280**Horizontal Bar (fits in bottom-right quadrant for 4:3 slide):**281```javascript282slide.addChart(pptx.charts.BAR, [{283 name: 'FY2024 Revenue by Region',284 labels: ['North America', 'EMEA', 'China', 'APLA'],285 values: [21.4, 13.6, 7.6, 6.7]286}], {287 x: 5.0, y: 4.1, w: 4.5, h: 3.0, // Fits in bottom-right quadrant (4:3)288 barDir: 'bar', chartColors: ['FF6B35'], showValue: true,289 dataLabelFontSize: 10, catAxisLabelFontSize: 10, valAxisLabelFontSize: 10,290 dataLabelFormatCode: '$#,##0.0B',291 title: 'Revenue by Geography', titleFontSize: 12, titleBold: true292});293```294295**Pie Chart (fits in bottom-right quadrant for 4:3 slide):**296```javascript297slide.addChart(pptx.charts.PIE, [{298 name: 'Product Mix',299 labels: ['Footwear', 'Apparel', 'Equipment'],300 values: [68, 29, 3]301}], {302 x: 5.0, y: 4.1, w: 4.5, h: 3.0, // Fits in bottom-right quadrant (4:3)303 showPercent: true, showLegend: true, legendPos: 'r',304 dataLabelFontSize: 10, legendFontSize: 10,305 chartColors: ['FF6B35', '2C2C2C', '4A4A4A'],306 title: 'Revenue Mix FY24', titleFontSize: 12, titleBold: true307});308```309310**Line Chart (full width for subsequent slides):**311```javascript312slide.addChart(pptx.charts.LINE, [{313 name: 'Revenue ($B)',314 labels: ['FY21', 'FY22', 'FY23', 'FY24', 'FY25E'],315 values: [44.5, 46.7, 48.5, 51.4, 54.2]316}], {317 x: 0.3, y: 1.2, w: 9.4, h: 5.5, // Full width for 4:3 slide318 chartColors: ['FF6B35'], showValue: true, lineSmooth: true,319 dataLabelFontSize: 11, catAxisLabelFontSize: 11, valAxisLabelFontSize: 11,320 title: 'Revenue Trend & Forecast', titleFontSize: 14, titleBold: true321});322```323324---325326## Financial Data Formatting327328**Always use native PptxGenJS tables or charts - NEVER plain text prose or HTML tables.**329330Use `slide.addTable()` for financial data (fits in bottom-left quadrant for 4:3 slide):331```javascript332// Add header with accent bar first333slide.addShape(pptx.shapes.RECTANGLE, {334 x: 0.3, y: 3.7, w: 0.08, h: 0.25, fill: { color: 'E31937' }335});336slide.addText('Key Financials & Valuation', {337 x: 0.45, y: 3.7, w: 4.5, h: 0.3, fontSize: 14, bold: true, fontFace: 'Arial'338});339340// Financial data table341slide.addTable([342 [{ text: 'Metric', options: { bold: true, fill: '003366', color: 'FFFFFF' } },343 { text: 'FY24', options: { bold: true, fill: '003366', color: 'FFFFFF' } },344 { text: 'FY25E', options: { bold: true, fill: '003366', color: 'FFFFFF' } }],345 ['Revenue', '$51.4B', '$54.2B'],346 ['YoY Growth', '+6.0%', '+5.5%'],347 ['EBITDA', '$8.9B', '$9.5B'],348 ['EBITDA Margin', '17.3%', '17.5%'],349 ['EPS', '$3.42', '$3.75'],350 ['Market Cap', '$185B', '—'],351 ['EV/EBITDA', '12.5x', '11.7x']352], {353 x: 0.45, y: 4.1, w: 4.3, h: 3.0, // Below header in bottom-left quadrant354 fontFace: 'Arial', fontSize: 10,355 border: { pt: 0.5, color: 'CCCCCC' },356 valign: 'middle',357 colW: [1.8, 1.25, 1.25] // Column widths358});359```360361❌ **Incorrect:** Plain text like `Note: FY2024 revenue growth +1.0%, Net Income $5.1B...`362❌ **Incorrect:** HTML tables that don't convert properly to PowerPoint363364For projections, use Bear/Base/Bull case scenarios in structured tables.365366---367368## Quality Checklist369370### First Page371- [ ] Title section with company name, ticker, industry372- [ ] Exactly 4 equal quadrants below title373- [ ] All bullets, no paragraphs, 1 line max each374- [ ] Financials in table or chart (not both)375376### All Slides377- [ ] No text overflow or cutoff378- [ ] Consistent fonts and colors throughout379- [ ] Charts render correctly380- [ ] No placeholder text - all actual data381- [ ] Consistent scaling ($mm or $bn, not mixed)382- [ ] Sources cited383- [ ] Investment banking quality (GS/MS/JPM standard)384385**Note:** Reference the **PPTX skill** for PowerPoint file creation.386387## Hermes Profile Notes388This skill was packaged from `pi-financial-services` source path `plugins/vertical-plugins/investment-banking/skills/strip-profile` for the Hermes financial-services profile. Use institutional data connectors first when available, cite sources, and stage outputs for qualified human review.389390391## Common Pitfalls3921. Do not present drafts as investment, legal, tax, or accounting advice.3932. Do not use web search as the primary source when an institutional MCP/data connector is available.3943. Do not execute transactions, contact clients, post to a ledger, or approve onboarding. Stage outputs for review.395396397## Verification Checklist398- [ ] Inputs, assumptions, dates, and currencies are explicit.399- [ ] Numbers tie across tables, models, decks, and memos.400- [ ] Sources are cited and institutional data is preferred where available.401- [ ] Output is labeled draft / for human review where appropriate.