Studio Founder

Batch-Editing 50 Slides Across 3 Decks β€” In One Command

50 slides in 2 minDesign & Content4 min read

Batch-Editing 50 Slides Across 3 Decks β€” In One Command

Key Takeaway

We rebranded 50 slides across 3 separate PowerPoint decks in 2 minutes β€” logos, colors, fonts, footers β€” with a single agent command.

The Problem

Rebrands are hell. Not the creative part β€” the mechanical part.

When you change a logo, a primary color, or a font, every existing presentation needs updating. At PyratzLabs, we had 3 active decks at the time of our last brand refresh: the investor deck (20 slides), the product overview (18 slides), and the hiring deck (12 slides). That's 50 slides.

Each slide needs: logo swapped, primary color updated in backgrounds and text, font changed across every text box, footer text updated, and visual consistency verified.

A designer doing this manually spends 4-6 hours. They open each deck, go slide by slide, click each element, change the property, check it looks right, move on. It's mind-numbing work that no designer should spend time on. But if you skip it, you present with a deck that has the old logo on slide 14 and nobody catches it until the investor points it out.

The Solution

One Mr.Chief agent command that reads all three PPTX files, applies branding changes across every slide, and outputs updated decks β€” consistent, complete, no slide left behind.

The Process (with code/config snippets)

The instruction:

View details
Update branding across these 3 decks:
- investor-deck-v4.pptx
- product-overview-q1.pptx
- hiring-deck-2026.pptx

Changes:
1. Replace logo: old-logo.png β†’ new-logo.png (maintain position/size)
2. Primary color: #3B82F6 β†’ #4F46E5 (all fills, text, shapes)
3. Font: Helvetica β†’ Inter (all text boxes)
4. Footer: "PyratzLabs Β© 2025" β†’ "PyratzLabs Β© 2026"
5. Merge all 3 into: master-deck-2026.pptx (with section dividers)

Also: extract all slide data into slides-data.json

The agent processes each deck:

pythonShow code
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
import json

OLD_COLOR = RGBColor(0x3B, 0x82, 0xF6)
NEW_COLOR = RGBColor(0x4F, 0x46, 0xE5)
OLD_FONT = 'Helvetica'
NEW_FONT = 'Inter'

def rebrand_deck(path):
    prs = Presentation(path)
    changes = 0

    for slide in prs.slides:
        for shape in slide.shapes:
            # Font replacement
            if shape.has_text_frame:
                for para in shape.text_frame.paragraphs:
                    for run in para.runs:
                        if run.font.name == OLD_FONT:
                            run.font.name = NEW_FONT
                            changes += 1
                        # Color replacement in text
                        if run.font.color and run.font.color.rgb == OLD_COLOR:
                            run.font.color.rgb = NEW_COLOR
                            changes += 1

            # Shape fill color replacement
            if hasattr(shape, 'fill'):
                fill = shape.fill
                if fill.type is not None:
                    try:
                        if fill.fore_color.rgb == OLD_COLOR:
                            fill.fore_color.rgb = NEW_COLOR
                            changes += 1
                    except: pass

            # Logo replacement
            if shape.shape_type == 13:  # Picture
                if 'old-logo' in shape.image.filename:
                    # Replace image while maintaining position
                    left, top = shape.left, shape.top
                    width, height = shape.width, shape.height
                    slide.shapes._spTree.remove(shape._element)
                    slide.shapes.add_picture(
                        'new-logo.png', left, top, width, height
                    )
                    changes += 1

    return prs, changes

# Process all decks
decks = [
    'investor-deck-v4.pptx',
    'product-overview-q1.pptx',
    'hiring-deck-2026.pptx'
]

total = 0
for deck_path in decks:
    prs, changes = rebrand_deck(deck_path)
    prs.save(f'rebranded-{deck_path}')
    total += changes
    print(f"{deck_path}: {changes} changes applied")

print(f"\nTotal changes: {total}")

The JSON extraction creates a structured inventory of every slide:

jsonShow code
{
  "decks": [
    {
      "file": "investor-deck-v4.pptx",
      "slides": [
        {
          "index": 1,
          "title": "Q1 2026 LP Update",
          "text_content": ["PyratzLabs Portfolio Review"],
          "has_chart": false,
          "has_image": true,
          "image_count": 1
        }
      ]
    }
  ],
  "totals": { "slides": 50, "charts": 8, "images": 23, "text_boxes": 187 }
}

The Results

MetricDesigner (Manual)Agent
Time4-6 hours2 minutes
Slides processed5050
Changes applied~120147 (caught more)
Missed elements3-5 typical0
Cost$400-600$0
Merge into master+1 hourIncluded
JSON extractionNot possibleIncluded

The agent found 147 changes. A designer doing this manually would catch ~120 and miss a few β€” a shape fill buried in a grouped object, a footer on a slide master, a chart series color that uses the old blue. The agent doesn't get bored on slide 37. It checks everything.

Try It Yourself

Put your PPTX files in a directory. Tell the agent what to change. Be explicit: old value β†’ new value for colors, fonts, and text.

The merge feature is a bonus β€” combining multiple decks into one master with section dividers saves another hour of manual work.

Stop paying designers to do find-and-replace. That's not design. That's data entry.


Rebranding should be a decision, not a project. We made it a command.

PowerPointbatch editingpresentationsautomation

Want results like these?

Start free with your own AI team. No credit card required.

Batch-Editing 50 Slides Across 3 Decks β€” In One Command β€” Mr.Chief