This workflow corresponds to n8n.io template #4114 — we link there as the canonical source.
This workflow follows the Agent → HTTP Request 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": "G5sy4PdIPoOIdy8a",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Quiz - Estudos",
"tags": [],
"nodes": [
{
"id": "49e9a3e6-8d75-4b26-8060-36778e30e4c2",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1360,
-320
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "02d7559c-c735-455e-b21b-ec468a0d4532",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1180,
-320
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "bb91ac3f-be03-44e3-a342-b8e488c6165b",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1040,
-520
],
"parameters": {},
"typeVersion": 3.1
},
{
"id": "13cd878e-e453-42d9-8c0e-988a53795bde",
"name": "Whatsapp Trigger",
"type": "n8n-nodes-base.webhook",
"position": [
-280,
-420
],
"parameters": {
"path": "aae5d69a-d682-4d9d-9710-a3807ca73b9c",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "164d4163-c48b-40af-b747-5ca1c20c9f48",
"name": "User exist?",
"type": "n8n-nodes-base.if",
"position": [
140,
-420
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "156a2527-ccc7-4249-9d8f-fd22fa066ad1",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "b3eb496f-1fd5-4f89-a77b-711035efbc37",
"name": "AI Agent - Portuguese BR System Msg",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1260,
-520
],
"parameters": {
"options": {
"systemMessage": "=Voc\u00ea \u00e9 um especialista em quizzes altamente qualificado e um tutor virtual extremamente amig\u00e1vel, paciente e emp\u00e1tico. Sua principal miss\u00e3o \u00e9 criar quizzes educativos e engajadores, e auxiliar os usu\u00e1rios em sua jornada de aprendizado. Voc\u00ea se comunica em portugu\u00eas do Brasil.\n\nDiretrizes de Intera\u00e7\u00e3o e Personalidade:\n\n1. **Especialista em Quizzes:** Demonstre profundo conhecimento na cria\u00e7\u00e3o de perguntas relevantes e bem formuladas sobre uma vasta gama de temas. Seu objetivo \u00e9 testar e expandir o conhecimento do usu\u00e1rio.\n2. **Uso do Nome:** Sempre que interagir, dirija-se ao usu\u00e1rio pelo nome que foi fornecido no contexto da conversa (ex: \"Ol\u00e1, [NomeDoUsuario]! Que bom ter voc\u00ea por aqui para um quiz!\"). Isso cria uma atmosfera mais pr\u00f3xima e pessoal.\n3. **Foco no Tema Fornecido:** O quiz deve ser sobre o tema que o usu\u00e1rio definiu [placeholder.json.tema]. Concentre-se nesse tema para a gera\u00e7\u00e3o das perguntas.\n4. **Flexibilidade para Mudan\u00e7a de Tema:** Embora o foco seja no tema atual, se o usu\u00e1rio expressar um desejo claro de mudar de tema, reconhe\u00e7a essa solicita\u00e7\u00e3o de forma positiva. A execu\u00e7\u00e3o da mudan\u00e7a de tema (como a coleta do novo tema) ser\u00e1 gerenciada pelo sistema externo (n8n), mas sua resposta deve ser receptiva a essa inten\u00e7\u00e3o (ex: \"Entendido, [placeholder.NomeDoUsuario]! Se quiser explorar um novo assunto, \u00e9 s\u00f3 me dizer qual ser\u00e1 o pr\u00f3ximo tema quando o sistema perguntar!\").\n5. **Personaliza\u00e7\u00e3o e Empatia:** V\u00e1 al\u00e9m de apenas fazer perguntas. Mostre genu\u00edno interesse pelo aprendizado do usu\u00e1rio. Utilize frases que demonstrem encorajamento, paci\u00eancia se o usu\u00e1rio errar, e entusiasmo quando ele acertar. Adapte sua linguagem para ser motivadora. Por exemplo: \"N\u00e3o se preocupe se essa n\u00e3o foi f\u00e1cil, [NomeDoUsuario], o importante \u00e9 aprender!\" ou \"Excelente, [NomeDoUsuario], voc\u00ea est\u00e1 indo muito bem!\".\n6. **Gera\u00e7\u00e3o de Conte\u00fado do Quiz (Instru\u00e7\u00e3o Impl\u00edcita para o \"User Prompt\"):** Esteja preparado para, quando solicitado no *prompt do usu\u00e1rio/tarefa*, gerar um conjunto de 10 perguntas de m\u00faltipla escolha (com 4 op\u00e7\u00f5es: A, B, C, D, e a indica\u00e7\u00e3o da correta) sobre o tema fornecido. \n7. **Linguagem:** Use um tom conversacional, positivo e acess\u00edvel, adequado para um ambiente de aprendizado no WhatsApp. Evite jarg\u00f5es desnecess\u00e1rios, a menos que o tema do quiz exija e possa ser uma oportunidade de aprendizado.\n8. **Feedback Construtivo:** Forne\u00e7a explica\u00e7\u00f5es claras e concisas, especialmente para respostas incorretas, ajudando o usu\u00e1rio a entender o porqu\u00ea.\n\nLembre-se, [NomeDoUsuario] est\u00e1 buscando uma experi\u00eancia de estudo que seja eficaz, mas tamb\u00e9m agrad\u00e1vel. Sua empatia e sua capacidade de personalizar a conversa s\u00e3o t\u00e3o importantes quanto a qualidade do quiz."
}
},
"typeVersion": 1.9
},
{
"id": "272d4b9e-4e14-4d0f-b269-4a89fff170a5",
"name": "Supabase: Fetch User Data",
"type": "n8n-nodes-base.supabase",
"position": [
-60,
-420
],
"parameters": {
"operation": "select"
},
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5475ea85-9672-4d2b-83d9-4ab688569389",
"name": "Ask For Name",
"type": "n8n-nodes-base.httpRequest",
"position": [
380,
-260
],
"parameters": {
"method": "POST",
"options": {},
"jsonBody": "=Bem-vindo(a) ao nosso espa\u00e7o de estudos! Para que eu possa te ajudar melhor, me conta, qual \u00e9 o seu nome?",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "19a8e284-8287-40c9-8623-abbdd6b33e5d",
"name": "Supabase: Update User Name",
"type": "n8n-nodes-base.supabase",
"position": [
600,
-260
],
"parameters": {
"operation": "update"
},
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "e5f6cab2-b476-4795-80d8-022c1dd7e9ff",
"name": "Quiz Topic Defined?",
"type": "n8n-nodes-base.if",
"position": [
380,
-520
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c15ea575-fe71-436c-9abd-dd282c22d056",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "eca29455-df9f-4f02-807e-7657f8a8d04c",
"name": "Ask For Study Topic (WhatsApp Message)",
"type": "n8n-nodes-base.httpRequest",
"position": [
600,
-440
],
"parameters": {
"method": "POST",
"options": {},
"jsonBody": "={{NOME_DO_USUARIO_AQUI}}, pensando em te ajudar nos estudos, qual mat\u00e9ria ou t\u00f3pico espec\u00edfico prefere para o nosso quiz?\n",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "08760830-e348-4fe9-882f-9d05507e02c5",
"name": "Supabase: Update Study Topic",
"type": "n8n-nodes-base.supabase",
"position": [
820,
-440
],
"parameters": {
"operation": "update"
},
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b38b927f-f076-4388-aecb-81c35a15c4ea",
"name": "Send Message to User (WhatsApp Message)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1636,
-520
],
"parameters": {
"options": {}
},
"typeVersion": 4.2
},
{
"id": "28f7ad21-bbf8-42ac-bd8f-a37fc80c9914",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-340,
-220
],
"parameters": {
"height": 240,
"content": "## WhatsApp Quiz Bot\nLet users study a specific topic via WhatsApp.\n\ud83e\udde0 Fetch user name & topic\n\ud83d\udcda Ask for missing info\n\ud83d\udce5 Save to Supabase\n\ud83e\udd16 Generate quiz with AI\n\ud83d\udcf2 Send back questions\n\n"
},
"typeVersion": 1
},
{
"id": "72c3a241-89a0-4454-9ebb-99c994ff6f4f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-220
],
"parameters": {
"width": 260,
"height": 380,
"content": "## Flow Overview\n\nTrigger: Incoming WhatsApp msg\n\nFetch user data (Supabase)\n\nCheck if name & topic exist\n\nAsk missing info via WhatsApp\n\nUpdate Supabase with answers\n\nMerge inputs\n\nAI Agent generates quiz\n\nSend response to user\n\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "e383ac09-7b4c-47b1-9e1f-1f16ff8f63f1",
"connections": {
"Merge": {
"main": [
[
{
"node": "AI Agent - Portuguese BR System Msg",
"type": "main",
"index": 0
}
]
]
},
"User exist?": {
"main": [
[
{
"node": "Quiz Topic Defined?",
"type": "main",
"index": 0
}
],
[
{
"node": "Ask For Name",
"type": "main",
"index": 0
}
]
]
},
"Ask For Name": {
"main": [
[
{
"node": "Supabase: Update User Name",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent - Portuguese BR System Msg",
"type": "ai_memory",
"index": 0
}
]
]
},
"Whatsapp Trigger": {
"main": [
[
{
"node": "Supabase: Fetch User Data",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent - Portuguese BR System Msg",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Quiz Topic Defined?": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
],
[
{
"node": "Ask For Study Topic (WhatsApp Message)",
"type": "main",
"index": 0
}
]
]
},
"Supabase: Fetch User Data": {
"main": [
[
{
"node": "User exist?",
"type": "main",
"index": 0
}
]
]
},
"Supabase: Update User Name": {
"main": [
[]
]
},
"Supabase: Update Study Topic": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"AI Agent - Portuguese BR System Msg": {
"main": [
[
{
"node": "Send Message to User (WhatsApp Message)",
"type": "main",
"index": 0
}
]
]
},
"Ask For Study Topic (WhatsApp Message)": {
"main": [
[
{
"node": "Supabase: Update Study Topic",
"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.
openAiApisupabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Create a quiz assistant that helps users study a topic of their choice through WhatsApp. Using Supabase and OpenAI, this workflow captures missing user data, stores it, and delivers dynamic quizzes tailored to each topic. Guide users through personalized study sessions Collect…
Source: https://n8n.io/workflows/4114/ — 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.
L&D_AgentsAI_ATIVO. Uses httpRequest, agent, googleCalendarTool, toolSerpApi. Webhook trigger; 93 nodes.
Flux. Uses lmChatOpenAi, agent, googleGemini, httpRequest. Webhook trigger; 67 nodes.
002_roteador_aninha_v2. Uses supabase, lmChatOpenAi, memoryBufferWindow, agent. Webhook trigger; 17 nodes.
⏺ 🚀 How it works
My workflow 15. Uses httpRequest, memoryBufferWindow, agent, lmChatOpenAi. Webhook trigger; 74 nodes.