Mindket

Sales CSV turned into a Google Slides deck of AI images

Newversion 2 · updated

Overview

An n8n workflow with an upload form: send a sales CSV and pick up to ten slides. GPT-5.2 writes an executive report and a picture prompt for each slide, WaveSpeedAI draws them, and a new Google Slides deck gets one per slide.

Sales CSV turned into a Google Slides deck of AI images is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 2, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • Google Slides: open the deck there, present it or download it as PowerPoint
  • Email or chat: add a node after Presentation URL to send the link on

Platform

Connects 3 apps

How it works

Trigger

Upload form

It starts when someone sends the Presentation Generator AI form with:

  • A CSV file
  • How many slides, from one to ten

Actions

  1. A new Google Slides deck is made, named after the file, and its first slide removed
  2. The CSV’s rows are read and sent to GPT-5.2 for an executive report in Markdown
  3. A second GPT-5.2 call writes one visual style and a picture prompt for each slide
  4. WaveSpeedAI draws each slide as a 16:9 image, checked every 30 seconds until ready
  5. Each picture becomes the background of a new slide, and the deck’s link is set

Result

A Google Slides deck with one AI-drawn picture slide for each slide you asked for, and its link in the run

Integrations

What you need before you start.

OpenAI

Language model

Runs gpt-5.2 twice: once for the sales report, once for the deck’s style and the slide prompts.

NeedsOpenAI API key

WaveSpeedAI

Image generation

Draws each slide with its flux-2-flex text-to-image model at 1536 by 864, and reports the task’s status.

NeedsWaveSpeedAI API key, typed into two headers

Google Slides

Presentation

Creates the deck, adds a blank slide for each picture and sets the picture as its background.

NeedsA Google account, for a Google Slides OAuth2 API credential

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
19 steps, starting on a form
AI
2 steps call an AI model: Message a model1 and Message a model
Sign-ins
Signs in to: Google Slides and WaveSpeedAI
API keys
No API key is left in the file; 1 blank in it for your own key
Step types
Mindket’s checker reads 10 of its 11 step types. It does not read: HTTP Request

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow turns a sales spreadsheet into a short Google Slides deck. Someone uploads a CSV through its form and picks from one to ten slides. GPT-5.2 reads every row and writes an executive sales report in Markdown. A second GPT-5.2 call turns that report into one shared visual style and a picture prompt for each slide. WaveSpeedAI draws each slide as a 16:9 image, and the Slides API sets it as the background of a new slide. Nineteen nodes run it.

Who it suits

Sales managers and analysts who need a quick visual readout of a spreadsheet for a meeting, and who will check every slide before anyone else sees it. Skip it if you need slides whose text you can edit. Every slide is a single picture, words and charts included.

Who uses it, and how
IndustryWho uses itHow they use itExample
Retail and ecommerceStore and sales managersUpload the month’s order export before the review meetingA store manager turns March’s orders into a five-slide recap.
B2B salesSales operations analystsSend a pipeline export for a first visual pass, then rebuild the slides that matterAn analyst gets six draft slides to plan the real quarterly deck.
ConsultingJunior consultantsGet a quick picture of a client’s sales file before the first workshopA consultant brings three slides on a client’s regional split to a kickoff call.
Small businessOwnersTurn a year of sales into something to show a partnerA bakery owner uploads a year of sales and gets four slides.

You need some n8n: importing a file, adding three credentials and pasting one key in two places. Its author puts setup at about 12 minutes.

Where to use it

Any n8n that can reach OpenAI, WaveSpeedAI and Google will run it. The deck lands in the Google Drive of the account you sign in with.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • Google Slides: open the deck there, present it or download it as PowerPoint
  • Email or chat: add a node after Presentation URL to send the link on

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Three accounts cover every step.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
OpenAIAn API key that can use gpt-5.2
WaveSpeedAIAn account and its API key, for the text-to-image model
GoogleAn account for a Google Slides OAuth2 API credential
A CSVA sales export with a header row, small enough to send in one message
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add a Google Slides OAuth2 API credential. Select it in Create New Blank PPT, Delete First Slide, Add Blank Slides and Update Image to PPT.
  3. Add an OpenAI credential and select it in Message a model1 and Message a model.
  4. In the Authorization headers of Create Task and Check Status, replace <YOUR_WAVESPEED_KEY> with your WaveSpeedAI key. The brackets go, and Bearer and its space stay.
  5. Save, open the form’s test address, upload a small CSV and pick 2 slides.
  6. Press Publish, then share the form’s production address.

How to use it

Open the form, upload the CSV and choose how many slides you want. The form confirms at once. Each slide takes at least 30 seconds, since the workflow waits that long before it asks WaveSpeedAI for the picture. When the run ends, open it under Executions. Presentation URL holds the deck’s link.

What to change for a different result
To changeWhere
What the report coversThe message in Message a model1, which asks for an executive sales report
The look of every slideThe system message of Message a model: its style rules, its twelve layouts and its text limits
Picture sizesize in the body of Create Task, 1536*864 in the file
The drawing modelThe address in Create Task, flux-2-flex on WaveSpeedAI
The formIts title, the CSV field and the one to ten choices in On form submission

