This workflow follows the Agent → Airtable 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 →
{
"name": "Typeform IA - YT",
"nodes": [
{
"parameters": {
"formId": "keYKI1dJ"
},
"type": "n8n-nodes-base.typeformTrigger",
"typeVersion": 1.1,
"position": [
-80,
360
],
"id": "371e0dd2-0a06-4bbc-bd7f-590c57d12a71",
"name": "Typeform Trigger",
"credentials": {
"typeformApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=syst\u00e8me : Votre r\u00f4le est de r\u00e9cuperer le maximum d'informations sur une personne qui a remplis ces informations dans un formulaire.\n\nOBJECTIFS\nvotre mission est de chercher les informations sur l'entreprise et le nom complet de la personne ainsi que son site web (si remplis).\n\nVoici la r\u00e9ponse de la personne : \n\nPr\u00e9nom : {{ $json['First name'] }}\nNom : {{ $json['Last name'] }}\nNumero Telephone : {{ $json['Phone number'] }}\nEmail : {{ $json.Email }}\nNom Entreprise : {{ $json.Company }}\nSite web : {{ $json['...'] }}\n\nPour chaque attribut de produit que l'expert n'est pas en mesure de d\u00e9terminer, vous pouvez :\n\n1) utiliser l'outil de search_publicdata pour rechercher l'entreprise et ses informations public sur l'INSEE via le nom de l'entreprise. (uniquement les entreprises francaises)\n2) utiliser l'outil de search_instagram_profile pour cherche l'entreprise et son compte sur Instagram.\n3) utiliser l'outil de search_linkedin_profile pour cherche le nom complet et le nom de l'entreprise et r\u00e9cuperer les informations importantes de son compte LinkedIn.\n4) utiliser l'outil de scrape_site_web avec le site web de la personne pour mettre une note sur l'entreprise et son scoring en fonction de ce que l'on offre (si site web fournis)\n5) Si, apr\u00e8s avoir utilis\u00e9 ces outils, vous n'\u00eates toujours pas en mesure de d\u00e9terminer les attributs requis du produit, laissez les donn\u00e9es vides.\n\nUtilisez toutes les informations fournies et collect\u00e9es pour extraire les attributs suivants du produit : note, siret, lien_instagram, lien_linkedIn\n\nCONTRAINTES \n\nFournis un contexte synth\u00e9tique et concis et fais en sorte qu'il soit le meme pour chaque outil",
"hasOutputParser": true,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.7,
"position": [
140,
360
],
"id": "467fa309-6510-4459-9c92-0cf3247899f3",
"name": "AI Agent"
},
{
"parameters": {
"model": "gpt-4o",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.1,
"position": [
80,
580
],
"id": "1f3744aa-1bf8-4aa1-a58e-b1051da638fc",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"name": "search_linkedin_profile",
"description": "=Cet outil te permet de rechercher une personne sur LinkedIn avec le pr\u00e9nom et le nom. Voici le format d'entr\u00e9e :\n\n```\n{\n \"type\": \"object\",\n \"properties\": {\n \"recherche_profile\":{\"type\":\"string\",\"description\":\"le pr\u00e9nom et nom de la personne a rechercher sur LinkedIn\" }\n \"nom_entreprise\":{\"type\":\"string\" }\n \"contexte\": { \"type\": \"string\" },\n }\n}\n```",
"workflowId": {
"__rl": true,
"value": "MaSUzJtxcmz9YqOL",
"mode": "list",
"cachedResultName": "Outil - Scraping LinkedIn Recherche Personne"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"nom_entreprise": "={{ $fromAI(\"nom_entreprise\") }}",
"recherche_profil": "={{ $fromAI(\"recherche_profil\",\"le nom complet Pr\u00e9nom + nom\") }}",
"contexte": "={{ $fromAI(\"contexte\",\"le contexte synth\u00e9tique et concis\") }}"
},
"matchingColumns": [],
"schema": [
{
"id": "recherche_profil",
"displayName": "recherche_profil",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "nom_entreprise",
"displayName": "nom_entreprise",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "contexte",
"displayName": "contexte",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2,
"position": [
700,
580
],
"id": "10fd74c5-f8be-4778-9e63-09a8fe9fb0d1",
"name": "LinkedIn Recherche"
},
{
"parameters": {
"name": "search_instagram_profile",
"description": "=Cet outil te permet de rechercher une entreprise sur Instagram avec le nom de l'entreprise. Voici le format d'entr\u00e9e :\n\n```\n{\n \"type\": \"object\",\n \"properties\": {\n \"compte_instagram\":{\"type\":\"string\",\"description\":\"le compte instagram de l'entreprise\" }\n \"contexte\": { \"type\": \"string\" },\n }\n}\n```",
"workflowId": {
"__rl": true,
"value": "DWvBYFbV95txNmHI",
"mode": "list",
"cachedResultName": "Outil - Recherche Instagram"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"compte_instagram": "={{ $fromAI(\"compte_instagram\",\"le nom du compte instagram de l'entreprise. Si pas fournis mettre nom de l'entreprise\") }}",
"contexte": "={{ $fromAI(\"contexte\",\"le contexte synth\u00e9tique et concis\") }}"
},
"matchingColumns": [],
"schema": [
{
"id": "compte_instagram",
"displayName": "compte_instagram",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "contexte",
"displayName": "contexte",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2,
"position": [
540,
580
],
"id": "52449be4-2eed-4155-ac99-f2d7e7b9b6c3",
"name": "Instagram Recherche"
},
{
"parameters": {
"name": "search_publicdata",
"description": "=Cet outil te permet de rechercher une entreprise avec le nom de l'entreprise. Voici le format d'entr\u00e9e :\n\n```\n{\n \"type\": \"object\",\n \"properties\": {\n \"nom_entreprise\":{\"type\":\"string\",\"description\":\"le nom de l'entreprise\" },\n \"pays\":{\"type\":\"string\",\"description\":\"le pays de la societe si aucun sp\u00e9cifier mettre par d\u00e9faut fr. Exemple : en,fr,sa,au...\" }\n \"contexte\": { \"type\": \"string\" },\n }\n}\n```",
"workflowId": {
"__rl": true,
"value": "KOhfYl71bDDGihxh",
"mode": "list",
"cachedResultName": "Outil - Scrape INSEE Public Data"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"contexte": "={{ $fromAI(\"contexte\",\"le contexte synth\u00e9tique et concis\") }}",
"pays": "={{ $fromAI(\"pays\",\"le pays de la personne fr ou autre\") }}",
"nom_entreprise": "={{ $fromAI(\"nom_entreprise\") }}"
},
"matchingColumns": [],
"schema": [
{
"id": "nom_entreprise",
"displayName": "nom_entreprise",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "pays",
"displayName": "pays",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "contexte",
"displayName": "contexte",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2,
"position": [
400,
580
],
"id": "3d86559c-f686-4d89-a129-5b89a39b7490",
"name": "Recherche Donnee Publique"
},
{
"parameters": {
"name": "scrape_site_web",
"description": "=Cet outil te permet d'analyser le site web de la personne et d'en d\u00e9duire une note pour tes services.\n\n```\n{\n \"type\": \"object\",\n \"properties\": {\n \"site_web\":{\"type\":\"string\"},\n \"contexte\": { \"type\": \"string\", }\n }\n}\n```\n\nLe contexte doit \u00eatre pr\u00e9cis et synth\u00e9tique.",
"workflowId": {
"__rl": true,
"value": "841EtmY3HGxYkt7U",
"mode": "list",
"cachedResultName": "Outil Scraping Site Web"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"site_web": "={{ $fromAI(\"site_web\") }}",
"contexte": "={{ $fromAI(\"contexte\",\"le contexte synth\u00e9tique et concis\") }}"
},
"matchingColumns": [],
"schema": [
{
"id": "site_web",
"displayName": "site_web",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "contexte",
"displayName": "contexte",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2,
"position": [
240,
580
],
"id": "ac68e2f2-6ccf-4141-9f5b-e5fbf3253674",
"name": "Scrape WebSite"
},
{
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"lien_instagram\": {\n\t\t\t\"type\": \"string\",\n \"description\":\"le compte instagram de l'entreprise sinon n/a\"\n\t\t},\n\t\t\"lien_linkedin\": {\n\t\t\t\"type\": \"string\",\n \"description\":\"le compte linkedin de la personne\"\n\t\t\t\n\t\t},\n \"nom_entreprise\": {\n\t\t\t\"type\": \"string\"\n\t\t\t\n\t\t},\n \"siret\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\":\"le num\u00e9ro de siret de l'entreprise\"\n\t\t},\n \n \"prenom\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"nom\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"site_web\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"note\": {\n\t\t\t\"type\": \"number\"\n\t\t},\n \"numero_telephone\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"mail\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
840,
580
],
"id": "b65e2273-7158-4332-be7a-fd8c40fc6844",
"name": "Structured Output Parser"
},
{
"parameters": {
"operation": "create",
"base": {
"__rl": true,
"value": "app0bL5NvzsJ6MyzJ",
"mode": "list",
"cachedResultName": "TypeForm Base",
"cachedResultUrl": "https://airtable.com/app0bL5NvzsJ6MyzJ"
},
"table": {
"__rl": true,
"value": "tblGCVVshwHDCUsSO",
"mode": "list",
"cachedResultName": "Table 1",
"cachedResultUrl": "https://airtable.com/app0bL5NvzsJ6MyzJ/tblGCVVshwHDCUsSO"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"Nom Complet": "={{ $json.output.prenom }} {{ $json.output.nom }}",
"Email": "={{ $json.output.mail }}",
"Num\u00e9ro de t\u00e9l\u00e9phone": "={{ $json.output.numero_telephone }}",
"Note": "={{ $json.output.note }}",
"Status": "Lead TypeForm #1",
"URL Instagram": "={{ $json.output.lien_instagram }}",
"URL LinkedIn": "={{ $json.output.lien_linkedin }}",
"Siret": "={{ $json.output.siret }}",
"Site web": "={{ $json.output.site_web }}",
"Nom Entreprise": "={{ $json.output.nom_entreprise }}"
},
"matchingColumns": [],
"schema": [
{
"id": "Nom Complet",
"displayName": "Nom Complet",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Email",
"displayName": "Email",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Nom Entreprise",
"displayName": "Nom Entreprise",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Num\u00e9ro de t\u00e9l\u00e9phone",
"displayName": "Num\u00e9ro de t\u00e9l\u00e9phone",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Note",
"displayName": "Note",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "number",
"readOnly": false,
"removed": false
},
{
"id": "Status",
"displayName": "Status",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "options",
"options": [
{
"name": "Lead TypeForm #1",
"value": "Lead TypeForm #1"
},
{
"name": "Lead TypeForm #2",
"value": "Lead TypeForm #2"
}
],
"readOnly": false,
"removed": false
},
{
"id": "URL Instagram",
"displayName": "URL Instagram",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "URL LinkedIn",
"displayName": "URL LinkedIn",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Siret",
"displayName": "Siret",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Site web",
"displayName": "Site web",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.airtable",
"typeVersion": 2.1,
"position": [
480,
280
],
"id": "0e591518-e4e0-4fe6-899b-e935c399d2c6",
"name": "Airtable",
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "benoit.ferrere11@gmail.com",
"subject": "Nouveau Leads",
"message": "=<p><strong>Nouveau Leads</strong> qui a rempli le TypeForm </p> <p> </p> \n<p><strong>Pr\u00e9nom / Nom : {{ $json.output.prenom }} {{ $json.output.nom }}</strong></p> \n<p><strong>Email {{ $json.output.mail }}</strong></p> <p><strong>Num\u00e9ro de t\u00e9l\u00e9phone : {{ $json.output.numero_telephone }}</strong></p> \n<p><strong>Score par l'IA :\n {{ $json.output.note }}</strong></p> \n<p><strong>Site Web : {{ $json.output.site_web }}</strong></p> \n<p><strong>Siret : {{ $json.output.siret }}</strong></p> \n<p><strong>Profile LinkedIn : {{ $json.output.lien_linkedin }}</strong></p> \n<p><strong>Profile Instagram : {{ $json.output.lien_instagram }}</strong></p>",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
720,
360
],
"id": "d3724d04-7598-4b13-b8bd-f3bd178c9090",
"name": "Gmail",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "fd478277-ed23-4e94-81d1-7b9f36ca7463",
"leftValue": "={{ $json.output.note }}",
"rightValue": 4,
"operator": {
"type": "number",
"operation": "gte"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
480,
400
],
"id": "8cb0ca53-8a67-4054-8575-21a909a85487",
"name": "If"
},
{
"parameters": {
"url": "=https://api.insee.fr/api-sirene/3.11/siren?q=periode(denominationUniteLegale:\"{{ $json.denominationUniteLegale }}\")",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
},
{
"name": "X-INSEE-Api-Key-Integration",
"value": "={{ $('INSEE API KEY').all()[0].json['X-INSEE-Api-Key-Integration'] }}"
}
]
},
"options": {}
},
"id": "365d1f5e-da3c-4d26-9062-64569d5b7af1",
"name": "Find Company in SIREN database",
"type": "n8n-nodes-base.httpRequest",
"position": [
-760,
520
],
"typeVersion": 4.2,
"alwaysOutputData": false,
"onError": "continueErrorOutput"
},
{
"parameters": {
"url": "=https://api.insee.fr/api-sirene/3.11/siret/{{ $json.unitesLegales[0].siren }}{{ $json.unitesLegales[0].periodesUniteLegale[0].nicSiegeUniteLegale }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
},
{
"name": "X-INSEE-Api-Key-Integration",
"value": "={{ $('INSEE API KEY').all()[0].json['X-INSEE-Api-Key-Integration'] }}"
}
]
},
"options": {}
},
"id": "646a9fe3-28ab-4139-9c0c-472864167eb5",
"name": "Request all data from SIREN database",
"type": "n8n-nodes-base.httpRequest",
"position": [
-580,
200
],
"typeVersion": 4.2
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e6a7d9e7-3d53-4f08-bbfc-4709cf056424",
"name": "denominationUniteLegale",
"value": "={{ $('Workflow Input Trigger').item.json.nom_entreprise.toLowerCase().replace(/\\s+/g, '') }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1060,
520
],
"id": "952e7e3b-5519-4d59-8f05-0c451236d73a",
"name": "Edit Fields"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "{\n \"status\":\"La r\u00e9gion demand\u00e9e ne supporte pas la recherche par L'INSEE seul les entreprise francaises sont r\u00e9pertori\u00e9es\"\n}\n",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1360,
520
],
"id": "d64a0eeb-6b7b-4ceb-8479-6e330d6086fe",
"name": "Reponse Entreprise Pas FR"
},
{
"parameters": {
"inputSource": "jsonExample",
"jsonExample": "{\n \"nom_entreprise\": \"Catching Box\",\n \"pays\": \"fr\",\n \"contexte\": \"contexte\"\n}"
},
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
-1380,
240
],
"id": "04bf01eb-6446-4574-b807-4b5f293ffe14",
"name": "Workflow Input Trigger",
"disabled": true
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-900,
520
],
"id": "76b69b74-a68a-4e92-8895-f61cc76075c4",
"name": "Wait"
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-620,
380
],
"id": "320e9c36-560f-4f72-bbda-c61f0dd6dbec",
"name": "Wait1"
},
{
"parameters": {
"jsCode": "const etab = $input.all().flatMap(item => item.json.etablissement)\n\nconst data = etab.map(item => ({\n siret:item.siret,\ndenominationUniteLegale:item.uniteLegale.denominationUniteLegale,\n periodeEtablissement:item.periodesEtablissement.map(periode => ({dateDebut:periode.dateDebut,dateFin:periode.dateFin})),\n adresseEtablissement:{\n complement: item.adresseEtablissement.complementAdresseEtablissement,\n adresse: item.adresseEtablissement.typeVoieEtablissement+\" \"+item.adresseEtablissement.libelleVoieEtablissement+\" \"+item.adresseEtablissement.codePostalEtablissement+\" \"+item.adresseEtablissement.libelleCommuneEtablissement\n }\n \n}))\n\nreturn data;\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-440,
200
],
"id": "5eb88b1e-97d2-4200-9497-df5d755f14a4",
"name": "Code"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "={\n \"status\":\"R\u00e9cuperation des donn\u00e9es Entreprise avec succ\u00e8s\",\n\"donn\u00e9es\":{\n \"siret\":\"{{ $json.siret }}\",\n \"denominationUniteLegale\":\"{{ $json.denominationUniteLegale }}\",\n\"periodeEtablissement\":{{ $json.periodeEtablissement.toJsonString() }},\n\"adresseEtablissement\":{{ $json.adresseEtablissement.toJsonString() }}\n}\n}\n",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-300,
200
],
"id": "09328c69-c2e2-4ba3-abf3-2fa2bf551497",
"name": "Reponse "
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e993e665-cf31-48b1-8ca8-a4829dc82642",
"name": "X-INSEE-Api-Key-Integration",
"type": "string",
"value": ""
}
]
},
"options": {}
},
"id": "09c81403-d60e-4152-aa64-d6acbbc1a187",
"name": "INSEE API KEY",
"type": "n8n-nodes-base.set",
"position": [
-980,
220
],
"typeVersion": 3.4
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "{\n \"status\": \"erreur\",\n \"erreur\": \"Erreur sur la recherche dans la base INSEE\"\n}\n",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-320,
540
],
"id": "6c459a0f-ff73-4b04-a50a-f789c1eaeade",
"name": "Edit Fields1"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "1dea6916-8ade-47b1-9f80-8ee0401f708e",
"leftValue": "={{ $json.pays }}",
"rightValue": "fr",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-1200,
240
],
"id": "be612cfa-0822-4e3c-a9d7-d193d04047d4",
"name": "If1"
},
{
"parameters": {
"url": "https://linkedin-api8.p.rapidapi.com/search-people",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "keywords",
"value": "={{ $json.recherche_profil }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
620,
-220
],
"id": "82e06815-6bb0-4d1b-865a-5198ce10234e",
"name": "Recherche Personne LinkedIn API",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "{\n \"erreur\": \"Pas de profil Match\u00e9e avec Entreprise / Prenom Nom trouv\u00e9\"\n}\n",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1380,
-20
],
"id": "9d05bceb-6a0e-46bf-bbbf-154f3ac7a79c",
"name": "R\u00e9ponse Pas de Profil Trouv\u00e9"
},
{
"parameters": {
"jsCode": "// Aplati la liste et extrait les objets\n\n\nconst liste = $input.all().flatMap(item => item.json.data.items);\n\nconst liste_filtre = liste.map(item => ({\n fullName:item.fullName,\n headLine:item.headline,\n profileUrl:item.profileURL,\n username:item.username\n \n}))\n\nreturn [{liste_filtre} ];\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
760,
-220
],
"id": "4970a76b-b38e-46ee-b3c6-4c2372ef122a",
"name": "Match Entreprise / Profil Recherche"
},
{
"parameters": {
"url": "https://linkedin-api8.p.rapidapi.com/data-connection-count",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "username",
"value": "={{ $json.username }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1720,
-380
],
"id": "dcfb67ca-6fef-461d-b763-180ac3157795",
"name": "Connections & Data LinkedIn API",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "https://linkedin-api8.p.rapidapi.com/get-profile-recent-activity-time",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "username",
"value": "={{ $json.username }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1720,
-260
],
"id": "0ccc6359-3e30-492a-bf0a-cad5755c7185",
"name": "Activity Time Profile",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"numberInputs": 4
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
2040,
-260
],
"id": "4d86988f-2967-4320-8409-428a26271bb4",
"name": "Merge"
},
{
"parameters": {
"url": "https://linkedin-api8.p.rapidapi.com/get-profile-posts",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "username",
"value": "={{ $json.username }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1720,
-140
],
"id": "c2b1ee8d-23f4-49a4-bd67-6e3177ae414d",
"name": "Last Post",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const data = $input.all().map(item => item.json.data)\n\nconst activity = data.map(item => {return {date:item.date,recentActivity:item.recentActivity}})\n\nreturn activity;"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1860,
-260
],
"id": "36e5720a-e34b-4ce6-8bf9-bb1d1e5b6b5e",
"name": "Activite Recente"
},
{
"parameters": {
"jsCode": "const last_post = $input.all().flatMap(item => item.json.data)\n\nconst filter_last_post = last_post.map(item => {return {text:item.text,postUrl:item.postUrl,postedAt:item.postedAt,postedDate:item.postedDate}})\n\nreturn [{dernier_post:filter_last_post[0]}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1860,
-120
],
"id": "543dc483-b302-405d-913d-d236dfc4e4fb",
"name": "Last Post2"
},
{
"parameters": {
"jsCode": "// R\u00e9cup\u00e8re tous les \u00e9l\u00e9ments d'entr\u00e9e\nconst tousLesElements = $input.all();\n\n// Filtre les \u00e9l\u00e9ments pour ne garder que ceux dont 'data' contient 'geo'\n// Puis, restructure chaque objet pour inclure uniquement 'connection', 'follower' et 'data.geo'\nconst resultat = tousLesElements\n .filter(item => item.json.data && item.json.data.geo)\n .map(item => ({\n connection: item.json.connection,\n follower: item.json.follower,\n position: {\n geo: item.json.data.geo\n }\n }));\n\n// Retourne le tableau restructur\u00e9\nreturn resultat;\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1860,
-380
],
"id": "5d5a8d91-145d-4d74-85a7-35dbd1649c72",
"name": "Follower Relation "
},
{
"parameters": {
"promptType": "define",
"text": "=SYSTEME\nTu es expert en analyse de profil LinkedIn et tu assures la recherche de profil LinkedIn de ceux ayant remplit un formulaire. Tu as fait une recherche sur LinkedIn avec le nom complet d'une personne.\n\nTon objectif est r\u00e9cuperer uniquement les informations de profil de la la personne qui correspond en nom complet et en nom d'entreprise recherch\u00e9.\n\nVoici le profil que tu recherches: \n\nNom Complet : {{ $('Workflow Input Trigger').item.json.recherche_profil }}\nNom Entreprise : {{ $('Workflow Input Trigger').item.json.nom_entreprise }}\n\nContexte si n\u00e9cessaire : \n{{ $('Workflow Input Trigger').item.json.contexte }}\n\nCONTRAINTES \n\nN'invente aucune information si l'informations que tu cherches n'est pas disponible tu dois choisir le premiere recherche dans la liste.\n\n<liste_recherche>\n{{ $json.liste_filtre.toJsonString() }}\n</liste_recherche>",
"hasOutputParser": true
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.5,
"position": [
920,
-220
],
"id": "654d6753-c0d1-40d1-97e3-ab24a0063c34",
"name": "Basic LLM Chain"
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
2180,
-240
],
"id": "a0442e2e-727b-4fa1-a18b-f9e34d4402d0",
"name": "Aggregate"
},
{
"parameters": {},
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
1720,
20
],
"id": "1eccde90-2a90-4cba-809a-a393d1442535",
"name": "No Operation, do nothing"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "c089f10e-6863-4fc5-a3dc-8b512873879e",
"leftValue": "={{ $json.output }}",
"rightValue": "",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1240,
-220
],
"id": "6833a21b-c6db-40d9-a558-93ade13230d6",
"name": "If2"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "fea19860-1d7e-415c-a98a-4ff2b25f6464",
"name": "profileURL",
"value": "={{ $json.output.profileURL }}",
"type": "string"
},
{
"id": "4080034d-4c43-4b5e-866f-3d5e47be07f2",
"name": "username",
"value": "={{ $json.output.username }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1380,
-300
],
"id": "c169a616-600b-4b50-99ae-7cf5f7d0e86b",
"name": "Edit Fields2"
},
{
"parameters": {
"model": "gpt-4o",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.1,
"position": [
920,
-80
],
"id": "5c9dd1a7-b124-4945-9df2-889d71ed466e",
"name": "OpenAI Chat Model1",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"fullName\": {\n \"type\": \"string\"\n },\n \"headline\": {\n \"type\": \"string\"\n },\n \"summary\": {\n \"type\": \"string\"\n },\n \"profilePicture\": {\n \"type\": \"string\" \n },\n \"location\": {\n \"type\": \"string\"\n },\n \"profileURL\": {\n \"type\": \"string\"\n },\n \"username\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fullName\",\n \"headline\",\n \"summary\",\n \"profilePicture\",\n \"location\",\n \"profileURL\",\n \"username\"\n ]\n}\n"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
1120,
-80
],
"id": "bdddd900-b6f2-4962-b064-b5701458566a",
"name": "Structured Output Parser1"
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
460,
-220
],
"id": "f4c98e2c-5416-436b-b103-d05aeef733e7",
"name": "Wait4"
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
1560,
-380
],
"id": "0d95c85c-da89-43f6-ac39-71f8e46eae9c",
"name": "Wait5"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "={\n \"status\": \"Succ\u00e8s R\u00e9cuperation du profil LinkedIn\",\n \"donnees\":{{$json.toJsonString()}}\n}\n ",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
2340,
-240
],
"id": "8be35fb7-9d34-4bdd-99a8-94745ba8a4ed",
"name": "Reponse 1"
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
1560,
-260
],
"id": "d2886c3a-9529-4c15-b021-dde65f6a82cb",
"name": "Wait6"
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
1560,
-140
],
"id": "d1327917-ef75-4db8-b4fc-ab4fa261221a",
"name": "Wait7"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.2,
"position": [
320,
-220
],
"id": "5954d613-3c83-4f2a-860a-eeaa6a4ba2d8",
"name": "Execute Workflow",
"disabled": true
},
{
"parameters": {
"method": "POST",
"url": "https://rocketapi-for-instagram.p.rapidapi.com/instagram/search",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "query",
"value": "={{ $json.compte_instagram }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1100,
-120
],
"id": "fd8b4ddb-a56d-464e-b9f3-0761dfe2a00c",
"name": "Recherche Instagram",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const search_users = $input.all().flatMap(item => item.json.response.body.users)\n\nfilter_su = search_users.map(item =>({\n position: item.position,\n username:item.user.username,\n id:item.user.id\n \n}))\n\nreturn filter_su;"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-940,
-120
],
"id": "2790642b-de76-44fc-a337-d3ac7368dedc",
"name": "Filter Search Users"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
-760,
-120
],
"id": "146eeba4-e560-4268-b3a8-aa133504046a",
"name": "Loop Over Items"
},
{
"parameters": {
"method": "POST",
"url": "https://rocketapi-for-instagram.p.rapidapi.com/instagram/user/get_info_by_id",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "id",
"value": "={{ $json.id }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-440,
-20
],
"id": "8165fdf5-3b9d-41c7-9d6a-d2671016a298",
"name": "Recherche Profil API",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "{\n\"status\":\"Aucun Profil avec le contexte donn\u00e9e et la recherche n'ont pu aboutir \u00e0 un profil\"\n\n}",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
100,
-160
],
"id": "ba6481d2-4125-4cf6-ad41-71357abba344",
"name": "Reponse Non trouve"
},
{
"parameters": {
"jsCode": "const response = $input.all().flatMap(item => item.json.response.body.user)\n\nconst loop_data = $('Loop Over Items').all().flatMap(item => ({position:item.json.position,username:item.json.username}))\n\nconst username =\n\nuser_data = response.map(item => ({\n position:loop_data[0].position,\n id:item.id,\n full_name:item.full_name,\n biography:item.biography,\n follower_count:item.follower_count,\n following_count:item.following_count,\n link:\"https://www.instagram.com/\"+loop_data[0].username\n}))\n\nreturn user_data;"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-280,
-20
],
"id": "997a1c34-4617-4689-934a-dfcd01dc8676",
"name": "Code1"
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"destinationFieldName": "liste_profil_insta",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
-600,
-160
],
"id": "93a04d98-a292-4be5-9890-578810dc729d",
"name": "Aggregate1"
},
{
"parameters": {
"promptType": "define",
"text": "=Je vais te fournir une liste de recherche de profil Instagram ton but et de me renvoyer le plus pertinent dans le contexte et la recherche que je demande. Ton choix de profil doit \u00eatre pertinent pour le contexte donnee.\n\n<liste_recherche>\n{{ $json.liste_profil_insta.toJsonString() }}\n</liste_recherche>\n\nContexte si n\u00e9cessaire : \n\n{{ $('Workflow Input Trigger').item.json.contexte }}",
"hasOutputParser": true
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.5,
"position": [
-400,
-260
],
"id": "41f461ea-8a5a-4843-a390-13916e61c21d",
"name": "Basic LLM Chain1"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
-440,
-140
],
"id": "8bdf3486-3ffb-4051-851e-ed7a6eb3a293",
"name": "OpenAI Chat Model2",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"position\": {\n\t\t\t\"type\": \"number\",\n \"description\":\"position dans la recherche\"\n\t\t},\n\t\t\"id\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\":\"l'id de la personne\"\n\t\t},\n \"full_name\":{\n \"type\":\"string\"\n },\n \"biography\":{\n \"type\":\"string\"\n },\n \"follower_count\":{\n \"type\":\"number\"\n },\n \"following_count\":{\n \"type\":\"number\"\n },\n \"link\":{\n \"type\":\"string\",\n \"description\":\"url pour aller sur la page du profil instagram\"\n }\n\n\t}\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
-180,
-140
],
"id": "d7a3278b-99b2-49bc-9a1c-deabd0dacda5",
"name": "Structured Output Parser2"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "0a5ae05c-f3a5-497f-94a6-7435bd0d91b3",
"leftValue": "={{ $json.output }}",
"rightValue": "",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-100,
-260
],
"id": "34a4e78e-de4e-426c-9206-11ba7781109a",
"name": "If3"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "={\"status\":\"Profil trouv\u00e9\",\"profil\":{{ $json.output.toJsonString() }}}",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
100,
-340
],
"id": "6459370a-676c-4d54-af99-2f8b237b5422",
"name": "Edit Fields3"
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-600,
-20
],
"id": "dbb2532c-f694-46b5-9b83-ffdc5e5d4693",
"name": "Wait2"
},
{
"parameters": {
"amount": 10
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-1240,
-120
],
"id": "0f7b83f9-e37b-4b34-a94a-6c9fbf6d4fd2",
"name": "Wait3"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.2,
"position": [
-1400,
-120
],
"id": "ca3257e0-ea14-45ff-bc1e-f0c9513458a7",
"name": "Execute Workflow1",
"disabled": true
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "44eea5f0-0e24-4778-a123-c5e000e38b79",
"leftValue": "={{ $json.site_web }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1180,
380
],
"id": "651716ac-e85e-4fba-abb6-56d679e09e8e",
"name": "Si Siteweb remplis"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "081ab571-be19-4193-a0e5-6a26ec9df95d",
"name": "site_web",
"value": "={{ $json.site_web }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1340,
280
],
"id": "6d3bca90-c78c-4a24-9f20-1377b259efec",
"name": "Site Web"
},
{
"parameters": {
"url": "=https://r.jina.ai/{{ $json.site_web }}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1580,
280
],
"id": "6e3d6239-22ed-456f-ae3d-1be8b0c92763",
"name": "R\u00e9cuperer Site Web Markdown"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "={\n \"status\": \"Le site web de la personne \u00e0 \u00e9tait analys\u00e9 avec succ\u00e8s\",\n \"site_web\":\"{{ $('Site Web').item.json.site_web }}\",\n \"note\":{{ $json.output.note }}\n}\n ",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
2340,
280
],
"id": "78db8ac1-feac-47f5-ba9e-5962195fc4d0",
"name": "Reponse"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "{\n \"status\":\"Pas de site web fournis\"\n}\n",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1340,
440
],
"id": "e59a0606-38a2-477d-8dab-379f4e5b16e4",
"name": "Reponse Pas de site Web"
},
{
"parameters": {
"promptType": "define",
"text": "=Voici la page d'acceuil au format Markdown :\n\n {{ $json.data }}\n\nContexte si n\u00e9cessaire : \n\n{{ $('Si Siteweb remplis').item.json['le contexte'] }}\n",
"hasOutputParser": true,
"options": {
"systemMessage": "CONTEXTE \nTu es un expert pour l'entreprise de Catchingbox. Tu as enormement d'experience dans toutes l'analyse des clients que CatchingBox ont eu dans le pass\u00e9. Ton but est de rapidement analyser le site web et fournir une note.\n\nDESCRIPTION DE CATCHING BOX ET DE LENTREPRISE\n\nCatchingbox est une entreprise sp\u00e9cialis\u00e9e dans la location de photobooths pour divers \u00e9v\u00e9nements, qu'ils soient priv\u00e9s ou professionnels. Le site propose plusieurs mod\u00e8les de bornes photo, notamment le Minibooth, le Photobooth et le Selfiering, tous con\u00e7us pour capturer et imprimer instantan\u00e9ment des souvenirs m\u00e9morables.\n\nLes fonctionnalit\u00e9s offertes incluent la cr\u00e9ation de cadres photo personnalis\u00e9s, l'envoi instantan\u00e9 des photos par SMS, la r\u00e9alisation de GIFs et de Boomerangs, ainsi que des d\u00e9guisements digitaux gr\u00e2ce \u00e0 la r\u00e9alit\u00e9 augment\u00e9e. De plus, un microsite personnalis\u00e9 est disponible pour chaque \u00e9v\u00e9nement, permettant aux invit\u00e9s de consulter et partager leurs photos en ligne.\n\nCatchingbox op\u00e8re dans plusieurs villes fran\u00e7aises, notamment Paris, Nice, Monaco, Marseille et Avignon. La r\u00e9servation en ligne est simplifi\u00e9e : s\u00e9lection de l'agence, choix des dates, personnalisation du photobooth, r\u00e9cup\u00e9ration de la borne photo 24 heures avant l'\u00e9v\u00e9nement, et retour en magasin apr\u00e8s utilisation.\n\nOBJECTIFS \nTu as pour objectif de faire du lead scoring pour des clients ayant remplis leurs informations personnels dans un formulaire. Analyses le site web d'une personne int\u00e9ress\u00e9 qui a remplis le formulaire pour pouvoir fournir une note sur 10\n\nETAPES\nAnalyse le site web r\u00e9cuperer\nDonner une note sur 10\n\nCONTRAINTES\n\nLa Note doit \u00eatre sur 10"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.7,
"position": [
1820,
280
],
"id": "a14be6c1-f7b3-4193-8b04-0a81d015b123",
"name": "AI Agent1"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
1780,
480
],
"id": "f0dd208c-fdbc-416e-bf17-7deb5af30b10",
"name": "OpenAI Chat Model3",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsonSchemaExample": "{\n\t\"note\":10\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
2100,
460
],
"id": "35c87ed8-89b8-4624-a5e0-bb0ddc78b453",
"name": "Structured Output Parser3"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.2,
"position": [
1020,
380
],
"id": "629c6152-7abd-4fb7-8cc4-ea9216159722",
"name": "Execute Workflow2",
"disabled": true
},
{
"parameters": {
"content": "## Scraping + Scoring Site Web",
"height": 520,
"width": 1560,
"color": 5
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
960,
180
],
"id": "c55a861f-7d7f-4e38-b9c0-c2b28198b969",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## Scraping INSEE (FR uniquement)",
"height": 520,
"width": 1300,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1420,
180
],
"id": "e6e0e340-2fc1-4468-82e2-92f56152a43e",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## Scraping Instagram",
"height": 580,
"width": 1720
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1420,
-400
],
"id": "f0c43151-ba6a-48c1-b644-ec03c1790f54",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "## Scraping LinkedIn",
"height": 580,
"width": 2220,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
300,
-400
],
"id": "ff05ccf9-516c-487a-b5b0-e0aa5fe64d8f",
"name": "Sticky Note3"
},
{
"parameters": {
"content": "# Agent IA Formulaire",
"height": 520,
"width": 1080,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-120,
180
],
"id": "673ebec6-c0c2-4af9-a885-46cadc2dfa61",
"name": "Sticky Note4"
}
],
"connections": {
"Typeform Trigger": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"LinkedIn Recherche": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Instagram Recherche": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Recherche Donnee Publique": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Scrape WebSite": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Airtable",
"type": "main",
"index": 0
},
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Airtable": {
"main": [
[]
]
},
"If": {
"main": [
[
{
"node": "Gmail",
"type": "main",
"index": 0
}
]
]
},
"Find Company in SIREN database": {
"main": [
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Request all data from SIREN database": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Workflow Input Trigger": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Find Company in SIREN database",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Request all data from SIREN database",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Reponse ",
"type": "main",
"index": 0
}
]
]
},
"INSEE API KEY": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"If1": {
"main": [
[
{
"node": "INSEE API KEY",
"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.
airtableTokenApigmailOAuth2httpHeaderAuthopenAiApitypeformApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow automates the extraction of structured insights from Typeform responses, leveraging AI to analyse submissions and enrich them with external data for deeper understanding. It's ideal for researchers, marketers, or analysts handling surveys on topics like audience preferences or market trends, saving hours of manual data processing. The key step involves an AI agent powered by OpenAI that processes the form data, triggers targeted searches via sub-workflows for LinkedIn profiles, Instagram details, and public records, then parses everything into a clean Airtable base for easy review and action.
Use this when you need quick, AI-driven augmentation of Typeform feedback with real-time web and social data, such as validating respondent claims or building lead profiles. Avoid it for simple surveys without research needs, or if privacy regulations restrict data scraping. Common variations include swapping OpenAI for another LLM or focusing searches on specific platforms like just LinkedIn for B2B targeting.
About this workflow
Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.
Source: https://github.com/Stirito/N8N_Workflow_Template/blob/3a287db93553c1da2bac6454d4792cdc8bdbc4d1/Typeform_IA___YT.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.
The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, C
The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”
Agent Nodes. Uses lmChatOpenAi, slack, stopAndError, errorTrigger. Event-driven trigger; 72 nodes.
Who is this for? Agencies, consultants, and service providers who conduct discovery calls and need to quickly turn conversations into professional proposals.
🤖🧑💻 AI Agent for Top n8n Creators Leaderboard Reporting. Uses httpRequest, lmChatOpenAi, executeWorkflowTrigger, toolWorkflow. Event-driven trigger; 49 nodes.