This workflow corresponds to n8n.io template #4853 — we link there as the canonical source.
This workflow follows the Airtable → Google Sheets recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "n5I2z5PXIENtW9ri",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Fine Tune GPT",
"tags": [],
"nodes": [
{
"id": "fc478cd0-8d84-4e8a-b0d8-7b2a4bb6b65c",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
1560,
0
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "4a6895a6-5a5c-48f2-98ea-2c6ed1d428e3",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-180,
0
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "dec836ff-a0fb-4b6c-9ea6-e7a383343a2b",
"name": "Set GPT Model",
"type": "n8n-nodes-base.set",
"position": [
1020,
0
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "f349a57b-0720-4ef1-8b0c-4d07c7908c73",
"name": "Begin Fine-tune Job",
"type": "n8n-nodes-base.httpRequest",
"position": [
1300,
0
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "857dd175-1d8b-4b11-aabd-27a9ed9519a8",
"name": "Upload JSONL File",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
740,
0
],
"parameters": {},
"typeVersion": 1.8
},
{
"id": "5b297840-c851-42a0-8490-6b8c2f77e6d2",
"name": "Create JSONL File",
"type": "n8n-nodes-base.code",
"position": [
440,
0
],
"parameters": {},
"typeVersion": 2
},
{
"id": "5270eae1-1218-4ef6-b423-b4267df04c2f",
"name": "Check Fine-Tune Job",
"type": "n8n-nodes-base.httpRequest",
"position": [
1740,
0
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "3a2349ac-836a-4145-b0f9-cf1814db5180",
"name": "If Succeeded",
"type": "n8n-nodes-base.if",
"position": [
1920,
0
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "5ab2283c-3c25-4c4a-a786-3bb4c7c68702",
"name": "If Failed",
"type": "n8n-nodes-base.if",
"position": [
2120,
100
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "18b2ad15-896b-48b9-a3fd-fc10214172a2",
"name": "Error: FAILED",
"type": "n8n-nodes-base.stopAndError",
"position": [
2300,
100
],
"parameters": {},
"typeVersion": 1
},
{
"id": "992ac7d4-c889-4d5c-8359-e85f82068144",
"name": "Add Fine-Tuned Model to Airtable",
"type": "n8n-nodes-base.airtable",
"disabled": true,
"position": [
2620,
80
],
"parameters": {},
"typeVersion": 2.1
},
{
"id": "b0af9c97-b6e2-466d-9961-925685a6eb9d",
"name": "Add Fine-Tuned Model to Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
2620,
-120
],
"parameters": {},
"typeVersion": 4.6
},
{
"id": "abd193e2-472b-4bee-a4d5-8d78327eebe9",
"name": "Get Examples from Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
120,
-100
],
"parameters": {},
"typeVersion": 4.5
},
{
"id": "cc556207-aa3f-4eaa-a8f6-1bec94c055fc",
"name": "Get Examples from Airtable",
"type": "n8n-nodes-base.airtable",
"disabled": true,
"position": [
120,
120
],
"parameters": {},
"typeVersion": 2.1
},
{
"id": "3d97f4cf-135c-49ba-b47c-43bfdf7ebb18",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "06bc45b5-f279-4154-b3a5-bc7690019a64",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
360,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "8d11924b-c641-40e7-8b0b-fee2db50a9c7",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
940,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "bad9fdb4-b769-48f2-9335-3b1a3a2236f5",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1500,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "2cce770f-eb21-4c86-8a19-16a2c0e37f2b",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2480,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "6bd0a799-f4a7-4907-8a14-204d023f4ae6",
"connections": {
"Wait": {
"main": [
[
{
"node": "Check Fine-Tune Job",
"type": "main",
"index": 0
}
]
]
},
"If Failed": {
"main": [
[
{
"node": "Error: FAILED",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"If Succeeded": {
"main": [
[
{
"node": "Add Fine-Tuned Model to Airtable",
"type": "main",
"index": 0
},
{
"node": "Add Fine-Tuned Model to Sheet",
"type": "main",
"index": 0
}
],
[
{
"node": "If Failed",
"type": "main",
"index": 0
}
]
]
},
"Set GPT Model": {
"main": [
[
{
"node": "Begin Fine-tune Job",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get Examples from Sheet",
"type": "main",
"index": 0
},
{
"node": "Get Examples from Airtable",
"type": "main",
"index": 0
}
]
]
},
"Create JSONL File": {
"main": [
[
{
"node": "Upload JSONL File",
"type": "main",
"index": 0
}
]
]
},
"Upload JSONL File": {
"main": [
[
{
"node": "Set GPT Model",
"type": "main",
"index": 0
}
]
]
},
"Begin Fine-tune Job": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Check Fine-Tune Job": {
"main": [
[
{
"node": "If Succeeded",
"type": "main",
"index": 0
}
]
]
},
"Get Examples from Sheet": {
"main": [
[
{
"node": "Create JSONL File",
"type": "main",
"index": 0
}
]
]
},
"Get Examples from Airtable": {
"main": [
[
{
"node": "Create JSONL File",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Anyone curating before/after text examples in a spreadsheet and wanting a push-button path to a fine-tuned GPT model—without touching curl. Works with Google Sheets or Airtable.
Source: https://n8n.io/workflows/4853/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow receives insurance quote submissions via a webhook, normalizes and deduplicates them against Airtable and/or Google Sheets, uses OpenAI to score and classify the lead, then routes hot/wa
This workflow monitors Gmail for messages labeled “Admin”, redacts sensitive data, uses OpenAI to extract structured admin tasks and reminders, skips duplicates by checking Google Sheets and/or Airtab
Automates Singapore COE price tracking with AI forecasts and buy/wait recommendations. Weekly scraping collects LTA data, enriches with economic indicators, predicts 6-month trends, and alerts users v
Lead Generating Web Scraper & CRM Automation. Uses httpRequest, airtable, googleSheets, gmail. Scheduled trigger; 38 nodes.
Splitout Code. Uses httpRequest, stickyNote, manualTrigger, splitOut. Event-driven trigger; 33 nodes.