Example

A sales lead uploads q3-sales.csv, with columns for region, sales rep, product, units and revenue, and picks 5 slides.

The first call returns a Markdown report with totals, the strongest and weakest regions and a few recommendations. The second returns one style for the deck, a list of things to avoid and five slide prompts, such as a title slide and a KPI slide with four tiles. Column names like Sales_Rep become plain labels. Google makes a deck named after the file, with five picture slides. Check every figure on them against the report. An image model can misdraw a number.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. The top row reads the file and writes the plan. The bottom row is a loop that draws one slide at a time. Inside it, Wait, Check Status and Switch1 keep asking until the picture is ready. Try it with two slides first.

For experts. The slides are built straight on the Slides API with HTTP requests, because n8n’s own Google Slides node cannot add a slide or set a background picture.

Where to look closer
NodeWhat it doesWhat to know
Message a modelGPT-5.2 with a JSON schema for BaseStyle_prompt, Negative_prompt and SlidesPrepare prompts then unwraps the answer when the model returns it as an array
Edit FieldsJoins the style, the slide’s prompt and the list of things to avoidCreate Task sends that text through JSON.stringify, so it arrives in quote marks
Switch1Routes on WaveSpeedAI’s statusfailed goes nowhere, processing waits again, completed goes on to the slide
Add Blank Slides and Update Image to PPTInsert a blank slide at the slide’s number, then set the picture as its stretched backgroundThe picture is fetched from WaveSpeedAI’s link when it is set

Good to know

Every slide is one picture. One failed picture also ends the deck early.

  • Pictures, not text: the image model draws the titles, bullets and charts. Words can come out misspelled and figures wrong, so compare each slide with the report from Message a model1
  • A failed picture: failed leads nowhere, so the loop stops there. Later slides are never made and Presentation URL never runs
  • Other states: any WaveSpeedAI status besides processing, completed and failed matches no output of Switch1, and the run stops with an error
  • Where the deck is: in the Google Drive of the signed-in account, shared with no one. The person who sent the form only sees a confirmation
  • Model: OpenAI’s deprecations page, read on 3 November 2026, gives no shutdown date for gpt-5.2
  • Billing: OpenAI bills two gpt-5.2 calls a run. WaveSpeedAI listed flux-2-flex at $0.06 an image on 3 November 2026, one image a slide
  • Big files: every row goes to OpenAI in one message. Send a summary-sized table, not a full order history
  • Your data: the CSV goes to OpenAI, and the slide prompts, with your figures in them, go to WaveSpeedAI
  • Open form: once the workflow is published, anyone with the form’s address can spend your keys
  • Keys: the WaveSpeedAI key sits in two headers, so take it out before you share the workflow

README and files

README

Sales CSV turned into a Google Slides deck of AI images

An n8n workflow with an upload form. You send a CSV of sales data and choose from one to ten slides. GPT-5.2 writes an
executive report from the rows, then a picture prompt for each slide. WaveSpeedAI draws the slides, and the workflow
puts each picture into a new Google Slides deck as a full-slide background.

What is inside

  • workflow.json: the workflow as n8n exports it, 19 nodes and no sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

The copy Mindket started from had lost its backslashes in three places. Mindket put them back:

  • Edit Fields1 reads the slide's number from its label with replace(/\D+/g, ''). The copy had /D+/g, which only
    removes a capital D, so "Slide 1" stayed as it was. The insertion index in Add Blank Slides then came out as NaN, the
    request body was not valid JSON, and the run stopped at the first slide.
  • Create New Blank PPT names the deck after the file with replace(/\.[^/.]+$/, ''). The copy's /.[^/.]+$/ still
    cut .csv from most names, but it emptied a name that had no extension.
  • The system message of Message a model asks for \n as the line break inside each slide's text, and its example
    answer uses it in all ten slide prompts. Both had lost the backslash, and four quoted lines in the example had lost
    theirs too. The example is valid JSON again.

The two WaveSpeedAI requests held Bearer <token> in their Authorization header. They now read
Bearer <YOUR_WAVESPEED_KEY>.

In the four Slides requests, the capital O in the name of the Google Slides OAuth2 credential type is written as the
JSON escape \u004f. n8n reads the same name. The escape only stops a store check from taking that long name for a
secret key.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • An OpenAI API key that can use gpt-5.2.
  • A WaveSpeedAI account and its API key.
  • A Google account for the Google Slides OAuth2 API credential. On your own n8n server, the Google Cloud project behind
    it needs the Google Slides API turned on.
  • A CSV with a header row. Every row goes to the model in one message, so keep it to a table a person could read.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add a Google Slides OAuth2 API credential and sign in. Select it in Create New Blank PPT, Delete First Slide,
    Add Blank Slides and Update Image to PPT.
  3. Add an OpenAI credential and select it in Message a model1 and Message a model.
  4. Open Create Task and Check Status. In each Authorization header, replace <YOUR_WAVESPEED_KEY> with your key,
    brackets included. Keep the word Bearer and the space after it.
  5. Save, open the form's test address, upload a small CSV and choose 2 slides.
  6. Press Publish, then share the form's production address.

