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 that watches a Google Drive folder for PDFs and images of payment transactions. An AI model reads each one, adds a category to every line and saves a CSV file in another Drive folder.
Payment transactions from PDFs and images exported to CSV is an n8n workflow in the Finance & accounting category, listed by Mindket. It is free. This is version 1, 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.
A new file in a Drive folder
It checks the input folder every minute and starts for each new file, and it reads:
A CSV file of the transactions, with a category on each line, in a second Google Drive folder
What you need before you start.
Source and storage
Triggers on a new file, downloads it and stores the CSV file in a second folder.
NeedsA Google service account and two folders shared with it
Model for PDFs
Reads the text of a PDF and returns the transactions as CSV with a category column.
NeedsOpenRouter API key with some credit
Model for images
Reads the transactions in a picture and returns them as CSV with a category column.
NeedsA Google Gemini API key
Checked by Mindket on 13 Nov 2026
This n8n workflow turns a statement into a CSV file. It watches a Google Drive folder, and when a PDF or an image of payment transactions lands there, an AI model reads it. The model lists every transaction and adds a category column. A PDF goes through OpenRouter and an image goes through Google’s Gemini. The workflow saves the CSV text as a file in a second Drive folder, so a pile of statements becomes tables you can open in a spreadsheet. Twelve nodes run the flow.
Anyone who keeps payment records as PDFs or screenshots and wants them as rows. It suits a small business, a freelancer or a household that tracks spending by hand. Skip it if you cannot send statements to an outside AI service.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Finance | Bookkeepers | Turn client statements into rows before they enter them in the books | A bookkeeper drops in a bank statement PDF and opens the CSV to check the lines. |
| Business | Small business owners | Sort the month’s card payments into categories | An owner photographs a card slip and finds it as a row with a category. |
| Personal finance | Households | Move a budget out of PDFs and into one table | A household drops in each month’s statement and merges the files in a spreadsheet. |
| Freelancing | Freelancers | Collect expenses for a tax return | A freelancer saves receipts from the year as images and gets one file per image. |
You need some n8n for this one: a Google service account, two Drive folders, an OpenRouter key and a Gemini key. The file gives no setup time.
n8n Cloud or a self-hosted n8n will run it, with your own Google Drive folders and accounts at OpenRouter and Google AI.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Four credentials and three folder values cover every step.
| Need | Detail |
|---|---|
| n8n | An account on n8n Cloud or a server of your own |
| Google service account | With the Google Drive API on, and its key |
| Google Drive | An input folder and an output folder, both shared with that account |
| OpenRouter | An API key with some credit, for the PDFs |
| Google Gemini | An API key, for the images |
workflow.json.Get PDF or Images, Download PDF, Download Image, Upload to Google Drive and Upload to Google Drive1.Get PDF or Images, replace <YOUR_INPUT_FOLDER_ID> with the id of the folder to watch. In both upload nodes, replace <YOUR_OUTPUT_FOLDER_ID> with the id of the CSV folder.Authorization and the value Bearer <YOUR_OPENROUTER_API_KEY>. Select it in Send data to A.I..Google Gemini Chat Model.Publish the workflow and leave it. Drop a PDF or an image of payment transactions into the input folder. Within a minute or so a CSV file named with the day’s date appears in the output folder. Open it in a spreadsheet, check the figures against the original and fix any line the model got wrong.
| To change | Where |
|---|---|
| The folders | Get PDF or Images and the two upload nodes |
| The instructions for PDFs | The message in Send data to A.I. |
| The instructions for images | The two messages in Gemini extract text from image |
| The models | The model in Send data to A.I. and Google Gemini Chat Model |
| The file name | The Name in the two upload nodes |
| How often it checks | The poll time in Get PDF or Images |
A bookkeeper drops a three-page bank statement PDF and a photo of a card slip into the input folder.
Two files appear in the output folder. The first holds a header row and one row per transaction, each with a category such as groceries or transport. The second holds the one transaction on the slip. The bookkeeper opens both and checks them against the originals.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Here a router box sends PDFs one way and images the other. One path reads the text of a PDF and asks a model for the CSV. The other path shows the picture to a model. Click Test workflow, drop in a file and open each box’s output to follow it.
For experts. The PDF path is a plain HTTP request to OpenRouter, and the image path is a Basic LLM Chain with a Gemini chat model and a binary image message.
| Node | What it does | What to know |
|---|---|---|
Get PDF or Images | Google Drive Trigger for new files in one folder, polling every minute | Uses a service account, so the folder must be shared with it |
Route based on PDF or Image | Switch on the file’s mime type | An exact match for application/pdf and a contains match for image/. Other types stop here |
Send data to A.I. | HTTP Request to OpenRouter’s chat completions route | The body is built with JSON.stringify, and the answer is read from choices[0].message.content |
Gemini extract text from image | Basic LLM Chain with an image from the data field | The chain returns its answer in a field named text |
Save CSV text as file | Convert to File, text operation | Writes the answer into transactions.csv as plain text |
Upload to Google Drive | Uploads the file to the output folder | The name is the day’s date and .csv, so two files from one day share a name |
The workflow sends statements to AI services and trusts what a model writes, so read each file before you rely on it.
meta-llama/llama-3.1-70b-instruct:free, which OpenRouter’s model list no longer shows. It now names meta-llama/llama-3.1-70b-instruct, a paid model, so each PDF costs a littlemodels/gemini-1.5-pro-latest, which Google no longer lists. It now names models/gemini-3.6-flashExtract data from PDF reads the text inside a PDF, so a scan with no text gives nothing. Save those pages as images.csv nameAn n8n workflow that watches a Google Drive folder. When a PDF or an image lands there, an AI model reads the payment transactions in it
and adds a category to each one. The result is saved as a CSV file in another Drive folder. PDFs go through OpenRouter, and images go
through Google's Gemini.
workflow.json: the workflow as n8n exports it, 16 nodes. 12 of them run and four are sticky notes. It holds no credential.README.md: these notes.Send data to A.I. named meta-llama/llama-3.1-70b-instruct:free. OpenRouter's public model list, read on 12 November 2026, no longermeta-llama/llama-3.1-70b-instruct, which the list shows with a price per token.Google Gemini Chat Model named models/gemini-1.5-pro-latest, which Google's model and deprecation pages no longer list. It nowmodels/gemini-3.6-flash.encodeURIComponent, which turns it into percent codes. It now goes in withJSON.stringify, so the model reads plain text and a quote mark in a statement cannot break the request.Convert to CSV nodes made a CSV from the model's whole answer object, so the transactions ended up in one cell. They are nowSave CSV text as file and Save CSV text as file from image. They write the answer text, which is already CSV, into a file.{{$today}}. It is now the day's date followed by .csv.<YOUR_INPUT_FOLDER_ID> and <YOUR_OUTPUT_FOLDER_ID>.Vertex A.I. extract text is now Gemini extract text from image. The node it uses calls Google's Gemini API with a Google<YOUR_SERVICE_ACCOUNT_EMAIL>.workflow.json.Get PDF or Images, Download PDF, Download Image,Upload to Google Drive and Upload to Google Drive1.Get PDF or Images, replace <YOUR_INPUT_FOLDER_ID> with the id of the folder to watch. It is the last part of the folder's address<YOUR_OUTPUT_FOLDER_ID> with the id of the CSV folder.Authorization and the value Bearer <YOUR_OPENROUTER_API_KEY>. Select it inSend data to A.I..Google Gemini Chat Model.Get PDF or Images checks the input folder every minute for a new file.Route based on PDF or Image sends a PDF down its first output and any file whose type contains image/ down its second. OtherDownload PDF fetches the file and Extract data from PDF reads its text.Send data to A.I. posts the text to OpenRouter and asks for all the transactions as CSV, with a column called category.Save CSV text as file writes the answer into a file named transactions.csv, and Upload to Google Drive stores it in the outputDownload Image fetches the file, and Gemini extract text from image sends it to Google Gemini Chat Model with aSave CSV text as file from image and Upload to Google Drive1 do the same for the image's answer.Get PDF or Images and the two upload nodes.Send data to A.I. for PDFs, and the two messages in Gemini extract text from image for images.model in the request of Send data to A.I., and Google Gemini Chat Model.Name in the two upload nodes.Get PDF or Images.Extract data from PDF reads the text inside a PDF. A scan with no text in it gives nothing, so save those pages as images..csv name. Two files made on one day get the same name.NOTICE.md 686 B README.md 6 KB workflow.json 12 KB
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…
NeoQuasar · Kit
Forecasts financial candlestick series with a 4.1M-parameter foundation model trained on data from over 45 exchanges. For quant researchers and developers who…
An n8n workflow that sends a Hebrew WhatsApp reminder for an unpaid invoice 7, 14 and 30 days after its due date. It reads the open invoices from a Google Shee…
An n8n workflow that files invoices. It watches a Google Drive folder, has LlamaParse read each new file and an OpenAI model pick out the line items. Airtable…