GPT Fine-Tuning Flow from Google Sheets or Airtable
Who is this for?
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.
What problem does it solve?
Manually downloading CSVs, converting to JSONL, uploading, and polling OpenAI is a slog.
This flow automates the whole loop: grab examples flagged Ready, build the JSONL file, start the fine-tune, then log the resulting model ID back to a registry sheet/table for reuse.
How it works
#NodePurpose1Schedule TriggerRuns weekly by default (change as needed).2aGet Examples from SheetPulls rows where Ready = TRUE
from your Google Sheet. Uses the JSONL-Template Sheet as the expected column layout.2bGet Examples from Airtable (disabled)Alternate source for Airtable users.3Create JSONL File (Code)Converts each example to chat-format JSONL and splits into train.jsonl
/ val.jsonl
(80/20).4Upload JSONLUploads the training file to OpenAI (purpose: fine-tune
).5Begin Fine-TuneStarts a fine-tune job on gpt-4o
(editable).6Wait → Check Job → IFPolls every minute until status = succeeded
.7aWrite Model to SheetAppends the new model ID + meta to your Model Registry sheet.7bWrite Model to Airtable (disabled)Equivalent logging step for Airtable.
Setup steps
-
Import & connect credentials
- Import the JSON flow into n8n.
- Add your OpenAI API key.
- Google Sheets: create an OAuth2 credential and link it to both Sheets nodes.
- Airtable (optional): create a Personal Access Token and attach it to the Airtable nodes.
-
Copy the template sheet
- Duplicate the JSONL-Template Sheet linked above into your own Drive.
- Required columns (exact names):
| systemPrompt | userPrompt | assistantResponse | Ready | - Tick
Ready = TRUE
for rows you want to include.
-
Create the registry sheet/table
- Google Sheet (or Airtable table) named Model Registry with columns:
Model ID
,Training Examples
,Epochs
,Batch Size
,Learning Rate
,Finished At
.
- Google Sheet (or Airtable table) named Model Registry with columns:
-
Tweak model & schedule
- Change the base model in Begin Fine-Tune if desired.
- Adjust the Schedule Trigger for daily / on-demand runs.
-
Test it
- Mark a few examples
Ready = TRUE
. - Run the flow manually.
- Check OpenAI for the new fine-tune job and confirm the model ID is logged in your registry.
- Mark a few examples
Resources
- n8n Docs – <https://docs.n8n.io/>
- OpenAI Fine-Tuning – <https://platform.openai.com/docs/guides/fine-tuning>
- Google Sheets API – <https://developers.google.com/sheets/api>
- Airtable API – <https://airtable.com/api>
Extending the flow
- Webhook trigger – swap the schedule for a webhook to train on demand.
- Multi-source merge – enable both Sheets and Airtable nodes to combine datasets.
- Auto-deploy – save the new model name to an env-var or Secrets Manager for downstream generation workflows.
Manually downloading CSVs, converting to JSONL, uploading, and polling OpenAI is a slog. This n8n flow automates the whole loop: grab examples flagged **Ready**, build the JSONL file, start the fine-tune, then log the resulting model ID back to a registry sheet/table for reuse.