---
title: "Survey photos named by an AI agent and saved to Airtable"
kind: "Kit"
category: "Business"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/822d1543-07ba-4185-8c21-2b4ed9f9fbe4"
updated: "2026-11-12"
---

# Survey photos named by an AI agent and saved to Airtable

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that fills in a survey table from its photos. A vision model describes each photo, an AI agent searches the web to name the object, and the answers are written back to the Airtable row.

Survey photos named by an AI agent and saved to Airtable is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow fills in an Airtable survey table from its photos. It reads the rows that have a photo and are not done yet. A vision model describes each photo, and an AI agent then searches the web with a reverse image search and a page scraper to name the object, its model, material, color and condition. The answers go back into the same row. Nineteen nodes run it, beside ten sticky notes.

### Who it suits

Surveyors, inventory teams and resellers who have many photos and want a first draft of the details. Skip it if every row needs a certified answer, since the agent can guess wrong.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Property | Building surveyors | Draft an inventory of objects from site photos | A surveyor photographs a room and gets a list of fixtures with makes and conditions. |
| Resale | Second hand sellers | Fill in listing details from a photo | A seller adds a photo of a chair and gets a title, a model and a material. |
| Insurance | Claims teams | Describe belongings in a claim before a person checks them | A claims team gets a first description of each item in a set of photos. |
| Facilities | Asset managers | Build a list of equipment on site | A manager photographs plant equipment and gets makes and models to verify. |

You need a little n8n: import a file, add four credentials and prepare an Airtable table with the right fields.

### Where to use it

Any n8n that can reach OpenAI, SerpApi, Firecrawl and Airtable will run it. It starts by hand, and you can swap the trigger for a schedule.

- n8n Cloud: import the file into a new workflow there
- Your own n8n server: the same file and steps
- Another store: replace the Airtable nodes with a sheet or a database

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. You need four credentials and a survey table with photos.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key |
| SerpApi | An account and a key, for the reverse image search |
| Firecrawl | An account and a key, for the page scraper |
| Airtable | A personal access token, and a survey table with the fields \`Title\`, \`Image\`, \`AI\_status\`, \`Description\`, \`Model\`, \`Material\`, \`Color\` and \`Condition\` |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add an Airtable credential. In `Get Applicable Rows` and `Enrich Product Rows`, replace the base and table placeholders with your own.
3. Add an OpenAI credential and select it in `Analyse Image` and `OpenAI Chat Model1`.
4. Add a SerpApi credential and select it in `SERP Google Reverse Image API`.
5. In `Firecrawl Scrape API`, create a Header Auth credential. Name the header `Authorization` and give it the value `Bearer ` followed by your Firecrawl key.
6. Put three rows with a photo in the table, and press Test workflow.

### How to use it

Press Test workflow to process every row with a photo and an unticked `AI_status`. Check the answers in the table afterward. Each finished row gets its `AI_status` ticked.

What to change for a different result

| To change | Where |
| --- | --- |
| The photos to process | The formula in \`Get Applicable Rows\` |
| What to look for | The prompt in \`Analyse Image\` and the instructions in \`Object Identifier Agent\` |
| How it starts | Replace the manual trigger with a schedule |
| More tools for the agent | A new route in \`Actions Router\` and a tool node |

### Example

A survey row holds a photo of a wall lamp and the title “Wall lamp”. The vision model describes a brushed metal lamp with a fabric shade. The agent runs a reverse image search, opens two shop pages and writes back a title, a model name, “metal” as the material, a color and “good” as the condition.

The next run leaves that row alone.

### 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. An AI agent is a node that lets a chat model decide which tools to call. A reverse image search finds web pages that hold pictures like yours. A scraper reads the text of a web page.

**For experts.** Both tools are Call n8n Workflow Tool nodes that call this same workflow. `Execute Workflow Trigger` receives a `route` and a `query`, and `Actions Router` switches on the route. `Object Identifier Agent` answers through a Structured Output Parser, so each answer sits under `output`.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`Analyse Image\` | Describes the photo with a vision model | Its answer length is set to 1500 tokens |
| \`Object Identifier Agent\` | Names the object with two tools | A tools agent, version 2.2 |
| \`Actions Router\` | Sends each tool call to the right request | Three outputs, the last is a fallback |
| \`Enrich Product Rows\` | Updates the row and ticks \`AI\_status\` | Overwrites \`Title\` too |

### Good to know

Several parts of the file needed repair, and the agent’s answers still need a person’s eye.

- Vision model: the node sent a model that OpenAI shut down in December 2024. Mindket’s copy names \`gpt-6-luna\`, which takes image input
- Agent model: OpenAI’s page, read on 12 November 2026, shuts \`gpt-4o\` down on 14 January 2027. Its named replacement \`gpt-6-luna\` supports function calling in Chat Completions only with reasoning effort set to none, which this node cannot send, so Mindket’s copy uses \`gpt-5.6-terra\`
- Agent type: n8n’s source marks the OpenAI Functions mode as deprecated. Mindket’s copy is a plain AI Agent, and its answers sit one level higher
- Scraper: Firecrawl’s old \`/v0/scrape\` address tells callers to use \`/v2/scrape\`. Mindket’s copy uses it
- Overwrites: the answers replace the row’s \`Title\` and the other fields
- Guesses: check the rows that matter before you rely on them
- Photo links: Airtable attachment links expire after a while
- Your data: photo addresses go to OpenAI and SerpApi, and pages go to Firecrawl
- Credentials: the JSON holds none

## README

```markdown
# Survey photos named by an AI agent and saved to Airtable