The form confirms at once, and the run goes on behind it. Open the run under Executions. Presentation URL holds the
link to the deck.

How a run goes

  1. On form submission is the form, titled Presentation Generator AI. It takes one .csv file and a choice from
    1 slide to 10 slides.
  2. Create New Blank PPT makes a deck named after the file with - Presentation added, and Delete First Slide
    removes the slide every new deck starts with.
  3. Extract from File reads the CSV, with the first row as the headers, and Aggregate gathers the rows into one list,
    data.
  4. Message a model1 sends that list to gpt-5.2 and asks for an executive sales report in Markdown.
  5. Message a model sends the report and the slide count to gpt-5.2 with a long design brief. A JSON schema holds
    the answer to three parts: BaseStyle_prompt, Negative_prompt and Slides, each slide a label and a prompt.
  6. Prepare prompts unwraps the answer if it comes back as an array, and Split Out makes one item for each slide.
  7. Loop Over Items takes one slide at a time. Edit Fields joins the shared style, the slide's prompt and the list of
    things to avoid.
  8. Create Task starts a flux-2-flex text-to-image task on WaveSpeedAI at 1536*864. Wait pauses 30 seconds,
    Check Status asks for the result, and Switch1 sends a task that is still processing back to Wait.
  9. When the task is completed, Edit Fields1 keeps the picture's address, the slide's number and the deck's ID.
    Add Blank Slides inserts a blank slide at that number, and Update Image to PPT sets the picture as its stretched
    background.
  10. After the last slide, Presentation URL builds the deck's link.

Change the look

  • The report: the message in Message a model1. Rewrite it for data that is not about sales.
  • Every slide's look: the system message of Message a model. It holds the style rules, twelve layouts to choose from,
    the text limits for each slide and an example answer about a film studio.
  • Picture size: size in the body of Create Task. 1536*864 is 16:9, the shape of a standard slide.
  • The drawing model: the address in Create Task. Another WaveSpeedAI model needs the same answer shape, a link in
    data.outputs[0].
  • Waiting: Wait's 30 seconds. A shorter wait asks more often.
  • The form: its title, the file field and the slide choices in On form submission. The deck's name reads the file field
    by its label, Upload_the_CSV_you_d_like_to_transform, so change Create New Blank PPT too if you rename it.

Good to know

  • Each slide is one picture. Its titles, bullets and charts are drawn by the image model, so they cannot be edited in
    Slides, and a word or a figure can come out wrong. Compare every slide with the report from Message a model1.
  • Switch1 sends a failed task nowhere. The loop then stops, the later slides are never made, and Presentation URL
    never runs.
  • A WaveSpeedAI status other than processing, completed or failed matches none of Switch1's three outputs, and n8n
    stops the run with an error.
  • The deck sits in the Google Drive of the signed-in account and is shared with no one. Share it from Slides yourself.
    The person who sent the form only sees its confirmation.
  • OpenAI's deprecations page, read on 3 November 2026, gives no shutdown date for gpt-5.2.
  • Billing: OpenAI bills two gpt-5.2 calls a run, the first with your whole CSV in it. WaveSpeedAI's page for
    flux-2-flex listed $0.06 an image on 3 November 2026, and each slide is one image.
  • Every row of the CSV goes to OpenAI. The slide prompts, with your figures in them, go to WaveSpeedAI, and Google
    fetches each picture from WaveSpeedAI's link.
  • Once the workflow is published, anyone with the form's address can start a run that spends your keys and adds a deck
    to your Drive.
  • The WaveSpeedAI key sits in two header fields, not in a credential, so it travels with any export. Take it out before
    you share the workflow.
Files
README.md  7 KB
workflow.json  33 KB

2 files, 40 KB, downloaded as a zip.

What’s new

  • Version 2 · 2026-11-09

    Updated by Mindket to the current version of this kit.

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Bonsai-27B-GGUF

lmstudio-community · Kit

A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…

New

Runs DeepSeek-V4.1-Flash-1017 as a 2.9 bits-per-weight EXL3 quantization, a 196 GiB copy for people serving large models on their own hardware. Perplexity stay…

New

MusicGen Small

facebook · Kit

Generates short music clips from a text description or an audio prompt, in the small checkpoint of facebook's MusicGen. It suits developers and music hobbyists…

New

Similar in Business

See all in Business

pplx-decider-v1.1-27b

perplexity-ai · Kit

Picks the best option for a decision from text and images, such as which team should handle a request, with a probability for each choice, for developers who b…

New

NuExtract3

numind · Kit

Reads documents as text or images and fills a JSON template with the fields you ask for, or converts the pages to Markdown. A 4B model for teams that process s…

New

Drex DLM

nace-ai · Kit

Scores yes or no, multiple choice and rating questions about a document in one pass, with a probability for every option. An 8B decision model from Nace.AI tha…

New