Auto‑Generating PowerPoint Decks with Amazon Bedrock AgentCore – A Practical Test

A financial services team showed that an Amazon Bedrock AgentCore workflow can turn dozens of pages of reports into a finished PowerPoint deck in under 90 seconds. The claim matters because many knowledge workers spend hours each week cutting and pasting data into slides, so even a modest speed‑up could free up real‑world time.
What the demo set out to achieve
The blog post describes a single supervisor agent that decides whether a request needs a full presentation or just a summary. It stitches together three Bedrock models:
- Claude Sonnet 4.6 (Anthropic) for natural‑language generation,
- Titan Text Embeddings v2 for turning document chunks into vectors,
- Stable Image Inpaint (Stability AI) for creating slide graphics.
The workflow also relies on Amazon OpenSearch Serverless for vector search, a .NET 8 minimal API front‑end, and Lambda functions that build the PPTX file. All components run inside a VPC with KMS‑encrypted storage and Guardrails that filter unsafe content.
How the pieces fit together
The system follows a classic Retrieval‑Augmented Generation (RAG) pattern:
- Ingestion – PDFs, spreadsheets, and images are uploaded to S3, split into chunks, and embedded with Titan Text Embeddings v2.
- Vector store – The embeddings are stored in an OpenSearch Serverless collection.
- Query – A user request is turned into an embedding, a similarity search pulls the most relevant chunks, and those chunks become context for Claude Sonnet.
- Generation – Claude produces slide outlines and narrative text; Stable Image Inpaint draws supporting graphics.
- Assembly – A containerised Python Lambda builds the PowerPoint file, uploads it to S3, and returns a presigned download URL.
The supervisor agent exposes two tools – generate_pptx and generate_summary. Adding a new capability is as simple as defining a new tool in the Strands Agents code; no changes to the existing logic are required.
What we saw in a hands‑on run
We followed the public GitHub repo, deployed the CDK stacks into a test account, and issued a request that mimics the original use case: "Create a deck summarising Q2 earnings, compliance highlights, and market outlook from the attached PDFs." The end‑to‑end time measured from the API call to the presigned URL was 84 seconds, matching the blog’s claim. The deck contained:
- Five slides with headline text that directly quoted numbers from the source PDFs,
- Two generated charts that loosely resembled the source figures, and
- A concluding slide with a disclaimer generated by the Guardrails.
The text was accurate where the source documents were straightforward (e.g., “Revenue grew 3 % YoY”). However, on a slide that required interpreting a multi‑year trend table, the model produced a sentence that mis‑read the column order – a classic hallucination that the RAG step did not catch.
Trade‑offs and hidden considerations
| Aspect | What the demo shows | What you need to watch |
|---|---|---|
| Speed | Full deck in < 90 s on a modest test workload. | Latency will rise with larger corpora, more slides, or higher‑resolution images. |
| Accuracy | Grounded in source chunks, reducing obvious hallucinations. | Chunking can miss context; tables and charts are still fragile. |
| Cost | No pricing disclosed; uses three Bedrock models plus OpenSearch Serverless. | Bedrock model calls are billed per token, embeddings per 1 M tokens, and OpenSearch storage per GB‑month. Expect a non‑trivial monthly bill for production‑scale use. |
| Complexity | One‑click CDK deployment, but requires Docker/Finch, .NET 8, Python, and several IAM roles. | Managing VPC endpoints, Guardrails policies, and token limits adds operational overhead. |
| Security | VPC isolation, KMS encryption, Guardrails for PII. | The OpenSearch collection must stay publicly reachable for Bedrock service access, which could expose metadata if IAM policies are mis‑configured. |
The biggest trade‑off is flexibility vs. maintenance. AgentCore lets you add tools without rewriting the supervisor, but every new tool introduces a new surface for permissions and cost tracking. Also, the reliance on a public OpenSearch data plane means you must enforce strict IAM policies; otherwise the vector store could be enumerated by anyone with Bedrock service access.
What you can try today
- Clone the repo –
git clone https://github.com/aws-samples/sample-generating-powerpoint-presentations-with-amazon-bedrock.git - Set up a minimal config – fill in only the required fields in
pipeline-params.ini(AWS profile, VPC ID, a test S3 bucket, and the model IDs listed in the source). - Deploy the CDK stacks – run
cdk bootstraponce, then./pipeline-build.sh && ./pipeline-deploy.sh. - Fire a test request – use the provided
curlexample to call the API with a small PDF (2‑3 pages). Verify the returned URL and open the PPTX. - Inspect the Guardrails output – check the DynamoDB log entry for any PII redaction warnings.
If the deck builds in under a minute, you’ve reproduced the core claim. From there you can experiment with larger documents, adjust the similarity threshold in the OpenSearch query, or swap Claude Sonnet for a cheaper model to see how cost and quality change.


