Automate GPT-4o Fine-Tuning with Google Sheets or Airtable Data
Go to WorkflowDescription
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
| # | Node | Purpose |
|---|------|---------|
| 1 | Schedule Trigger | Runs weekly by default (change as needed). |
| 2a | Get Examples from Sheet | Pulls rows where Ready = TRUE from your Google Sheet. Uses the JSONL-Template Sheet as the expected column layout. |
| 2b | Get Examples from Airtable (disabled) | Alternate source for Airtable users. |
| 3 | Create JSONL File (Code) | Converts each example to chat-format JSONL and splits into train.jsonl / val.jsonl (80/20). |
| 4 | Upload JSONL | Uploads the training file to OpenAI (purpose: fine-tune). |
| 5 | Begin Fine-Tune | Starts a fine-tune job on gpt-4o (editable). |
| 6 | Wait → Check Job → IF | Polls every minute until status = succeeded. |
| 7a | Write Model to Sheet | Appends the new model ID + meta to your Model Registry sheet. |
| 7b | Write 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.
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.
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.