An n8n workflow that fills in a survey table from its photos. It reads the Airtable rows that have a photo and are not done yet. A vision model describes each photo, and an AI agent searches the web with a reverse image search and a page scraper to name the object, its model, material, color and condition. The answers are written back to the same row.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 29 nodes. Nineteen of them run and ten are sticky notes. It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

- `Analyse Image` was an OpenAI node on version 1.3. In n8n's source, read on 12 November 2026, that version always sends `gpt-4-vision-preview`, which OpenAI's deprecation page lists as shut down on 6 December 2024. The node is on version 1.8 now and names `gpt-6-luna`, which takes image input.
- The node sets its answer length to 1500 tokens. The default of 300 is small for a model that reasons before it answers.
- `OpenAI Chat Model1` used `gpt-4o` with a temperature of 0. OpenAI's page, read on 12 November 2026, shuts `gpt-4o` down on 14 January 2027 and names `gpt-6-luna` as the replacement. That page says Chat Completions supports function calling only with reasoning effort set to none, and n8n's chat model node offers only low, medium and high. The agent calls tools, so the node uses `gpt-5.6-terra`, whose page lists function calling without that limit. It has no temperature setting, because that page lists none.
- `Object Identifier Agent` was an OpenAI Functions agent on version 1.5. n8n's source marks that mode as deprecated and removed in n8n v3. It is a plain AI Agent on version 2.2 now, with the same prompt, tools and output parser.
- With the new agent, the answer sits one level higher. `Enrich Product Rows` reads `{{ $json.output.color }}` where it read `{{ $json.output.output.color }}`, and the same for the other five fields.
- `Firecrawl Scrape API` called `/v0/scrape`, which Firecrawl's server now answers with a notice to use `/v2/scrape`. It calls `/v2/scrape` now. The reply still holds the page text in `data.markdown`.
- The Airtable base and table IDs are placeholders, `<YOUR_AIRTABLE_BASE_ID>` and `<YOUR_SURVEY_TABLE_ID>`. The credential links are gone, and the file's name is ours.
- Nothing else. The prompts, the router, the tools and the sticky notes are as the file had them.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- An OpenAI API key.
- A SerpApi account and key, for the reverse image search.
- A Firecrawl account and key, for the page scraper.
- An Airtable account with a personal access token and a base that holds a survey table.

