Automate GPT-4o fine-tuning with Google Sheets or Airtable data
$20/month : Unlimited workflows
2500 executions/month
THE #1 IN WEB SCRAPING
Scrape any website without limits
HOSTINGER 🎉 Early Black Friday Deal
DISCOUNT 20% Try free
DISCOUNT 20%
Self-hosted n8n
Unlimited workflows - from $4.99/mo
#1 hub for scraping, AI & automation
6000+ actors - $5 credits/mo
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 = TRUEfor 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.