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…
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.
Upload form
It starts when someone sends the Presentation Generator AI form with:
A Google Slides deck with one AI-drawn picture slide for each slide you asked for, and its link in the run
What you need before you start.
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
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
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
Checked by Mindket on 13 Nov 2026
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.
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.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Retail and ecommerce | Store and sales managers | Upload the month’s order export before the review meeting | A store manager turns March’s orders into a five-slide recap. |
| B2B sales | Sales operations analysts | Send a pipeline export for a first visual pass, then rebuild the slides that matter | An analyst gets six draft slides to plan the real quarterly deck. |
| Consulting | Junior consultants | Get a quick picture of a client’s sales file before the first workshop | A consultant brings three slides on a client’s regional split to a kickoff call. |
| Small business | Owners | Turn a year of sales into something to show a partner | A 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.
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.
Presentation URL to send the link onGet it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Three accounts cover every step.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key that can use gpt-5.2 |
| WaveSpeedAI | An account and its API key, for the text-to-image model |
| An account for a Google Slides OAuth2 API credential | |
| A CSV | A sales export with a header row, small enough to send in one message |
workflow.json.Create New Blank PPT, Delete First Slide, Add Blank Slides and Update Image to PPT.Message a model1 and Message a model.Create Task and Check Status, replace <YOUR_WAVESPEED_KEY> with your WaveSpeedAI key. The brackets go, and Bearer and its space stay.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.
| To change | Where |
|---|---|
| What the report covers | The message in Message a model1, which asks for an executive sales report |
| The look of every slide | The system message of Message a model: its style rules, its twelve layouts and its text limits |
| Picture size | size in the body of Create Task, 1536*864 in the file |
| The drawing model | The address in Create Task, flux-2-flex on WaveSpeedAI |
| The form | Its title, the CSV field and the one to ten choices in On form submission |
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.
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.
| Node | What it does | What to know |
|---|---|---|
Message a model | GPT-5.2 with a JSON schema for BaseStyle_prompt, Negative_prompt and Slides | Prepare prompts then unwraps the answer when the model returns it as an array |
Edit Fields | Joins the style, the slide’s prompt and the list of things to avoid | Create Task sends that text through JSON.stringify, so it arrives in quote marks |
Switch1 | Routes on WaveSpeedAI’s status | failed goes nowhere, processing waits again, completed goes on to the slide |
Add Blank Slides and Update Image to PPT | Insert a blank slide at the slide’s number, then set the picture as its stretched background | The picture is fetched from WaveSpeedAI’s link when it is set |
Every slide is one picture. One failed picture also ends the deck early.
Message a model1failed leads nowhere, so the loop stops there. Later slides are never made and Presentation URL never runsSwitch1, and the run stops with an errorgpt-5.2gpt-5.2 calls a run. WaveSpeedAI listed flux-2-flex at $0.06 an image on 3 November 2026, one image a slideAn 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.
workflow.json: the workflow as n8n exports it, 19 nodes and no sticky notes. It holds no credential.README.md: these notes.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 onlyAdd Blank Slides then came out as NaN, theCreate New Blank PPT names the deck after the file with replace(/\.[^/.]+$/, ''). The copy's /.[^/.]+$/ still.csv from most names, but it emptied a name that had no extension.Message a model asks for \n as the line break inside each slide's text, and its exampleThe two WaveSpeedAI requests held Bearer <token> in their Authorization header. They now readBearer <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.
gpt-5.2.workflow.json.Create New Blank PPT, Delete First Slide,Add Blank Slides and Update Image to PPT.Message a model1 and Message a model.Create Task and Check Status. In each Authorization header, replace <YOUR_WAVESPEED_KEY> with your key,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.
On form submission is the form, titled Presentation Generator AI. It takes one .csv file and a choice from1 slide to 10 slides.Create New Blank PPT makes a deck named after the file with - Presentation added, and Delete First SlideExtract from File reads the CSV, with the first row as the headers, and Aggregate gathers the rows into one list,data.Message a model1 sends that list to gpt-5.2 and asks for an executive sales report in Markdown.Message a model sends the report and the slide count to gpt-5.2 with a long design brief. A JSON schema holdsBaseStyle_prompt, Negative_prompt and Slides, each slide a label and a prompt.Prepare prompts unwraps the answer if it comes back as an array, and Split Out makes one item for each slide.Loop Over Items takes one slide at a time. Edit Fields joins the shared style, the slide's prompt and the list ofCreate 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.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 stretchedPresentation URL builds the deck's link.Message a model1. Rewrite it for data that is not about sales.Message a model. It holds the style rules, twelve layouts to choose from,size in the body of Create Task. 1536*864 is 16:9, the shape of a standard slide.Create Task. Another WaveSpeedAI model needs the same answer shape, a link indata.outputs[0].Wait's 30 seconds. A shorter wait asks more often.On form submission. The deck's name reads the file fieldUpload_the_CSV_you_d_like_to_transform, so change Create New Blank PPT too if you rename it.Message a model1.Switch1 sends a failed task nowhere. The loop then stops, the later slides are never made, and Presentation URLSwitch1's three outputs, and n8ngpt-5.2.gpt-5.2 calls a run, the first with your whole CSV in it. WaveSpeedAI's page forflux-2-flex listed $0.06 an image on 3 November 2026, and each slide is one image.README.md 7 KB workflow.json 33 KB
Updated by Mindket to the current version of this kit.
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…
LibertAIDAI · Kit
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…
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…
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…
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…
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…