EditPPT: Structured Execution and Evaluation for Reliable Slide Editing
Organizations: KAIST AI
Abstract
Reliable slide editing requires precise modifications to intended objects while preserving the rest of the presentation. We argue that slide editing is a problem of structured, constrained modification rather than open-ended code generation. Despite the complexity of real presentations, editing requests can largely be decomposed into the objects to change, the operations to apply, and the state to preserve. This perspective guides both evaluation and execution. For evaluation, we introduce DeckEdit-Bench, 183 editing tasks on 28 human-authored decks whose target and preserved objects are annotated at the shape level, so that intended and unintended changes are scored mostly by deterministic rules. For execution, we present EditPPT, a multi-agent framework that resolves targets before editing, restricts each specialist to a subset of 37 predefined tools, and validates each edit for instruction fulfillment and preservation, correcting or rolling back failed ones. Across five backbone models, EditPPT reaches 66.7-74.9% Task Success while keeping Preservation above 97%. Even with an open 27B model and no task-specific fine-tuning, it approaches Claude Code with Sonnet 5 in Task Success while better preserving the original deck. These results suggest that constraining how edits are executed, not only model scale, makes slide editing more reliable.
Figures & tables
| Source decks | Per task | Ground truth & scoring | ||||||||||||
| Benchmark | PPTX | Decks / slides | Sl./deck (med.) | Sh./sl. (mean/med.) | Pic./sl. (% sl.) | Eq. decks | Multiling. slides | Tgt sl. (mean/med.) | 10 / 20 sl. | Cand. (mean/med.) | 100 cand. | Obj. | Pres. | Scoring |
| PPTBench | ✗ | – | – | – | – | – | – | 1 | 0 / 0% | – | – | R | ||
| DECKBench | ✗ | – | – | – | – | – | – | – | – | – | – | ✗ | ✗ | S, L |
| TSBench | ✓ | 56 / 72 | 1 | 4.3 / 3.5 | 0.72 (54%) | 0% | 1.4% | 4 | 0 / 0% | 17 | 0% | ✗ | ✗ | V |
| PPTArena | ✓ | 100 / 999 | 5 | 9.3 / 4 | 1.10 (46%) | 5% | 1.2% | 6.6 / 4 | 22 / 9% | 55 / 17 | 18% | ✗ | L, V | |
| PPT-Eval | ✓ | 12 / 404 | 30.5 | 13.1 / 4 | 0.70 (30%) | 0% | 0% | 2.9 / 1 † | 4 / 4% | 34 / 4 † | 5% | R, V | ||
| System | Model | Modified | TS | Slide | IF | Over-edit | Pres | Cost/task | Time/task | In / Out tok |
| PPTPilot | gpt-6-sol | 147/183 | 51.4 | 69.1 | 83.3 | 0.68 | 98.3 | $0.298 | 1.7 min | 148k / 4.3k |
| gpt-6-luna | 137/183 | 43.2 | 59.0 | 73.6 | 0.68 | 96.3 | $0.017 | 1.6 min | 153k / 5.0k | |
| Qwen3.8-27B | 150/183 | 50.3 | 47.3 | 53.2 | 0.42 | 93.1 | – | 10.2 min | 122k / 17.8k | |
| Talk to Your Slides | gpt-6-sol | 176/183 | 35.5 | 64.8 | 76.6 | 6.23 | 93.6 | $0.625 | 7.4 min | 105k / 41.7k |
| gpt-6-luna | 169/183 | 29.0 | 41.3 | 49.3 | 5.63 | 95.5 | $0.027 | 6.7 min | 84k / 36.5k | |
| Claude Code + PPTX skill | Sonnet 5 | 183/183 | 73.8 | 81.5 | 97.8 | 0.88 | 93.9 | $0.387 | 1.6 min | 577k / 11.0k |
| System | Backbone | Short | Medium | Long |
| PPTPilot | gpt-6-sol | 55.6 | 58.0 | 35.4 |
| gpt-6-luna | 40.7 | 50.6 | 33.3 | |
| Qwen3.8-27B | 61.1 | 59.3 | 22.9 | |
| TTYS | gpt-6-sol | 50.0 | 33.3 | 22.9 |
| gpt-6-luna | 44.4 | 27.2 | 14.6 | |
| Claude Code | Sonnet 5 | 74.1 | 84.0 | 56.2 |
| Variant | TS | Slide | IF | Over-edit | Pres | Cost/task |
| All 183 tasks | ||||||
| Full system | 73.8 | 88.5 | 95.5 | 0.54 | 98.9 | $0.036 |
| Single agent | 61.7 | 82.4 | 93.3 | 5.59 | 98.7 | $0.048 |
| No validation | 70.5 | 86.3 | 94.8 | 0.48 | 96.8 | – |
| 57 tasks in which the loop triggered a retry | ||||||
| Full system | 38.6 | 79.3 | 94.7 | 0.81 | 97.7 | $0.092 |
Appendix figures & tables35 assets
Supplementary material from the paper’s appendix.
Appendix
| Input representation | Tokens | Est. cost | Efficiency |
| EditPPT parser | 2.14M | $4.27 | 3.63 |
| Raw XML, slide part only | 7.61M | $15.22 | 1.02 |
| Raw XML, full scope | 7.74M | $15.49 | 1.00 |
| Code route | XML route | |||
| Backbone | 30k | 30k | 30k | 30k |
| gpt-6-sol | 31/45 | 31/63 | 28/41 | 4/34 |
| gpt-6-luna | 23/44 | 32/64 | 22/42 | 2/33 |
| Qwen3.8-27B | 27/45 | 28/65 | 31/41 | 6/30 |
| Specialist | Tools | Operations |
| Text and style | 7 | Character formatting, inserting, deleting, replacing, and rewriting text, paragraph alignment, bullets |
| Table | 3 | Cell text style, cell text replacement, table layout and borders |
| Chart | 6 | Categories, series, chart structure, axes, colors, a new chart from data |
| Shape layout | 15 | Moving and resizing, aligning and distributing, reordering items into slots, creating text boxes, placeholders, and shapes, deleting, duplicating, and copying shapes, visual styles and gradient fills, inserting, replacing, and editing pictures |
| Slide | 6 | Adding, deleting, duplicating, and moving slides, transitions, backgrounds |
| Procedure | What it does |
| Parsing | |
| Run reconstruction | Compares formatting character by character and starts a run wherever it changes, avoiding mixed-state and empty values that COM returns over ranges |
| Paragraph records | Records alignment, indent, spacing, and bullet labels per paragraph and assigns each paragraph the runs inside it |
| Merged cells | Groups table cells with the same position and size into one cell with row and column spans |
| Group expansion | Parses group children recursively with the same fields as top-level shapes |
| Placeholder index | Maps placeholder types to shapes, and treats a picture placeholder as a picture |
| Procedure | What it does |
| Execution | |
| Style mapper | Carries the formatting of the original runs over to rewritten or translated text |
| Paragraph reconciliation | Rebuilds the mapper’s output when it returns a different number of paragraphs |
| Paragraph assignment | Writes each paragraph in one assignment so that its paragraph format survives |
| Conditional writes | Writes a formatting value only when it differs, keeping inherited formatting inherited |
| Unrequested arguments | Drops style arguments that the request does not mention |
| Short | Medium | Long | All | |
| Decks | 9 | 12 | 7 | 28 |
| Slides | 46 | 241 | 295 | 582 |
| Tasks | 54 | 81 | 48 | 183 |
| Slides per deck, median | 5 | 21 | 43 | 18 |
| Shapes per slide | 14.3 | 8.5 | 21.8 | 15.7 |
| Pictures per slide | 1.09 | 1.47 | 3.23 | 2.34 |
| Kind | Instruction | Deck | Targets |
| Role across the deck | Change every slide’s title color to green. | Short | 9 |
| Body text across the deck | Change every slide’s body font to Times New Roman. | Medium | 22 |
| Condition on content | On every slide that mentions ‘MingTok-Audio’, bold every occurrence of the term. | Medium | 10 |
| Condition and addition | For every slide whose title starts with ‘DEMO’, change the title color to dark red and add a small textbox ‘Phase 2 Demo’ at the top-right corner of the slide. | Short | 4 |
| Cross-slide reference | On slides 6-15, adjust each shape’s position and size to match slide 5’s layout. | Medium | 10 |
| Selective translation | Translate every Vietnamese-language passage in the deck into Korean. Leave English-only slides unchanged. | Medium | 6 |
| Category | Types | Tasks | What the checks verify |
| Text content | 8 | 33 | Text matches a pattern, a rewrite rule applied to the original text, numbering prefixes, no characters of the source language left after translation |
| Character style | 7 | 33 | Bold, italic, underline, font, or size on whole shapes or on selected terms, and emphasis patterns or fonts kept through a rewrite |
| Color and fill | 8 | 29 | Text or fill color within a named range, recoloring from one range to another, distinct or ordered colors across shapes |
| Objects and pictures | 5 | 37 | Shapes added in a region with given text, shapes removed, pictures scaled, recolored, or replaced |
| Geometry and arrangement | 6 | 8 | Alignment, even spacing, equal size, matching another shape’s geometry, reordering or swapping items |
| Tables | 11 | 12 | Header and row styles, alternating row colors, column colors, cell text, merged cells, added columns |
| System | Model | Shape Success | Shape IF |
| PPTPilot | gpt-6-sol | 73.4 | 82.7 |
| gpt-6-luna | 54.3 | 70.0 | |
| Qwen3.8-27B | 36.2 | 37.5 | |
| TTYS | gpt-6-sol | 71.7 | 79.0 |
| gpt-6-luna | 38.9 | 42.4 | |
| Claude Code | Sonnet 5 | 89.1 | 96.1 |
| Task Success | Slide Success | Preservation | ||||||||
| System | Model | Released | Strict | Required | Released | Strict | Required | Released | Strict | Required |
| PPTPilot | gpt-6-sol | 51.4 | 49.7 | 49.7 | 69.1 | 64.7 | 66.2 | 98.3 | 91.8 | 98.2 |
| gpt-6-luna | 43.2 | 41.5 | 42.6 | 59.0 | 57.4 | 57.6 | 96.3 | 94.2 | 96.2 | |
| Qwen3.8-27B | 50.3 | 48.6 | 49.7 | 47.3 | 46.1 | 46.7 | 93.1 | 90.8 | 93.1 | |
| TTYS | gpt-6-sol | 35.5 | 33.9 | 33.9 | 64.8 | 63.1 | 60.7 | 93.6 | 91.0 | 93.8 |
| gpt-6-luna | 29.0 | 27.3 | 27.9 | 41.3 | 40.4 | 39.5 | 95.5 | 92.9 | 95.4 | |
| Role | gpt-6 | Qwen3.8-27B | Claude Code |
| Planner | high | thinking on | high |
| Dispatcher | high | thinking on | high |
| Specialists | none | thinking off | low |
| Style mapper | high | thinking off | low |
| Text validator | none | thinking off | low |
| Picture captions | none | thinking off | low |
| Model | Input | Cached input | Output |
| gpt-6-sol | 2.00 | 0.20 | 10.00 |
| gpt-6-luna | 0.10 | 0.01 | 0.50 |
| gemini-3-pro-image-preview | 2.00 | – | 120.00 |
| System | Model | Modified | TS | Slide | IF | Over-edit | Pres |
| PPTPilot | gpt-6-sol | 126/152 | 54.6 | 70.2 | 86.7 | 0.87 | 98.3 |
| gpt-6-luna | 119/152 | 46.7 | 66.0 | 81.2 | 0.90 | 95.0 | |
| Qwen3.8-27B | 131/152 | 53.9 | 51.3 | 58.6 | 0.43 | 94.4 | |
| TTYS | gpt-6-sol | 145/152 | 36.8 | 61.8 | 73.1 | 7.16 | 93.4 |
| gpt-6-luna | 140/152 | 32.2 | 39.7 | 47.2 | 6.57 | 97.3 | |
| Qwen3.8-27B | 105/152 | 16.4 | 18.6 | 21.9 | 10.31 | 92.0 |
| System | Model | TS | Slide | IF | Over-edit | Pres |
| PPTPilot | gpt-6-sol | 51.4 [42.5, 60.1] | 69.1 [62.9, 76.6] | 83.3 [76.9, 90.3] | 0.68 [0.19, 1.26] | 98.3 [97.4, 99.1] |
| gpt-6-luna | 43.2 [35.1, 50.6] | 59.0 [50.4, 66.4] | 73.6 [65.5, 81.5] | 0.68 [0.21, 1.41] | 96.3 [92.0, 98.9] | |
| Qwen3.8-27B | 50.3 [38.9, 61.0] | 47.3 [30.2, 67.0] | 53.2 [34.4, 74.9] | 0.42 [0.00, 1.07] | 93.1 [87.4, 97.3] | |
| Talk to Your Slides | gpt-6-sol | 35.5 [28.2, 43.4] | 64.8 [58.0, 72.2] | 76.6 [70.0, 83.3] | 6.23 [4.37, 8.44] | 93.6 [89.3, 97.4] |
| gpt-6-luna | 29.0 [20.9, 38.2] | 41.3 [33.1, 50.4] | 49.3 [40.5, 58.5] | 5.63 [3.54, 8.16] | 95.5 [92.7, 97.7] | |
| Claude Code + PPTX skill | Sonnet 5 | 73.8 [66.3, 80.7] | 81.5 [75.5, 87.9] | 97.8 [95.5, 99.6] | 0.88 [0.40, 1.38] | 93.9 [89.5, 97.4] |
| A | B | A/B only | TS | Slide | IF | Over-edit | Pres | ||
| EditPPT sol | PPTPilot sol | 55/12 | 0.001 | 0.001 | +23.5 [15.1, 31.9] | +19.9 [11.5, 27.1] | +12.4 [3.1, 20.3] | 0.26 [ 0.62, 0.07] | 0.2 [ 1.7, 1.2] |
| PPTPilot luna | 66/8 | 0.001 | 0.001 | +31.7 [23.2, 40.3] | +30.1 [21.2, 39.3] | +22.1 [12.6, 30.7] | 0.26 [ 0.99, 0.25] | +1.9 [ 1.1, 6.1] | |
| PPTPilot Qwen | 56/11 | 0.001 | 0.001 | +24.6 [14.4, 35.6] | +41.7 [21.7, 59.3] | +42.5 [20.7, 62.1] | 0.00 [ 0.54, 0.43] | +5.0 [0.9, 10.7] | |
| TTYS sol | 77/5 | 0.001 | 0.001 | +39.3 [31.8, 47.0] | +24.2 [17.3, 30.9] | +19.1 [12.5, 26.2] | 5.81 [ 8.07, 3.97] | +4.6 [0.4, 8.9] | |
| TTYS luna | 87/3 | 0.001 | 0.001 | +45.9 [38.1, 54.0] | +47.7 [37.6, 57.0] | +46.4 [36.2, 56.3] | 5.21 [ 7.81, 3.05] | +2.7 [ 0.2, 5.6] | |
| Claude Code Sonnet | 20/18 | 0.87 | 1.00 | +1.1 [ 5.6, 8.3] | +7.5 [0.4, 14.7] | 2.1 [ 6.5, 1.0] | 0.46 [ 0.73, 0.19] | +4.3 [0.7, 8.3] |
| A | B | A/B only | TS | Slide | IF | Over-edit | Pres | ||
| EditPPT sol | EditPPT luna | 16/14 | 0.86 | 1.00 | +1.1 [ 5.9, 8.1] | +0.5 [ 2.3, 2.8] | +0.2 [ 1.2, 1.3] | 0.12 [ 0.66, 0.35] | 0.8 [ 2.3, 0.3] |
| EditPPT Qwen | 18/13 | 0.47 | 1.00 | +2.7 [ 3.2, 8.4] | +1.6 [ 3.6, 5.4] | 0.1 [ 4.8, 3.0] | +0.06 [ 0.35, 0.49] | +0.8 [ 1.4, 3.0] | |
| EditPPT Sonnet | 18/17 | 1.00 | 1.00 | +0.5 [ 6.7, 7.9] | +0.2 [ 3.8, 3.9] | 1.3 [ 4.6, 1.5] | +0.12 [ 0.22, 0.51] | +0.6 [ 1.6, 2.4] | |
| EditPPT Haiku | 25/10 | 0.02 | 0.38 | +8.2 [0.5, 16.3] | +5.2 [0.3, 10.6] | +2.4 [ 0.7, 6.5] | 0.13 [ 0.69, 0.42] | +0.2 [ 1.8, 2.0] | |
| EditPPT luna | EditPPT Qwen | 16/13 | 0.71 | 1.00 | +1.6 [ 3.2, 6.5] | +1.0 [ 3.3, 4.4] | 0.3 [ 4.6, 2.5] | +0.18 [ 0.19, 0.64] | +1.5 [ 0.2, 3.8] |
| EditPPT Sonnet | 13/14 | 1.00 | 1.00 | 0.5 [ 4.8, 4.4] | 0.3 [ 3.2, 2.4] | 1.5 [ 4.5, 1.2] | +0.24 [ 0.05, 0.65] | +1.4 [ 0.2, 3.0] |
| Variant | Tasks | TS | Slide | IF | Over-edit | Pres | Full / variant only | |
| Single agent | 183 | 12.0 [ 17.4, 6.9] | 6.0 [ 10.0, 2.7] | 2.2 [ 5.3, 0.4] | +5.05 [2.17, 8.19] | 0.2 [ 0.9, 0.5] | 27/5 | 0.001 |
| No validation | 183 | 3.3 [ 6.7, 0.0] | 2.2 [ 5.5, 0.6] | 0.6 [ 2.3, 0.6] | 0.06 [ 0.41, 0.15] | 2.1 [ 5.0, 0.1] | 9/3 | 0.15 |
| No validation, retried tasks | 57 | 10.5 [ 21.4, 0.0] | 4.9 [ 11.8, 1.4] | 1.5 [ 4.7, 1.5] | 0.14 [ 0.92, 0.37] | 4.7 [ 10.4, 0.1] | 9/3 | 0.15 |
| System | Backbone | 1 | 2–5 | 6–19 | 20 |
| PPTPilot | gpt-6-sol | 45.1 | 53.8 | 69.2 | 44.4 |
| gpt-6-luna | 37.8 | 38.5 | 53.8 | 47.2 | |
| Qwen3.8-27B | 50.0 | 57.7 | 61.5 | 33.3 | |
| TTYS | gpt-6-sol | 56.1 | 34.6 | 12.8 | 13.9 |
| gpt-6-luna | 52.4 | 15.4 | 12.8 | 2.8 | |
| Claude Code | Sonnet 5 | 80.5 | 73.1 | 82.1 | 50.0 |
| Cost per task (USD) | Time per task (min) | ||||||||
| System | Model | Mean | SD | Median | Max | Mean | SD | Median | Max |
| PPTPilot | gpt-6-sol | $0.298 | 0.341 | 0.154 | 1.705 | 1.7 | 1.5 | 1.1 | 8.2 |
| gpt-6-luna | $0.017 | 0.017 | 0.009 | 0.091 | 1.6 | 1.3 | 1.1 | 7.7 | |
| Qwen3.8-27B | – | – | – | – | 10.2 | 9.6 | 6.9 | 56.6 | |
| Talk to Your Slides | gpt-6-sol | $0.625 | 0.909 | 0.195 | 4.363 | 7.4 | 10.2 | 2.4 | 44.4 |
| gpt-6-luna | $0.027 | 0.035 | 0.010 | 0.188 | 6.7 | 8.3 | 2.8 | 33.5 | |
| Validator path | Slides | Pass | Partial | Fail | Damage | Wrong | Pass rate |
| Accepted at first attempt | 1525 | 1398 | 56 | 55 | 9 | 7 | 91.7% |
| Rejected, then accepted | 101 | 77 | 18 | 4 | 2 | 0 | 76.2% |
| Rejected, best attempt kept | 74 | 31 | 30 | 6 | 6 | 1 | 41.9% |
| Rejected, slide restored | 13 | 5 | 0 | 7 | 1 | 0 | 38.5% |
| # | Task, slide (run) | Defect noted in the audit | Repair by the validator | Outcome |
| 1 | 01_OverseasNews-04, s. 10 (luna) | Added page number overlaps the body text. | adjust_layout : shape 2, left 886, top 525 | Resolved |
| 2 | 01_OverseasNews-04, s. 17 (luna) | Added page number overlaps the body text. | adjust_layout : shape 6, left 878, top 495 | Resolved |
| 3 | 01_OverseasNews-04, s. 27 (luna) | Added page number overlaps the body text. | adjust_layout : shape 3, left 894, top 523 | Resolved |
| 4 | 01_Transformer-01, s. 24 (luna) | A graphic overlaps the text. | set_shape_font_size : shape 5, 20 pt | Resolved |
| 5 | 01_Transformer-01, s. 29 (luna) | A graphic overlaps the text. | set_shape_font_size : shape 5, 20 pt | Resolved |
| 6 | 01_Transformer-01, s. 30 (luna) | A graphic overlaps the text. | set_shape_font_size : shape 5, 20 pt | Resolved |
| Implementation | PowerPoint | OOXML | Google Slides |
| Native, full | 58 | 51 | 38 |
| Native, partial | 0 | 4 | 4 |
| Emulated | 0 | 1 | 5 |
| Not representable | 0 | 2 | 11 |
| Platform | Decks re-saved | Shapes changed |
| OOXML executor | 28 / 28 | 0% |
| LibreOffice 24.2 | 28 / 28 | 4.5% |
| Google Slides | 19 / 28 | 19.4% |
| OOXML | Google Slides | |
| Tasks (decks) | 183 (28) | 117 (19) |
| Recorded tool calls | 4,595 | 1,692 |
| Calls executed | 92.5% | 84.7% |
| Same effect, PowerPoint’s sizes | 92.6% | 76.1% |
| Same effect, sizes reset | 87.5% | 74.4% |
| Text identical | 97.9% | 97.0% |
LLM Agents
Large language model agents use language models to plan, use tools, and act across multi-step tasks and environments.
See all 705 papers