This workflow corresponds to n8n.io template #5656 — we link there as the canonical source.
This workflow follows the Agent → Airtabletool 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": "h7qrcXor10jWVpln",
"name": "Voice2Propal \u2013 Smart WhatsApp Proposal Generator (Voice & Text)",
"tags": [],
"nodes": [
{
"id": "b08f7df9-8705-46ef-bfc3-c62e56ad34ae",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1040,
720
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4-turbo-preview",
"cachedResultName": "gpt-4-turbo-preview"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "226497a2-6aaf-4cdd-945c-e12b24179ed8",
"name": "WhatsApp Trigger",
"type": "n8n-nodes-base.whatsAppTrigger",
"position": [
-500,
500
],
"parameters": {
"updates": [
"messages"
]
},
"credentials": {
"whatsAppTriggerApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d930a6b4-1cd9-4ed3-9dcb-6ee266e0d792",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
-60,
500
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "voice",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b969c18d-14dd-4b34-8d08-801d8818b8d2",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
"rightValue": "audio"
}
]
},
"renameOutput": true
},
{
"outputKey": "text",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1daa0ee5-cb8b-44c4-ae74-954cae03c10d",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
"rightValue": "text"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "8a5fa9dd-ee0f-47b7-ba4f-6878e053b569",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
380,
400
],
"parameters": {
"url": "={{ $json.url }}",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "whatsAppApi"
},
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "e94eea3e-5179-43f6-8448-276b4b1c683f",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
600,
400
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "9a371fec-597b-411d-a745-a188f63239fb",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
600,
600
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7453a002-ec0f-4853-a28d-5d06669cb5d0",
"name": "text",
"type": "string",
"value": "={{ $('WhatsApp Trigger').item.json.messages[0].text.body }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "cb6185b3-0786-4807-8ac3-148918cec1fb",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
-280,
500
],
"parameters": {
"options": {},
"fieldToSplitOut": "={{ $json.field }}"
},
"typeVersion": 1
},
{
"id": "dc27fe1b-982e-43f0-9d98-f6cf8e25dac7",
"name": "Edit Fields1",
"type": "n8n-nodes-base.set",
"position": [
820,
500
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8cbf25ac-3fc9-4892-9c6a-24c974b03362",
"name": "message_type",
"type": "string",
"value": "={{ $json.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "032be1d4-81be-4d8d-bf9b-936c11514f38",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1160,
720
],
"parameters": {
"sessionKey": "={{ $('Edit Fields1').item.json.message_type }} ",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "803d923a-f626-4843-8a15-4dd94f13a843",
"name": "WhatsApp Business Cloud",
"type": "n8n-nodes-base.whatsApp",
"position": [
160,
420
],
"parameters": {
"resource": "media",
"operation": "mediaUrlGet",
"mediaGetId": "={{ $json.audio.id }}"
},
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "99b5abb9-ef8d-44d1-8051-271c4dbf2fc6",
"name": "Calculator",
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"position": [
1280,
720
],
"parameters": {},
"typeVersion": 1
},
{
"id": "71a9f991-8d0e-4adf-b8dc-524a58d4b0d6",
"name": "Get Info",
"type": "n8n-nodes-base.airtableTool",
"position": [
1400,
720
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appT1CYPk7IFSWAsZ",
"cachedResultUrl": "https://airtable.com/appT1CYPk7IFSWAsZ",
"cachedResultName": "[BlockA] - Invoice"
},
"limit": 5,
"table": {
"__rl": true,
"mode": "list",
"value": "tblsD8z9C4oLQNbN6",
"cachedResultUrl": "https://airtable.com/appT1CYPk7IFSWAsZ/tblsD8z9C4oLQNbN6",
"cachedResultName": "Services"
},
"options": {},
"operation": "search",
"returnAll": false,
"filterByFormula": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "1d108129-b43a-4d6c-b35d-318ea021a2ce",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1140,
500
],
"parameters": {
"text": "={{ $json.message_type }}",
"options": {
"systemMessage": "=# Overview \nYou are an AI assistant responsible for generating custom proposal documents in HTML format using JavaScript by pulling data from an Airtable service database. \n\n## Context \n- You assist in creating personalized business proposals for leads using a prebuilt HTML template managed via a JavaScript class (PropositionGenerator). \n- The template includes placeholders like \"nom\", \"pack_nom\", \"pack_services\", etc., that must be dynamically filled using relevant records from Airtable. \n- The Airtable base \"[BlockA] - Invoice\" contains a table with pack offers, their components, objectives, pricing, and booking links. \n- The proposal is directly addressed to the future client. Always use \"you\" when describing the situation and benefits. \n- For spoken or informal requests, **use approximate matching**: a single keyword (e.g., \"automation\", \"sales\", \"finance\") is sufficient to infer the corresponding pack based on its `Objectifs` or pack name.\n\n## Instructions \n1. Retrieve the correct pack data from the Airtable \u201cServices\u201d table based on the selected pack name. \n2. If no pack is explicitly mentioned, analyze the client's objective (`situation_lead` or related message content) and match it to the most relevant `Objectifs` field in Airtable to select the appropriate service pack. \n3. For oral or loose requests, use keyword-based fuzzy matching to determine the best-fit pack (e.g., \"flow\" \u2192 Pack SALES FLOW\u2122, \"content\" \u2192 Pack CONTENT OPS\u2122). \n4. Use the following Airtable fields to populate the corresponding variables in the HTML template: \n - `Mes Services` \u2192 `pack_nom` \n - `Objectifs` \u2192 `pack_objectif` \n - `Agents & Services inclus` \u2192 `pack_services` \n - `Prix` \u2192 `prix` \n - `Lien de r\u00e9servation` \u2192 `lien_reservation` \n5. Collect client-specific information from user inputs or Airtable if available: \n - `nom`, `nom_entreprise`, `situation_lead`, `date`, and current date (`date_actuel`) \n6. Replace all placeholders in the template using the `genererProposition(donnees)` method. \n7. Respond directly. Do not explain, structure, or rephrase the request. \n\n## Instructions \n- Respond strictly in the JSON format defined below. \n- Replace each placeholder value with the correct extracted or generated data:\n - `\"date_actuel\"`: insert today\u2019s date in the format \"DD Month YYYY\" (e.g., \"03 July 2025\").\n - `\"nom_entreprise\"`: insert the exact name of the company.\n - `\"nom\"`: insert the full name (first and last) of the person.\n - `\"date\"`: insert the date of the last call or contact.\n - `\"situation_lead\"`: Briefly reformulate the current situation or need you\u2019ve expressed, speaking directly to the future client in French. \n - `\"pack_nom\"`: insert the name of the proposed pack or service.\n - `\"pack_objectif\"`: describe the strategic objective tied to this pack.\n - `\"pack_services\"`: list the included services in the pack with `\\n` line breaks.\n - `\"duree_estimee\"`: list the included `duree_estimee` in the pack with `\\n` line breaks.\n - `\"prix\"`: insert the pack price in euros excl. tax (e.g., \"\u20ac4,200 HT\").\n - `\"lien_reservation\"`: insert the personalized booking link (e.g., Calendly).\n\n- The output must follow this structure strictly:\n\n{\n \"date_actuel\": \"Current time\",\n \"nom_entreprise\": \"Company Name\",\n \"nom\": \"First Last Name\",\n \"date\": \"Current time\",\n \"situation_lead\": \"Briefly describe the current situation or expressed need.\",\n \"pack_nom\": \"Recommended Pack Name\",\n \"pack_objectif\": \"Describe the strategic goal targeted by this pack.\",\n \"pack_services\": \"- Included service 1\\n- Included service 2\\n- Included service 3\",\n \"duree_estimee\": \"Estimated duration on your own (e.g., 2 to 4 weeks)\",\n \"prix\": \"Price in \u20ac excl. tax\",\n \"lien_reservation\": \"https://your-booking-link.com\"\n}\n\n- Return *only* this correctly filled JSON block and nothing else. \n- With nothing before or after `{` \n- If any required field is missing from Airtable, insert `[missing_field_name]` instead. \n- Do not alter the layout or structure of the HTML template. Only replace variables. \n- Once generated, return the HTML string or offer a download option to the user. \n\n## Tools \n- Airtable API \n- JavaScript class `PropositionGenerator` \n- HTML proposal template with dynamic placeholders \n\n## Examples \n- Input: \"Generate a proposal for Pack FULL SYSTEM\u2122 and client Jean Martin\" \n - Output: \"\u2705 The proposal for Jean Martin with Pack FULL SYSTEM\u2122 is ready. Download it [here].\" \n- Input: \"You need to automate prospecting and improve customer experience\" \n - Output: \"Based on the client\u2019s goal, Pack SALES FLOW\u2122 has been selected. Proposal is ready.\" \n- Input (voice): \"Can you send something for controlling my finances?\" \n - Output: \"Pack MONEY CONTROL\u2122 selected based on keyword 'finances'. Proposal ready.\"\n\n## SOP (Standard Operating Procedure) \n1. Parse user request to identify the target client and desired pack. \n2. If pack is not specified, analyze the client\u2019s goal and match it to the most appropriate `Objectifs` from Airtable. \n3. For informal inputs, use keyword-based fuzzy matching to find a close match in `Mes Services` or `Objectifs`. \n4. Search Airtable for the matching pack row. \n5. Extract corresponding fields and map them to the variables in the HTML template. \n6. Collect client data and generate current date if needed. \n7. Inject values into the `PropositionGenerator` using `genererProposition(donnees)`. \n8. Provide the resulting HTML output or download link to the user. \n\n## Final Notes \n- Always ensure consistent formatting in HTML output. \n- Default to French language formatting and phrasing in the final document. \n- Never include internal or debug messages in the user response. \n- Validate that the pack name matches exactly as shown in Airtable: e.g., \"Pack FULL SYSTEM\u2122\". \n\nCurrent time is {{ $now.format('yyyy-MM-dd') }} \nTime zone: Paris/Europe \n"
},
"promptType": "define"
},
"typeVersion": 1.8
},
{
"id": "cc77dec4-6a6a-4244-9634-ae8fcec4968b",
"name": "APITemplate.io",
"type": "n8n-nodes-base.apiTemplateIo",
"position": [
1600,
500
],
"parameters": {
"resource": "pdf",
"pdfTemplateId": "e8177b236ab07826",
"jsonParameters": true,
"propertiesJson": "={{ $json.output }}"
},
"credentials": {
"apiTemplateIoApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d58d1509-ddad-42d4-bb4c-ebf846b6baa4",
"name": "WhatsApp Business Cloud2",
"type": "n8n-nodes-base.whatsApp",
"position": [
1820,
500
],
"parameters": {
"mediaLink": "={{ $json.download_url }}",
"operation": "send",
"messageType": "document",
"phoneNumberId": "={{ $('WhatsApp Trigger').item.json.metadata.phone_number_id }}",
"additionalFields": {
"mediaCaption": "=Re-bonjour,\n\nCe fut un r\u00e9el plaisir d\u2019\u00e9changer avec vous.\nComme convenu, vous trouverez ci-joint une proposition presonnalis\u00e9e.\nElle inclut \u00e9galement un lien pour planifier un rendez-vous, si vous souhaitez saisir l\u2019occasion.\n\nJe reste \u00e0 votre disposition si besoin,\nFloyd Mahou",
"mediaFilename": "Feuille de route propos\u00e9e"
},
"recipientPhoneNumber": "YOUR PHONE NUMBER"
},
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1759c898-2edc-4567-86b8-2cd339633910",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-620,
-60
],
"parameters": {
"color": 6,
"width": 1600,
"height": 1140,
"content": "## \ud83e\udde9 Part 1: Message Intake & Transcription (Voice + Text)\n# Detect if the incoming WhatsApp message is a voice note or a text message, extract and prepare the content for analysis.\n\nModules:\n\nWhatsApp Trigger \u2013 Starts when a WhatsApp message is received.\n\nSplit Out \u2013 Breaks down the message into components.\n\nSwitch (Rules) \u2013 Detects whether it's a voice message or a text.\n\nWhatsApp Business Cloud (media.mediaUrlGet) \u2013 Gets the voice file if it's a voice note.\n\nHTTP Request \u2013 Downloads the voice note.\n\nOpenAI (Transcribe Recording) \u2013 Transcribes the audio to text using Whisper.\n\nEdit Fields / Edit Fields1 (manual) \u2013 Manually adjusts the transcription or text input for consistency.\n\n"
},
"typeVersion": 1
},
{
"id": "60a6f25a-94b9-4ded-bd3a-2a73e2db4397",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1000,
-60
],
"parameters": {
"color": 6,
"width": 540,
"height": 1140,
"content": "## \ud83e\udd16 Part 2: AI-Powered Proposal Drafting\n# Analyze the content of the message (voice or text), interpret the user's request, and choose the right service pack.\n\nModules:\n\nAI Agent (Tools Agent) \u2013 Interprets the message and decides which proposal to generate.\n\nMemory & Tools (Simple Memory / Calculator / Get Info) \u2013 Helps with contextual memory, value computation (like price or delivery time), and external data lookup (e.g., services, client info).\n\n"
},
"typeVersion": 1
},
{
"id": "70845415-5375-480d-b351-ee56df230fda",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1560,
-60
],
"parameters": {
"color": 4,
"width": 480,
"height": 1140,
"content": "## \ud83d\udce4 Part 3: Proposal Generation & Delivery\n# Automatically create a tailored proposal in PDF format and send it via WhatsApp.\n\nModules:\n\nAPITemplate.io (create.pdf) \u2013 Generates the PDF proposal using dynamic data.\n\nWhatsApp Business Cloud2 (messages.send) \u2013 Sends the final proposal to the user through WhatsApp."
},
"typeVersion": 1
},
{
"id": "c2e0a6d1-178e-4479-b66a-e6f7e0c7afa1",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-620,
1120
],
"parameters": {
"color": 3,
"width": 2680,
"height": 3600,
"content": "## \ud83d\udcd8 Voice2Propal \u2013 Smart WhatsApp Proposal Generator (Voice & Text)\nModule-by-Module Setup Guide\n# This guide breaks down the automation flow used to transcribe WhatsApp voice messages (or read text messages), analyze the request, and return a personalized business proposal in PDF format \u2014 all automatically.\n\n# \ud83e\udde9 What You\u2019ll Need\n## To launch this automated proposal system, make sure you have the following tools and access:\n\n## \u2705 WhatsApp Business Cloud API\n## (with a registered number + webhook configured)\n## \u2705 OpenAI API Key\n## (for Whisper audio transcription and GPT-4/GPT-3.5 processing)\n## \u2705 APITemplate.io account\n## (for generating dynamic PDFs from templates)\n## \u2705 Airtable account (free plan is enough)\n## (used for storing pack info, services, client data)\n## \u2705 n8n instance (cloud or self-hosted with HTTPS)\n## \u2705 Basic n8n familiarity\n\n## \u23f1\ufe0f Estimated setup time: 45\u201390 minutes\n\n## Created by Floyd Mahou\n\n# \ud83d\udfeb Step 1 \u2013 Capture & Transcribe WhatsApp Messages\nModules:\n\n## WhatsApp Trigger \u2013 Listens for incoming WhatsApp messages.\n## Split Out \u2013 Breaks apart compound messages if necessary.\n## Switch (Rules) \u2013 Determines if message is a voice note or plain text.\n## WhatsApp Business Cloud (media.mediaUrlGet) \u2013 Retrieves media file URL from Meta API.\n## HTTP Request \u2013 Downloads the voice file.\n## OpenAI (Whisper) \u2013 Transcribes the audio into readable text.\n## Edit Fields / Edit Fields1 \u2013 Cleans or reformats transcription or direct text input.\n## What Happens:\n## Incoming WhatsApp messages are filtered: if it's a voice message, it's transcribed. If it's text, it's passed as-is. The result is a clean input for AI analysis in the next step.\n\n# \ud83d\udfe9 Step 2 \u2013 Analyze User Intent & Select Proposal Pack\nModules:\n\n## AI Agent (Tools Agent) \u2013 Central brain that analyzes user input and determines the right pack (using reasoning, keywords, etc.).\n## Memory \u2013 Temporarily holds key context like client name, request, or past answers.\n## Calculator \u2013 Computes dynamic values like duration or pricing (if applicable).\n## Get Info (search record) \u2013 Pulls pack or service data from Airtable (name, description, inclusions, price, etc.).\n## Key Feature:\n\n## \ud83d\udca1 Your AI agent doesn\u2019t just respond \u2014 it reasons based on the user\u2019s input. It matches the request to the right pack by analyzing keywords like \u201cAI automation\u201d, \u201cinvoice bot\u201d, or \u201csupport chatbot\u201d, then pulls the right fields from Airtable.\n\n# \ud83d\udfe5 Step 3 \u2013 Generate & Send Personalized Proposal\n# Modules:\n\n## APITemplate.io (create.pdf) \u2013 Builds a professional-looking proposal PDF from dynamic fields filled by the AI agent.\n## WhatsApp Business Cloud2 (messages.send) \u2013 Sends the final PDF to the user via WhatsApp.\n## Pro Tip (Optional Enhancement):\n## You could include a voice-generated summary (e.g. via ElevenLabs) to explain the PDF content in audio form, for accessibility or \u201cwow\u201d effect.\n\n# \ud83d\udd10 Security Best Practices\n\n## Use environment variables for API keys and tokens.\n## Protect webhooks with signature verification or custom headers.\n## Limit access to only necessary scopes on each external app.\n## Add error branches or fallback modules in case:\n\n## Audio file is corrupted\n## No pack is matched\n## Airtable query fails\n\n# \ud83d\udccc Additional Notes\n\n## The AI Agent can evolve by adding:\n## User memory (to personalize tone or recognize returning clients)\n## Upsell logic (if user needs >1 service)\n## Follow-up automation (after proposal is opened)"
},
"typeVersion": 1
}
],
"active": false,
"settings": {},
"versionId": "f1f138e7-3858-4531-a650-2a27caffe40e",
"connections": {
"OpenAI": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "WhatsApp Business Cloud",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "APITemplate.io",
"type": "main",
"index": 0
}
]
]
},
"Get Info": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Calculator": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"APITemplate.io": {
"main": [
[
{
"node": "WhatsApp Business Cloud2",
"type": "main",
"index": 0
}
]
]
},
"WhatsApp Trigger": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"WhatsApp Business Cloud": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"WhatsApp Business Cloud2": {
"main": [
[]
]
}
}
}
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.
airtableTokenApiapiTemplateIoApiopenAiApiwhatsAppApiwhatsAppTriggerApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
How it works • Transcribes a WhatsApp voice or text message from a prospect using Whisper or GPT • Extracts key information (name, need, context, urgency) via AI • Matches the most relevant service pack by comparing the prospect’s need with Airtable data • Dynamically fills a…
Source: https://n8n.io/workflows/5656/ — 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.
Transform your salon/service business with this streamlined WhatsApp automation system featuring Claude integration, zero-setup database management, and intelligent conversation handling. Claude MCP I
CashMate – Your AI-Powered WhatsApp Finance Agent Turn WhatsApp into a smart finance assistant that auto-registers you, logs transactions in natural language, extracts data from receipts and voice not
48_WAgentEnhancement. Uses whatsAppTrigger, whatsApp, openAi, httpRequest. Event-driven trigger; 56 nodes.
Template Carnaval - time instagram. Uses toolWorkflow, lmChatOpenAi, memoryBufferWindow, agent. Event-driven trigger; 56 nodes.
This workflow creates a complete AI-powered restaurant ordering system through WhatsApp. It receives customer messages, processes multimedia content (text, voice, images, PDFs, location), uses GPT-4 t