Mindket

Airtable columns filled from PDFs by field descriptions

Newversion 1 · updated

Overview

An n8n workflow for an Airtable table where each field’s description is its prompt. Attach a PDF to a row and an OpenAI chat model fills each empty described cell. Change a field and its column fills again.

Airtable columns filled from PDFs by field descriptions 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.

At a glance

Runs in
  • n8n Cloud: import the file there and publish it, so Airtable can reach it
  • Your own n8n server: the same file and steps, with a public address for the webhook
  • Airtable: write the prompts in field descriptions and read the answers in the cells
  • Airtable views: filter or sort on the filled columns as you would on any other

Platform

Connects 2 apps

How it works

Trigger

Airtable webhook

It starts when Airtable pings the workflow’s webhook after one of these edits in the watched table:

  • A PDF added or changed in a row’s File field
  • A field added to the table
  • A field changed in the table

Actions

  1. The table’s fields are read, and those with a description become the prompts
  2. Airtable is asked what changed, and the edit is sorted as a row change or a field change
  3. The PDF of each affected row is downloaded and read as text
  4. An OpenAI chat model answers each prompt from the PDF’s text: every empty described cell of a changed row, or the changed field in every row
  5. The answers are written back to the Airtable record

Result

The described Airtable fields filled in from each row’s PDF, and a whole column filled again when its prompt changes

Integrations

What you need before you start.

Airtable

Table and webhooks

Holds the table, pings the workflow when the File field or a field changes, and takes the answers back as record updates.

NeedsA personal access token with four scopes, and a table with a File attachment field

OpenAI

Language model

Answers each field’s prompt from the PDF’s text, one call for each field on each row.

NeedsOpenAI API key, and a model chosen in two nodes

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
34 steps, starting when its webhook is called or by hand
AI
2 steps call an AI model: Generate Field Value1 and Generate Field Value
Sign-ins
Signs in to: Airtable and OpenAI
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 12 of its step types

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

About

What it is

This n8n workflow lets the people who use an Airtable table decide what to pull out of a PDF, with no change to the workflow. Each field’s description acts as the prompt for that column. When someone attaches a PDF to a row, an OpenAI chat model reads it and fills every described field that is still empty. Add a field or edit its description, and the workflow fills that column for every row with a PDF. Thirty-six nodes run it, beside fourteen sticky notes.

Who it suits

Teams that already keep their records in Airtable and receive documents as PDFs, such as invoices, leases, quotes and résumés. Skip it if your PDFs are scans with no text, if you need exact figures with no review, or if you cannot publish a webhook address that Airtable can reach. The watched table must be the first one in its base.

Who uses it, and how
IndustryWho uses itHow they use itExample
AccountingBookkeepersAttach each supplier invoice and describe the fields to readA bookkeeper adds Total and Due date columns and sees both filled from forty invoices.
Property managementProperty managersAttach each lease and ask for its rent and its end dateA manager adds a Notice period field, and the column fills for every lease.
ProcurementBuyersAttach supplier quotes and read their price and lead timeA buyer compares three quotes side by side in one table.
RecruitmentRecruitersAttach résumés and ask for the last employer and the years of experienceA recruiter describes Last employer, and the column fills for each résumé.

You need some n8n and some Airtable: import a file, add two credentials, publish a webhook and run a setup branch once.

Where to use it

Any n8n that Airtable can reach over the internet, and that can reach OpenAI, will run it. The answers land in the cells of the table you watch.

  • n8n Cloud: import the file there and publish it, so Airtable can reach it
  • Your own n8n server: the same file and steps, with a public address for the webhook
  • Airtable: write the prompts in field descriptions and read the answers in the cells
  • Airtable views: filter or sort on the filled columns as you would on any other

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. A setup branch inside the workflow creates the Airtable webhooks for you.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own, with a public address
AirtableA base, a table with an attachment field named File, and a personal access token with the scopes data.records:read, data.records:write, schema.bases:read and webhook:manage
OpenAIAn API key, and a model to choose in two nodes
PDFsFiles that have text in them, not scans
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add an Airtable Personal Access Token credential and select it in every Airtable and HTTP Request node that asks for one. The README lists the nine.
  3. Add an OpenAI credential and select it in OpenAI Chat Model and OpenAI Chat Model1. Choose a model in each.
  4. In Airtable Webhook, replace YOUR_WEBHOOK_PATH with a long random string. Save, then press Publish.
  5. In Set Airtable Vars, replace <MY_BASE_ID>, <MY_TABLE_ID> and <MY_WEBHOOK_URL> with your base ID, your table ID and the production address of Airtable Webhook. The brackets go.
  6. Run the workflow once from When clicking ‘Test workflow’. It creates two webhooks on the base.
  7. In Airtable, write a prompt in the description of each field you want filled, then attach a PDF to a row.

