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 →
{
"name": "02 \u2014 Verify ingestion",
"settings": {
"executionOrder": "v1"
},
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "verify-ingestion",
"responseMode": "lastNode",
"options": {}
},
"id": "a2000000-0000-4000-8000-000000000001",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
-400,
0
]
},
{
"parameters": {
"operation": "getAll",
"tableId": "documents",
"returnAll": true,
"orderBy": "id.asc",
"filters": {}
},
"id": "a2000000-0000-4000-8000-000000000002",
"name": "Sample Rows",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
-180,
0
],
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
},
"notes": "returnAll with executeOnce. Without executeOnce this runs once per input item, and repeated full-table reads carrying 1536 floats per row trip the task runner.",
"executeOnce": true
},
{
"parameters": {
"jsCode": "const rows = $input.all().map((r) => r.json);\nconst lengths = rows.map((r) => (r.content ?? '').length);\nconst first = rows[0] ?? {};\nconst embedding = typeof first.embedding === 'string' ? JSON.parse(first.embedding) : first.embedding;\nreturn [{ json: {\n rowCount: rows.length,\n embeddingDimensions: Array.isArray(embedding) ? embedding.length : null,\n chunkChars: { min: Math.min(...lengths), max: Math.max(...lengths), mean: Math.round(lengths.reduce((a,b)=>a+b,0)/lengths.length), total: lengths.reduce((a,b)=>a+b,0) },\n sampleChunk: (rows[1]?.content ?? first.content ?? '').slice(0, 600),\n sampleMetadata: rows[1]?.metadata ?? first.metadata ?? null,\n} }];"
},
"id": "a2000000-0000-4000-8000-000000000003",
"name": "Summarise",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
40,
0
],
"notes": "No executeOnce here: it would clamp the node to the first item and report a row count of 1."
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Sample Rows",
"type": "main",
"index": 0
}
]
]
},
"Sample Rows": {
"main": [
[
{
"node": "Summarise",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
supabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
02 — Verify ingestion. Uses supabase. Webhook trigger; 3 nodes.
Source: https://github.com/BhrayanM/rag-engine/blob/main/workflows/02-verify-ingestion.json — 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.
Bread-Meat-Delivery. Uses lmChatOpenAi, agent, httpRequest, redis. Webhook trigger; 91 nodes.
My workflow 14. Uses supabase, redis, openAi, googleCalendarTool. Webhook trigger; 91 nodes.
Hi! I’m Amanda, a creator of intelligent automations using n8n and Make. I’ve been building AI-powered workflows for over 2 years, always focused on usability and innovation. This one here is very spe
This workflow ingests incident and playbook content from GitHub into Supabase (including pgvector embeddings with Google Gemini) and, on a webhook trigger, enriches a test incident with historical mat
YouTube Agent. Uses supabase, agent, lmChatAnthropic, outputParserStructured. Webhook trigger; 56 nodes.