{
  "name": "fomono_v5",
  "nodes": [
    {
      "parameters": {
        "updates": [
          "*"
        ],
        "additionalFields": {}
      },
      "id": "25dd6806-d111-4f8c-853b-7f6ced888f71",
      "name": "Listen for incoming events",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -640,
        -520
      ],
      "typeVersion": 1,
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "a0bf9719-4272-46f6-ab3b-eda6f7b44fd8",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $('Listen for incoming events').item.json.message.text }}",
              "rightValue": ""
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "506d107d-ed0b-4035-b39b-433eda825d64",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        900,
        -530
      ],
      "typeVersion": 2.2
    },
    {
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "text",
              "stringValue": "={{ $('Listen for incoming events').item.json.message.text }}"
            }
          ]
        },
        "options": {}
      },
      "id": "0b414e0d-a70c-4ce6-b86a-67f29c4969f6",
      "name": "Voice or Text",
      "type": "n8n-nodes-base.set",
      "position": [
        680,
        -530
      ],
      "typeVersion": 3.2
    },
    {
      "parameters": {
        "resource": "file",
        "fileId": "={{ $('Listen for incoming events').item.json.message.voice.file_id }}"
      },
      "id": "9ff8bdd5-0224-41d4-b0ad-0be9a89f859e",
      "name": "Get Voice File",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1120,
        -630
      ],
      "typeVersion": 1.1,
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## Process Telegram Request\n",
        "height": 479,
        "width": 816,
        "color": 5
      },
      "id": "bf48cb86-94b8-45d5-a1ee-e2572aded85c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        672,
        -749
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "flat_events2",
        "returnAll": true
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        -420,
        -530
      ],
      "id": "2f3e471e-6898-4cc9-be5b-31a907c2eafd",
      "name": "Supabase",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.elevenlabs.io/v1/speech-to-text",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "xi-api-key",
              "value": "sk_52cfc481c708f9d4d94a10b9a50ca7dd8f2f32fb0fc159b1"
            }
          ]
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "model_id",
              "value": "scribe_v1"
            },
            {
              "parameterType": "formBinaryData",
              "name": "file",
              "inputDataFieldName": "data"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1340,
        -620
      ],
      "id": "3135ae3d-0df5-423e-b912-c3bf5fefa37c",
      "name": "Voice transcript"
    },
    {
      "parameters": {
        "resource": "chat",
        "chatId": "={{ $('Listen for incoming events').item.json.message.chat.id }}"
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        1340,
        -420
      ],
      "id": "2692e9d1-eeee-4f29-95dc-22dc442d6fac",
      "name": "Telegram raw text message",
      "alwaysOutputData": true,
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "options": {}
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        -200,
        -530
      ],
      "id": "30d67d83-5d53-419f-8078-d0afb3243f4f",
      "name": "Aggregate"
    },
    {
      "parameters": {
        "operation": "get",
        "tableId": "users",
        "filters": {
          "conditions": [
            {
              "keyName": "id",
              "keyValue": "={{ $('Listen for incoming events').item.json.message.from.id }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        20,
        -530
      ],
      "id": "132f97de-33d0-417e-b795-8840498c7a5a",
      "name": "Supabase_users",
      "alwaysOutputData": true,
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      },
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $('Listen for incoming events').item.json.message.text }}\n{{ $json.text }}\n",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=Tu es un assistant charg\u00e9 d'extraire et de fusionner des informations pertinentes sur un utilisateur \u00e0 partir d'un message qu'il a envoy\u00e9 avec les informations r\u00e9ellement connues de l'utilisateur. Ton objectif est de compl\u00e9ter ou mettre \u00e0 jour ce document JSON existant avec les param\u00e8tres suivants :\n\n- `name` (string) : le pr\u00e9nom ou nom complet de l'utilisateur.\n- `cultural_taste` (string) : pr\u00e9f\u00e9rences culturelles, par exemple des go\u00fbts musicaux, cin\u00e9matographiques, litt\u00e9raires ou artistiques mentionn\u00e9s.\n- `location` (string) : la ville, r\u00e9gion ou pays o\u00f9 r\u00e9side l'utilisateur.\n- `children` (integer) : le nombre d'enfants que poss\u00e8de l'utilisateur.\n- `age` (integer) : l'\u00e2ge exact ou approximatif mentionn\u00e9 explicitement ou implicitement (obligatoire).\n- `message` (string) : un message naturel, sympathique et convivial destin\u00e9 \u00e0 l'utilisateur pour r\u00e9cup\u00e9rer des informations manquantes si n\u00e9cessaire.\n\nInstructions :\n1. Analyse attentivement le message utilisateur et fusionne les nouvelles informations identifi\u00e9es avec celles d\u00e9j\u00e0 pr\u00e9sentes dans le document.\n2. Si l'information obligatoire `cultural_taste` est absente, remplis l'attribut `message` avec un message naturel, sympathique et convivial destin\u00e9 \u00e0 l'utilisateur, afin qu'il fournisse l'information manquante. Sinon, laisse `message` vide.\n3. Fournis syst\u00e9matiquement tous les attributs possibles dans ta r\u00e9ponse. Si une information n'est pas pr\u00e9sente ou inchang\u00e9e, indique-la avec une valeur vide (\"\").\n4. Fournis le r\u00e9sultat sous format JSON clair et valide, pr\u00eat \u00e0 \u00eatre directement sauvegard\u00e9 dans la base de donn\u00e9es.\n\nExemple :\n\nInformation r\u00e9ellement connues de l'utilisateur :\n\n-  \"name\": \"Marie\",\n-  \"cultural_taste\": \"\",\n-  \"location\": \"Bordeaux\",\n-  \"children\": 1,\n-  \"children_ages\": [\"2\", \"8\"],\n-  \"past_event\": \"\",\n-  \"age\": \"\",\n-  \"message\": \"\",\n-  \"messages\": {{ $if($('Supabase_users').item.json.messages != null, $('Supabase_users').item.json.messages.map(item => item.type + ': \\\"' + item.text + '\\\"').join(', '), \"\") }}\n\nMessage utilisateur :\n\u00ab {{ !!$json?.text ? $json?.text : $('Listen for incoming events').item.json.message.text }} \u00bb\n\nR\u00e9sultat si information manquante :\n```json\n{\n  \"name\": \"Marie\",\n  \"cultural_taste\": \"\",\n  \"location\": \"Bordeaux\",\n  \"children\": 2,\n  \"age\": \"\",\n  \"message\": \"Ok ! Pourrais-tu me donner tes go\u00fbts culturels pour que je puisse compl\u00e9ter ton profil ? Merci ! \ud83d\ude0a\",\n  \"messages\": {{ $if($('Supabase_users').item.json.messages != null, $('Supabase_users').item.json.messages.toJsonString(), '[]') }}\n}\n```\n\nR\u00e9sultat apr\u00e8s r\u00e9ponse :\n```json\n{\n  \"name\": \"Marie\",\n  \"cultural_taste\": \"jazz, cin\u00e9ma classique\",\n  \"location\": \"Bordeaux\",\n  \"children\": 2,\n  \"children_ages\": [\"2\", \"8\"],\n  \"past_event\": \"\",\n  \"age\": \"\",\n  \"message\": \"\",\n  \"messages\": [{{ $if($('Supabase_users').item.json.messages != null, $('Supabase_users').item.json.messages.append({\"type\": \"user\", \"text\": !!$json?.text ? $json?.text : $('Listen for incoming events').item.json.message.text}).toJsonString(), [{\"type\": \"user\", \"text\": !!$json?.text ? $json?.text : $('Listen for incoming events').item.json.message.text}].toJsonString()) }}]\n}\n```\n\n\n\nInformation r\u00e9ellement connues de l'utilisateur : \n{{ $('Supabase_users').item.json.toJsonString() }}\n\n\nMessage utiisateur :\n{{ $('Listen for incoming events').item.json.message.text }}\n{{ $json.text }}\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.8,
      "position": [
        1560,
        -520
      ],
      "id": "246b7a9f-bb6d-4e84-8f47-687780678445",
      "name": "AI Agent2"
    },
    {
      "parameters": {
        "chatId": "={{ $('Listen for incoming events').first().json.message.from.id }}",
        "text": "={{ $('AI Agent2').item.json.output.message }}",
        "additionalFields": {
          "appendAttribution": false,
          "parse_mode": "Markdown"
        }
      },
      "id": "46142d42-20a2-4939-9c91-42ec1d5af678",
      "name": "Telegram1",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2380,
        -140
      ],
      "typeVersion": 1.1,
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        1580,
        -300
      ],
      "id": "cf8b6582-18bb-4bda-a31a-0b2c60bc3bf4",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"name\": \"Marie\",\n  \"cultural_taste\": \"jazz, cin\u00e9ma classique\",\n  \"location\": \"Bordeaux\",\n  \"children\": 2,\n  \"children_ages\": [\"2\", \"8\"],\n  \"past_event\": \"\",\n  \"age\": 40,\n  \"message\": \"\",\n  \"messages\": [{\"type\": \"user\",\"text\": \"Salut\"}, {\"type\": \"assistant\",\"text\": \"Je suis Teddy\"}]\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        1700,
        -300
      ],
      "id": "67c1e4f1-3d16-4fc2-b52b-ec3b44432404",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "tableId": "users",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "id",
              "fieldValue": "={{ $('Listen for incoming events').item.json.message.from.id }}"
            },
            {
              "fieldId": "name",
              "fieldValue": "={{ $('Listen for incoming events').item.json.message.chat.first_name }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        460,
        -840
      ],
      "id": "cedfe58d-7789-4f4d-9688-844487a53400",
      "name": "Supabase_users1",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "52f3a3b6-3b7c-4b58-8762-5d1565e2cde0",
              "leftValue": "={{$('Supabase_users').first().json}}",
              "rightValue": "",
              "operator": {
                "type": "object",
                "operation": "empty",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "2e2c4746-5289-4509-94a3-8a7c03f26bf5",
      "name": "If_user_empty",
      "type": "n8n-nodes-base.if",
      "position": [
        240,
        -530
      ],
      "typeVersion": 2.2
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "a0bf9719-4272-46f6-ab3b-eda6f7b44fd8",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.cultural_taste }}",
              "rightValue": "false"
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "f39841b3-3c91-487e-9def-4a9b74ff84a3",
      "name": "If_all_info",
      "type": "n8n-nodes-base.if",
      "position": [
        2156,
        -530
      ],
      "typeVersion": 2.2
    },
    {
      "parameters": {
        "chatId": "={{ $('Listen for incoming events').first().json.message.from.id }}",
        "text": "={{ $('AI Agent1').item.json.output }}",
        "additionalFields": {
          "appendAttribution": false,
          "parse_mode": "Markdown"
        }
      },
      "id": "4de0cce2-5001-4948-a8b8-9fa14c29ab84",
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3580,
        -920
      ],
      "typeVersion": 1.1,
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Tu es un assistant nomm\u00e9 Teddy, sp\u00e9cialis\u00e9 dans les suggestions de sorties culturelles.\n\nSi l'utilisateur demande une suggestion d'\u00e9v\u00e8nement ou d'activit\u00e9, s\u00e9lectionne l'\u00e9v\u00e8nement ou les \u00e9v\u00e8nements les plus pertinents \u00e0 partir des donn\u00e9es fournies, puis r\u00e9ponds bri\u00e8vement, toujours en fran\u00e7ais, strictement selon le format Markdown adapt\u00e9 \u00e0 Telegram suivant :\n\nOk, sur la base des informations que j'ai, voici des \u00e9v\u00e8nements qui devraient te plaire :\n\n[\ud83c\udfad Le 20 Avril \u00e0 18H - Th\u00e9\u00e2tre \u201cIntra Muros\u201d A.Michalik](https://theatreintramuros.com/programmation/avril)  \n\ud83d\udccd Quartier Graslin  \n\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66 Public : Tout public | \u23f1 Dur\u00e9e : 2h30  \n\ud83d\udcdd Description : une phrase  \n\ud83d\udcb6 Gratuit\n\n[\ud83d\uddbc Le 21 Avril toute la journ\u00e9e - Exposition \u201cles vrais visages\u201d](https://sortiretbouger.com/2332873)  \n\ud83d\udccd Quartier Cambronne  \n\ud83d\udd1e Public : Adulte | \u23f1 Dur\u00e9e : 1h  \n\ud83d\udcdd Description : une phrase  \n\ud83d\udcb6 Payant\n\nImportant :\n\n    Utilise uniquement la syntaxe Markdown sp\u00e9cifique \u00e0 Telegram (MarkdownV2), notamment pour rendre les titres cliquables sous forme : [\ud83c\udfaf Titre](URL)\n\n    Place toujours l'emoji appropri\u00e9 directement devant le titre cliquable.\n\n    Utilise une ligne s\u00e9par\u00e9e pour chaque information compl\u00e9mentaire (quartier, public/dur\u00e9e, description, tarif).\n\n    N'utilise jamais le format 'gras' classique (avec ast\u00e9risques), car il n'est pas toujours support\u00e9 par Telegram. Pr\u00e9f\u00e8re une structuration claire avec des emojis et des sauts de ligne.\n\n\nTout ce que tu sais \u00e0 propos de l'utilisateur :\n{{ $('AI Agent2').item.json.output }}\n\nVoici le message utilisateur, inutile de le r\u00e9p\u00e9ter :\n{{ $('Listen for incoming events').item.json.message.text }}\n{{ $json.text }}\n\nVoici les donn\u00e9es d'\u00e9v\u00e8nement : \n{{ $('AggregateEvents').item.json.output }}\n\nVoici l'historique complet des derniers \u00e9changes avec l'utilisateur tri\u00e9s par ordre chronologique croissant (le dernier est le plus r\u00e9cent) :\n{{ $('AI Agent2').item.json.output.messages.toJsonString() }}\n\n\n",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.8,
      "position": [
        2880,
        -920
      ],
      "id": "b0f398ed-9cd0-4b54-bffb-6bb18cb59508",
      "name": "AI Agent1"
    },
    {
      "parameters": {
        "model": "mistral-medium",
        "options": {
          "temperature": 0.1
        }
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
      "typeVersion": 1,
      "position": [
        2740,
        -600
      ],
      "id": "051aebf5-2fec-40ce-8c99-c547fc0acea7",
      "name": "Mistral Cloud Chat Model",
      "credentials": {
        "mistralCloudApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "options": {}
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        2620,
        -920
      ],
      "id": "0393928e-d447-4681-8fed-f5442656b4c9",
      "name": "Aggregate1"
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "flat_events2",
        "returnAll": true
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        2400,
        -920
      ],
      "id": "5a11ee83-b1e3-44e3-bf20-ec989e9d1b42",
      "name": "Supabase1",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{ $('Listen for incoming events').item.json.message.chat.id }}",
        "text": "=Salut !\nJe m\u2019appelle Teddy et je suis l\u00e0 pour t\u2019aider \u00e0 trouver des id\u00e9es de sorties qui te plairont vraiment. Pour te proposer les \u00e9v\u00e9nements les plus adapt\u00e9s \u00e0 tes go\u00fbts. J'ai donc besoin de te conna\u00eetre un peu mieux ! \n\nQuels types d'\u00e9v\u00e8nements ou de sortie t'int\u00e9ressent ? \n\n(je comprends aussi les vocaux \ud83d\ude09)\n",
        "additionalFields": {
          "appendAttribution": false,
          "parse_mode": "Markdown"
        }
      },
      "id": "6952a658-da64-4229-8179-3952066d5fe9",
      "name": "Telegram2",
      "type": "n8n-nodes-base.telegram",
      "position": [
        700,
        -1220
      ],
      "typeVersion": 1.1,
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "users",
        "filters": {
          "conditions": [
            {
              "keyName": "id",
              "condition": "eq",
              "keyValue": "={{ $('Listen for incoming events').item.json.message.from.id }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "age",
              "fieldValue": "={{ $json.output.age }}"
            },
            {
              "fieldId": "location",
              "fieldValue": "={{ $json.output.location }}"
            },
            {
              "fieldId": "children",
              "fieldValue": "={{ $json.output.children }}"
            },
            {
              "fieldId": "cultural_taste",
              "fieldValue": "={{ $json.output.cultural_taste }}"
            },
            {
              "fieldId": "children_ages",
              "fieldValue": "={{ $json.output.children_ages }}"
            },
            {
              "fieldId": "past_events",
              "fieldValue": "={{ $json.output.past_events }}"
            },
            {
              "fieldId": "messages",
              "fieldValue": "={{ $json.output.messages }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        1940,
        -540
      ],
      "id": "6585dbd9-83d7-4a05-ae16-523ae3e7312c",
      "name": "Supabase Update",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4o-mini",
          "mode": "list",
          "cachedResultName": "gpt-4o-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        3000,
        -620
      ],
      "id": "8324fd61-6287-42bc-b69b-b04fdf6b9de6",
      "name": "OpenAI Chat Model1",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "users",
        "filters": {
          "conditions": [
            {
              "keyName": "id",
              "condition": "eq",
              "keyValue": "={{ $('Listen for incoming events').item.json.message.from.id }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "messages",
              "fieldValue": "={{ [... $('Supabase Update').item.json.messages, {\"type\": \"assistant\", \"text\": $json.output}] }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        3320,
        -920
      ],
      "id": "99a2e724-5892-4e30-aed0-025cb77921be",
      "name": "Supabase Update Assistant message",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Get Voice File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Telegram raw text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Voice or Text": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Voice File": {
      "main": [
        [
          {
            "node": "Voice transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Listen for incoming events": {
      "main": [
        [
          {
            "node": "Supabase",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Supabase": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Voice transcript": {
      "main": [
        [
          {
            "node": "AI Agent2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram raw text message": {
      "main": [
        [
          {
            "node": "AI Agent2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Supabase_users",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Supabase_users": {
      "main": [
        [
          {
            "node": "If_user_empty",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "AI Agent2": {
      "main": [
        [
          {
            "node": "Supabase Update",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent2",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Supabase_users1": {
      "main": [
        [
          {
            "node": "Telegram2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If_user_empty": {
      "main": [
        [
          {
            "node": "Supabase_users1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Voice or Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If_all_info": {
      "main": [
        [
          {
            "node": "Supabase1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Telegram1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent1": {
      "main": [
        [
          {
            "node": "Supabase Update Assistant message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mistral Cloud Chat Model": {
      "ai_languageModel": [
        []
      ]
    },
    "Aggregate1": {
      "main": [
        [
          {
            "node": "AI Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Supabase1": {
      "main": [
        [
          {
            "node": "Aggregate1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Supabase Update": {
      "main": [
        [
          {
            "node": "If_all_info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Supabase Update Assistant message": {
      "main": [
        [
          {
            "node": "Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0313cff4-8b76-4010-9223-b002b6a64fb6",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "3t6LuhUPak9u0iZb",
  "tags": []
}