How to use it

Attach a PDF to a row’s File field. A few moments later, each described cell that was empty holds an answer. To ask a new question, add a field and write the question in its description. That column fills for every row with a PDF.

What to change for a different result
To changeWhere
The questionsThe Airtable field descriptions
How answers are phrasedThe system messages of Generate Field Value and Generate Field Value1
The modelsOpenAI Chat Model and OpenAI Chat Model1
The input columnThe name File, in Set Airtable Vars, in Fetch Records and in the File[0].url expressions
Which rows a field change reachesThe formula in Fetch Records

Example

A bookkeeper’s table has File, Supplier (described as the company that issued the invoice), Total (the invoice total with its currency) and Due date (the payment due date, as written). All three are single line text fields. She attaches one supplier’s PDF invoice to a new row.

Within moments, Supplier, Total and Due date hold short answers. A month later she adds PO number, described as the purchase order number if there is one. That column fills for every row with a PDF, and shows n/a where an invoice has none. Check the figures against the PDFs before you rely on them.

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. Airtable tells n8n about an edit with a webhook ping that holds no change data, so the workflow asks Airtable what changed. Start with a table of three text fields and one PDF.

For experts. The workflow reads Airtable through the Airtable node and through HTTP requests to its Web API. One Code node decides what kind of event arrived.

Where to look closer
NodeWhat it doesWhat to know
Parse EventReads the last payload and works out the event, the field and the rowIt knows only changed records, created fields and changed fields
Fields to UpdateLists the described fields whose cell in the row is emptyA row change never overwrites a cell, and a field change does
Generate Field Value1Basic LLM Chain: the PDF’s text, the field’s description and its Airtable typeIts system message asks for n/a and a reason when nothing is found
Fetch RecordsSearches with NOT({File} = ""), all rowsThe formula names the column File
Add Row ID to PayloadFolds one answer per field into one object with the row’s idUpdate Record sends it as a single update

Good to know

A row edit never overwrites a cell, but a field edit does, and Airtable’s webhooks lapse after a quiet week.

  • Overwriting: a row change fills only empty cells. A field change fills that column for every row with a file, and replaces what was there
  • Cost: each field on each row is one chat call that carries the whole PDF’s text
  • What is read: only the first attachment, File[0], and only as a PDF. A scan with no text layer gives the model nothing
  • `n/a`: the model answers n/a when it finds nothing. That is text, and Airtable can refuse text in a number or date column, since typecast is off. Start with text fields
  • Bulk edits: Parse Event uses the last payload and the first changed record in it, so editing several rows at once fills one of them
  • The first table: Get Prompt Fields reads the first table of the base, so watch that one
  • Webhooks: Airtable’s webhook page, read on 12 November 2026, says a webhook made with a personal access token is disabled after 7 days, and that listing its payloads extends it. A quiet week ends it, and the setup branch must run again
  • Model: neither chat model names one. OpenAI Chat Model 1.1 uses gpt-5-mini by default in n8n’s current source, read on 12 November 2026. OpenAI’s deprecations page gives 11 December 2026 for it and names gpt-5.6-terra as the replacement
  • Open webhook: keep its path long and private, since anyone who learns the address can call it
  • Your data: each PDF’s text goes to OpenAI
  • Credentials: the JSON holds none

README and files

README

Airtable columns filled from PDFs by field descriptions

An n8n workflow that treats each Airtable field's description as a prompt. When someone attaches a PDF in a row's File
field, a chat model reads it and fills every described field that is still empty. When a field is added or changed, the
same prompt runs again for every row that has a PDF.

What is inside

  • workflow.json: the workflow as n8n exports it, fifty nodes: thirty-six that do the work and fourteen sticky notes. It
    holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • The credential links are gone: the Airtable token on nine nodes and the OpenAI key on both chat models. Select your own.
  • Airtable Webhook had its author's own path and webhook ID. The ID is gone and the path is now YOUR_WEBHOOK_PATH.
  • The large note at the top, with the author's links, a demo video and a referral link, is now a title. The note that held
    a logo with that referral link is gone.
  • Nothing else. The three placeholders in Set Airtable Vars came with the file, and its Code nodes needed no repair.

