anaksor-ocr
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
An n8n workflow with a chat box and an AI agent that answers questions about a customer table in one Google Sheet. It reads only the columns and rows it needs, through three small tools.
Chat agent that answers questions about one Google Sheet is an n8n workflow in the Productivity 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 chat message
It starts when someone types in the chat at the bottom of the canvas. Set first:
An answer in the chat, built from the rows and columns of your sheet
What you need before you start.
Data source
Is read in full by each tool call, then cut down to the names, one column or one row.
NeedsGoogle Sheets credential and the sheet’s address
Language model
Runs the agent that picks the tools and writes the answer.
NeedsOpenAI API key
Checked by Mindket on 13 Nov 2026
This n8n workflow lets you question a table in a Google Sheet by typing in a chat box. An AI agent reads your question and picks one of three small tools. One lists the column names. One returns a single column for every row. One returns every column of one row. The agent joins what they return into an answer, so the model sees only the pieces it asks for. Fourteen nodes run it. Five sticky notes sit beside them.
Owners and teams who keep customers, orders or stock in a spreadsheet and want to ask it plain questions, such as who buys the most. It suits a table of a few hundred rows under one header row. Skip it for a huge sheet, because each call to a tool reads the whole tab again. Skip it too when you need sums you can trust to the cent, since a language model can slip on arithmetic.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Small business | Shop owners | Ask which customers spend the most | An owner asks which customer is the biggest and gets a name and a figure. |
| Sales | Account managers | Look up one customer’s details without opening the sheet | A manager asks for everything on row 14 before a call. |
| Operations | Office managers | Check one value across a whole column | A manager asks which orders still show the status open. |
| Education | Course administrators | Question a list of sign-ups | An administrator asks who signed up for the evening class. |
You need an n8n, a Google account that can open your sheet and an OpenAI key.
Any n8n that can reach Google and OpenAI will run it. The chat opens inside the n8n editor, so it suits people who work there. To let others chat, turn on Make Chat Publicly Available in Chat Trigger. Anyone who then has the link can ask about your sheet.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Import the file, paste your sheet’s address, add two credentials and save the workflow before you chat. That is all.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Google Sheets | A Google account that can open the sheet, with an OAuth2 credential |
| Sheet | One header row, then one customer per row |
| OpenAI | An API key |
workflow.json.Set Google Sheet URL, replace <YOUR_GOOGLE_SHEET_URL> with the address of your sheet as your browser shows it, with the #gid= part, so the right tab is read.Get Google sheet contents.OpenAI Chat Model.Open the chat and type a question. The agent starts by listing the columns, then fetches only the columns and rows that your question needs. Use the same words as your column names. Short questions work best. Each message is answered alone, so name the customer again when you ask a follow-up.
| To change | Where |
|---|---|
| The sheet | sheetUrl in Set Google Sheet URL |
| How the agent answers | The system message in AI Agent |
| The model | OpenAI Chat Model |
| What each tool is for | The description in each of the three tool nodes |
| Who can chat | Make Chat Publicly Available in Chat Trigger |
A shop owner keeps her customers in a sheet with columns for name, city and total spent. She types which customer spent the most.
The agent lists the columns, asks for the total spent column across all rows and finds the highest figure. It then fetches that customer’s row by its number and answers with the name, the city and the amount. It takes seconds. When she asks where another customer lives, she must name that customer, because the chat keeps no memory of the last answer.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. An agent is a model that decides which tool to use. A tool here is a small workflow that the agent can call. A row number is the number printed at the left edge of the sheet. Nothing here is hard.
For experts. The three tools are one sub-workflow called three times, each with its own operation field. Nothing else changes between them.
| Node | What it does | What to know |
|---|---|---|
Get customer tool | Calls this same workflow with operation set to row | The workflow is called by its id, so it must be saved first. The agent passes one text input as query |
Get Google sheet contents | Reads the tab with Get Row(s) | It adds row_number, the row’s place in the tab, so the first customer is row 2 |
Check operation | Switches on the operation field | Three outputs: col names, col values and rows |
Filter | Keeps the row whose row_number equals the query | The comparison is loose, so the text 14 matches the number 14 |
Prepare output | Joins every item into one JSON text in response | A large table gives a large text, which counts against the model’s context |
Each question reads the sheet again. The agent knows only what the tools hand back.
column_values sends back one column of every rowGet column names runs once per row, so the list comes back once per row. The agent gets the same list many times on a long sheetrow_number is a row’s place in the tab, not a customer number. The agent learns it from column_values, then asks get_customer for that rowgpt-3.5-turbo-0125 in a ReAct agent. OpenAI shut gpt-3.5-turbo down on 23 October 2026 and names gpt-5.6-terra as the replacement. Mindket’s copy uses gpt-5.6-terra in a Tools Agent, because OpenAI’s page for it lists function calling but no stop setting, and it drops the temperature setting for the same reason. The sheet address became a placeholdergpt-5.6-terra costs USD 2 per million tokens in and USD 12 per million out on OpenAI’s page of 12 November 2026. Each message can trigger several tool callsAn n8n workflow with a chat box and an AI agent that answers questions about a customer table kept in one Google Sheet.
The agent reads the table through three small tools, so it asks for only the columns and rows it needs.
workflow.json: the workflow as n8n exports it, 14 nodes and 5 sticky notes. It holds no credential.README.md: these notes.gpt-3.5-turbo-0125 with its temperature at 0. OpenAI shut gpt-3.5-turbo down on 23 October 2026 andgpt-5.6-terra as the replacement. The model node now runs gpt-5.6-terra, and the temperature setting isgpt-5.6-terra listslist_columns first moved into its system message.Set Google Sheet URL held the original author's sheet address. It now reads <YOUR_GOOGLE_SHEET_URL>.workflow.json.Set Google Sheet URL, replace <YOUR_GOOGLE_SHEET_URL> with the address of your sheet as your browser shows it,#gid= part, so the right tab is read.Get Google sheet contents.OpenAI Chat Model.Chat Trigger passes each chat message to AI Agent, which runs on OpenAI Chat Model. The agent has no memory, solist_columns, get_customer and column_values. Each one is a Call n8n Workflow Toolquery and its own fixed operation field.Execute Workflow Trigger. Set Google Sheet URL sets sheetUrl, and `Get Google sheet reads the tab. That node uses the Get Row(s) operation, which is its default, and adds a row_number`Check operation sends the call down one of three branches.col names: Get column names returns the names of the columns.col values: Prepare column data keeps the column the agent asked for, plus row_number, for every row.rows: Filter keeps the one row whose row_number equals the query.Prepare output turns what is left into one JSON text in response, which goes back to the agent as the tool's answer.sheetUrl in Set Google Sheet URL.AI Agent.OpenAI Chat Model.Chat Trigger.column_values sends back one column of every row.Get column names runs for each row. On a long sheet the agentrow_number is the row's place in the tab, not a customer number. The agent learns it from column_values, then asksget_customer for that row.gpt-5.6-terra costs USD 2 per million tokens in and USD 12 per million out on OpenAI's page. Reasoning tokens countNOTICE.md 600 B README.md 5 KB workflow.json 15 KB
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
Qwen · Kit
Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…
ACE-Step · Kit
Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
zarazhangrui · Skill
Builds HTML presentations from scratch or from a PowerPoint file and shows visual style previews to pick from, for people who want web slides with no CSS or Ja…
iptv-org · Kit
Collects publicly available live TV channels from many countries into playlists that any video player with live streaming can open. Made for viewers and for de…