The survey table needs these fields, spelled exactly like this:

- `Title`: text. It names the object in the photo, and the agent writes its own title back here.
- `Image`: an attachment field with the photo.
- `AI_status`: a checkbox. A row with it ticked is skipped.
- `Description`, `Model`, `Material`, `Color` and `Condition`: text.

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Open `Get Applicable Rows` and `Enrich Product Rows`. Add an Airtable credential and replace the two placeholders with your base and table. A base ID starts with `app` and a table ID with `tbl`, and both are in the Airtable address.
3. Add an OpenAI credential and select it in `Analyse Image` and `OpenAI Chat Model1`.
4. Add a SerpApi credential and select it in `SERP Google Reverse Image API`.
5. In `Firecrawl Scrape API`, create a Header Auth credential. Name the header `Authorization` and give it the value `Bearer ` followed by your Firecrawl key.
6. Put a few rows with a photo and an empty `AI_status` in the table. Three rows make a fair first test.
7. Press Test workflow and check the rows afterward.

## What happens in a run

1. `When clicking "Test workflow"` starts the run by hand.
2. `Get Applicable Rows` returns the rows that have an image and whose `AI_status` is not ticked.
3. For each row, `Analyse Image` sends the large thumbnail of the first photo and the row's `Title` to the vision model. It asks for a description, the model or make, the materials, the colors and the condition, and tells the model to leave an attribute blank when it cannot tell.
4. `Object Identifier Agent` receives the photo address and that description. It may call the reverse image search tool and the web page scraper tool as often as it needs, and it returns `title`, `description`, `model`, `material`, `color` and `condition` through the structured output parser.
5. Both tools call this same workflow. `Execute Workflow Trigger` takes the call, `Edit Fields` keeps the route and the query, and `Actions Router` sends it down one of three paths.
6. The reverse image path asks SerpApi for pages that hold similar images and returns each one's position, title, link and snippet. The scraper path asks Firecrawl for a page and returns the first 3000 characters of its text, or a message that the scrape failed. Any other route gets a message that the tool was not found.
7. `Enrich Product Rows` updates the row with the six answers and ticks `AI_status`.

## What to change

- The photos you start from: the formula in `Get Applicable Rows`.
- What the agent looks for: the prompt in `Analyse Image` and the instructions in `Object Identifier Agent`. The output fields are in `Structured Output Parser`.
- The way the run starts: swap the manual trigger for a schedule or an Airtable trigger.
- More tools for the agent: add a route to `Actions Router` and a tool node that sets it.
- The model: `OpenAI Chat Model1` for the agent and `Analyse Image` for the photo.

## Good to know

- The agent's answers overwrite the row, including `Title`. Try it on a copy of your table first.
- A guess is still a guess. The agent is told to leave an attribute blank when it cannot find it, and a person should check the rows that matter.
- Airtable attachment links expire after a while. Run the workflow soon after it reads the rows.
- The photo address is sent to OpenAI and to SerpApi, which searches Google with it, and the pages the agent opens go to Firecrawl. Do not run it on photos that show people or places you may not share with those services.
- Cost: OpenAI charges for the photo and for the agent's calls, SerpApi for each reverse search and Firecrawl for each scrape.
- The scraper returns only the first 3000 characters of a page, so a long page can lose the detail you wanted.
```

## What is in it

3 files, 35 KB, downloaded as a zip.

```text
NOTICE.md  690 B
README.md  6 KB
workflow.json  28 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 15 steps, starting when another workflow calls it or by hand
- AI: 2 steps call an AI model: Analyse Image and Object Identifier Agent
- Sign-ins: Signs in to: SerpApi, Firecrawl, Airtable and OpenAI
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads all 9 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/822d1543-07ba-4185-8c21-2b4ed9f9fbe4)
- [Its page on Mindket](https://mindket.com/p/822d1543-07ba-4185-8c21-2b4ed9f9fbe4)
