OpenAI + Airtable: qualify leads, email the best
Your inbox fills up with “interested!” messages, and somehow half of them have no budget, no timeline, and no real intent. You still have to read them. You still have to decide. That manual triage is where good leads quietly die, especially when response time matters.
Marketing managers see it in campaigns that generate volume but not quality. A real estate agent feels it when showings stack up but buyers aren’t ready. And for small business owners, OpenAI lead scoring automation is the difference between “I’ll reply later” and “I booked the call.”
This n8n workflow scores every inquiry, flags only the qualified ones, then logs them in Airtable and emails you instantly. You’ll see how it works, what you need, and what results to expect.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: OpenAI + Airtable: qualify leads, email the best
flowchart LR
subgraph sg0["On form submission Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>On form submission"]
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Information Extractor", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Airtable"]
n3 --> n6
n3 --> n5
n4 --> n3
n1 -.-> n2
n0 --> n2
n2 --> n4
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2 ai
class n1 aiModel
class n3 decision
class n6 database
classDef customIcon fill:none,stroke:none
class n0,n6 customIcon
The Problem: Lead Qualification Eats Your Follow-Up Time
Lead gen tools are great at producing submissions. They’re not great at telling you which ones deserve attention right now. So you end up skimming budget fields, decoding vague timelines, and trying to guess intent from one messy paragraph. It’s not just slow. It’s draining, because you have to context-switch every time a new inquiry hits. Then the real cost shows up: you respond late to serious buyers, and they move on to someone faster. Frankly, it’s painful when you know the lead was good and you still missed it.
It adds up fast. Here’s where it breaks down in day-to-day work.
- You read every single inquiry even though many are clearly unqualified after 10 seconds.
- Hot leads sit in the same inbox as tire-kickers, so your response order becomes random.
- Copying details into a CRM like Airtable is repetitive, and mistakes happen when you’re rushing.
- Follow-up gets delayed because the “quick check” turns into 30 minutes of sorting and notes.
The Solution: OpenAI Scores Leads and Routes Only the Best
This workflow turns every form submission into a structured, scored lead in seconds. A new inquiry triggers n8n, which sends the message to OpenAI to extract the details you actually care about (budget, location, timeline, property type, and contact info). OpenAI then generates a lead score from 0 to 100 based on your rules and what the buyer wrote. n8n stamps the submission as “qualified” or not, using a simple threshold (70+ in this workflow). Only qualified leads continue: they get logged into Airtable as your CRM record and you receive a Gmail notification so you can follow up immediately. Low scores can be ignored or stored separately, so your attention stays protected.
The workflow starts at the form intake trigger, then uses an OpenAI chat model plus an information extractor to normalize the messy text into clean fields. After that, an If check routes qualified leads to Airtable and Gmail, while everything else stops.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get 15 property inquiries per day. Manually, if you spend about 3 minutes reading each one and another 2 minutes logging the good ones into Airtable, that’s roughly 45 minutes of reading plus more admin on top. With this workflow, you glance at the qualified-lead emails only (maybe 4 out of 15), then open Airtable to see clean records already created. Your “triage” becomes about 5 minutes, and follow-up starts the same hour, not tomorrow.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- OpenAI for lead scoring and field extraction
- Airtable to store qualified leads in a CRM table
- Gmail to email you when a lead qualifies
- OpenAI API key (get it from the OpenAI API dashboard)
Skill level: Beginner. You’ll paste credentials into n8n and adjust a few field names to match your form and Airtable table.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A new inquiry comes in. The workflow triggers when someone submits your property inquiry form (you can swap this for Typeform, Google Forms, a website webhook, or even Telegram later).
OpenAI turns messy text into clean fields. The OpenAI chat model and the information extractor analyze the submission and pull out structured details like name, email, budget, location, timeline, and property type.
The lead gets scored and filtered. n8n assigns a “qualified” flag, then checks it with a simple rule: if the score is 70 or higher, it passes. If not, the workflow stops (or you can route it elsewhere).
You get the outcomes where you work. Qualified leads are written into Airtable as CRM records and you get a Gmail alert so you can respond right away while intent is still high.
You can easily modify the scoring threshold to match your market (or seasonality) based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Trigger
Set up the intake form that captures lead details and starts the workflow.
- Add and open Form Intake Trigger.
- Set Form Title to
Property Form. - Set Form Description to
Fill the form to buy!. - Under Form Fields, add required fields: Full Name, Email, Budget Range, Preferred Location, Purchase Timeline, Property Type.
- Leave Append Attribution disabled to match the workflow configuration.
Step 2: Set Up the AI Parsing Chain
Configure the language model and the information extractor that produces structured lead data.
- Open OpenAI Chat Engine and set Model to
gpt-4o-mini. - Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine.
- Open Lead Info Parser and set Text to the full prompt:
=You are a real estate assistant. Based on the input, classify the lead quality, extract structured info, and give a lead score (0-100). Input: Name: {{ $json['Full Name'] }} Email: {{ $json.Email }} Budget: {{ $json['Budget Range'] }} Location: {{ $json['Preferred Location'] }} Timeline: {{ $json['Purchase Timeline'] }} Property Type: {{ $json['Property Type'] }} Instructions: - Parse the budget into numeric range - Estimate urgency from timeline - Score lead (0-100) based on high budget, urgency, and location being Sydney - Return JSON like: { "name": "...", "email": "...", "budget_min": ..., "budget_max": ..., "location": "...", "timeline": "...", "urgency": "high | medium | low", "score": ..., "qualified": - Set Schema Type to
fromJsonand JSON Schema Example to{ "name": "", "email": "", "budget_min": "", "budget_max": "", "location": "", "timeline": "", "urgency": "high | medium | low", "score": "" }. - Ensure OpenAI Chat Engine is connected as the language model for Lead Info Parser; credentials are added to OpenAI Chat Engine, not the parser.
Step 3: Configure Lead Qualification Logic
Set a qualification flag and branch logic based on the lead score.
- Open Assign Qualification Flag and add an assignment: qualified (boolean).
- Set the Value to
={{ $json["output"]["score"] >= 70 }}to mark strong leads. - Open Qualified Lead Check and set the boolean condition Left Value to
={{ $json.qualified }}with operator true.
Step 4: Configure Output Actions (Parallel Branches)
Qualified leads are logged to Airtable and emailed in parallel.
- Note the execution flow: Qualified Lead Check outputs to both Airtable Lead Log and Email Lead Alert in parallel.
- Open Airtable Lead Log and set Operation to
create. - Credential Required: Connect your airtableTokenApi credentials in Airtable Lead Log.
- Select your Base and Table, then map fields: Name →
={{ $('Lead Info Parser').item.json.output.name }}, Email →={{ $('Lead Info Parser').item.json.output.email }}, Score →={{ $('Lead Info Parser').item.json.output.score }}, budget →={{ $('Lead Info Parser').item.json.output.budget_min }}, Location →={{ $('Lead Info Parser').item.json.output.location }}, Timeline →={{ $('Lead Info Parser').item.json.output.timeline }}. - Open Email Lead Alert and set Send To to
emailand Subject to🔥 NEW QUALIFIED LEAD. - Set Message to
=Name: {{ $('Lead Info Parser').item.json.output.name }} Email: {{ $('Lead Info Parser').item.json.output.email }} Location: {{ $('Lead Info Parser').item.json.output.location }} Budget: {{ $('Lead Info Parser').item.json.output.budget_min }} Timeline: {{ $('Lead Info Parser').item.json.output.timeline }} Score: {{ $('Lead Info Parser').item.json.output.score }}. - Credential Required: Connect your gmailOAuth2 credentials in Email Lead Alert.
Step 5: Test and Activate Your Workflow
Validate the workflow with a manual run before turning it on.
- Click Test workflow and submit a sample entry through Form Intake Trigger.
- Confirm Lead Info Parser returns structured fields and Assign Qualification Flag sets qualified correctly.
- For qualified leads, verify a new record appears in Airtable Lead Log and an email is sent via Email Lead Alert.
- When results are correct, switch the workflow to Active for production use.
Common Gotchas
- Airtable credentials can expire or need specific permissions. If things break, check your Airtable personal access token scopes and base access first.
- Gmail can silently fail if the connected Google account needs re-consent. Open the Gmail node in n8n and look for an authentication warning before you change anything else.
- Default prompts in AI nodes are generic. Add your exact definition of “qualified” inside the Lead Info Parser prompt early or you will be second-guessing scores forever.
Frequently Asked Questions
About 30 minutes if your Airtable and Gmail are ready.
No. You’ll connect accounts and edit a few fields to match your form. The logic is already built.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs, which are usually a few cents per lead depending on your prompt and model.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but keep it simple at first. You can change the threshold in the “Qualified Lead Check” condition and adjust the scoring criteria in the “Lead Info Parser” (information extractor) prompt. Common tweaks include raising the bar for tight markets, scoring “timeline” more heavily, and filtering out locations you don’t serve.
Usually it’s expired credentials or a personal access token that doesn’t have the right scopes. Reconnect Airtable in n8n, confirm the base and table still exist, and check that the fields you’re writing match your Airtable column types. If you recently renamed columns, update the Airtable node mapping so the workflow isn’t trying to write to old field names.
A lot. On n8n Cloud Starter, you’re mainly limited by monthly executions, and most small teams fit comfortably if they’re processing dozens of leads per day. If you self-host, there’s no execution cap, so it mostly depends on your server and OpenAI rate limits.
Often, yes, when you care about control. n8n makes it easier to add conditional logic (like scoring thresholds), keep everything in one workflow, and self-host if volume ramps up. Zapier or Make can be quicker for a basic “form → email” setup, but lead scoring adds complexity fast. Also, you may want to store rejected leads somewhere later, or send qualified ones to Slack, Sheets, and Airtable all at once. If you’re unsure, Talk to an automation expert and get a straight answer for your exact stack.
Once this is running, your inbox stops being a sorting task and starts being a sales queue. The workflow handles the repetitive judgment calls so you can respond fast and stay consistent.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.