Before you start

  • An n8n instance, on n8n Cloud or your own server. Airtable must be able to reach its webhook address.
  • An Airtable base with a table that has an attachment field named File. The name is written into the formula in
    Fetch Records, into the File[0].url expressions and into Set Airtable Vars, so change it in all of them or none.
  • An Airtable personal access token with the scopes data.records:read, data.records:write, schema.bases:read and
    webhook:manage, and access to that base.
  • An OpenAI API key.
  • PDFs that have text in them. A scanned page with no text layer gives the model nothing to read.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an Airtable Personal Access Token credential and select it in the nine nodes that use one: Get Table Schema,
    Get Table Schema1, Get Webhook Payload, Fetch Records, Get Row, Update Row, Update Record,
    RecordsChanged Webhook and FieldsChanged Webhook.
  3. Add an OpenAI credential and select it in OpenAI Chat Model and OpenAI Chat Model1. Neither names a model, so
    choose one in each.
  4. In Airtable Webhook, replace YOUR_WEBHOOK_PATH with a long random string of your own. Save, then press Publish.
  5. In Set Airtable Vars, replace <MY_BASE_ID>, <MY_TABLE_ID> and <MY_WEBHOOK_URL> with your base ID, your table ID
    and the production address of Airtable Webhook. The brackets go. Leave inputField as File.
  6. Run the workflow once from When clicking ‘Test workflow’. It creates two webhooks on the base, one for changes to the
    File column and one for fields.
  7. In Airtable, write a prompt in the description of each field you want filled, such as "The company that sent the
    document". Attach a PDF to a row. The empty described cells fill within moments.

How a run goes

Setup, run once:

  1. Set Airtable Vars holds the base ID, the table ID, the webhook address and the input field's name.
  2. Get Table Schema1 and Get "Input" Field find the File field. RecordsChanged Webhook asks Airtable to ping when
    that field's data is updated from its own interface. FieldsChanged Webhook does the same for fields that are added
    or edited.

Each ping:

  1. Airtable Webhook receives it. Get Table Schema and Get Prompt Fields read the table's fields and keep those with
    a description. Get Webhook Payload asks Airtable what changed, and Parse Event works out the event from the last
    payload: row.updated, field.created or field.updated.
  2. Event Type sends a row change one way and a field change the other.
  3. A row change: Get Row reads the row and Filter Valid Rows keeps it if it has a file. Loop Over Items1 takes one
    row. The PDF is downloaded and read as text. Fields to Update lists the described fields whose cell is empty. For
    each one, Generate Field Value1 sends the PDF's text, the field's description and its type to the chat model.
    Get Result1 names the answer after the field, Add Row ID to Payload joins the answers with the row's ID and
    Update Record writes them.
  4. A field change: Filter Valid Fields keeps it if the field has a description. Fetch Records finds every row with a
    file. For each one, the PDF is read, Generate Field Value answers for that one field, and Update Row writes it.

Change the look

  • The prompts: the Airtable field descriptions, and the system messages of Generate Field Value and
    Generate Field Value1, which keep answers short and ask for n/a when nothing is found.
  • The models: both chat model nodes.
  • The input column: the name File, in the places listed above.
  • Which rows a field change reaches: the formula in Fetch Records.
  • Which edits start a run: the filters in the bodies of RecordsChanged Webhook and FieldsChanged Webhook.

Good to know

  • A row change fills only empty cells. A field change fills that column for every row with a file, and replaces what was
    there.
  • Each field on each row is one chat call that carries the whole PDF's text. Many fields on long PDFs cost more.
  • Only the first attachment, File[0], is read, and Extract from File is set to PDF.
  • Get Prompt Fields reads the fields of the first table that Get Table Schema returns, which is the first table of the
    base. Watch that table, or keep the base to one table.
  • The answer n/a is text. Airtable can refuse text in a number or date column, because typecast is off in the update
    nodes. Describe text fields first.
  • Parse Event uses the last payload in Airtable's answer and the first changed record in it, so a bulk edit of several
    rows fills one of them. Attach the others one at a time.
  • The row webhook uses fromSources set to client, so only edits made in Airtable itself start a run, not the
    workflow's own writes.
  • Airtable's webhook page, read on 12 November 2026, says a webhook made with a personal access token is disabled after 7
    days. Listing its payloads extends it by 7 days, and Get Webhook Payload does that on every run. A quiet week still
    ends it, so run the setup branch again then.
  • Neither chat model names a model. OpenAI Chat Model 1.1 uses gpt-5-mini in n8n's current source, read on 12 November
    2026. OpenAI's deprecations page gives 11 December 2026 for gpt-5-mini and names gpt-5.6-terra as its replacement.
  • Keep the webhook path long and private. Anyone who learns the address can call it.
  • The PDF's text goes to OpenAI. The table's schema and rows stay between n8n and Airtable.
Files
NOTICE.md  636 B
README.md  7 KB
workflow.json  42 KB

3 files, 50 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-12

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Huashu Design

alchaincyf · Skill

Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…

New29.4k

Guizang PPT Skill

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…

New29.8k

Claude Code Skills & Plugins

alirezarezvani · Skill

Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…

New29.8k

Similar in Productivity

See all in Productivity

Frontend Slides

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…

New32.3k

IPTV

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…

New144k

upscaler

uwg · Kit

Holds a set of image upscaling models gathered from the OpenModelDB community, for people who want to enlarge low-resolution pictures with AI on their own comp…

New