{
  "id": "un7napkeeNqhsSTE",
  "meta": {
    "instanceId": "8a504c330a8af367d7ed05b4044a4b4aaee4fb455a8108bad06ec0352cc67ada",
    "templateCredsSetupCompleted": true
  },
  "name": "AI-Powered Quote Generator from Call Transcripts using Multi-Agent Architecture",
  "tags": [
    {
      "id": "VSLF4WIY42Mqu5lU",
      "name": "Thinking Agent",
      "createdAt": "2025-06-19T12:57:22.994Z",
      "updatedAt": "2025-06-19T12:57:22.994Z"
    },
    {
      "id": "YlbieUES4bxw9FbE",
      "name": "Leads",
      "createdAt": "2025-05-16T12:31:13.495Z",
      "updatedAt": "2025-05-16T12:31:13.495Z"
    },
    {
      "id": "egZAdMh3A9gDNYEr",
      "name": "Invoice",
      "createdAt": "2025-05-17T18:51:06.870Z",
      "updatedAt": "2025-05-17T18:51:06.870Z"
    }
  ],
  "nodes": [
    {
      "id": "c764a0b0-4ee2-44e5-a702-5d1e85a880c6",
      "name": "Think",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        2288,
        32
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "721acc5e-12c7-4baa-af6c-82c64c9f63de",
      "name": "Calculator",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        2576,
        896
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8639f845-89fa-4b80-b198-92d09ade75de",
      "name": "Pricing agent",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        2272,
        656
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "You are the Pricing Agent for an AI automation agency.\nYour role: produce a professional, consistent, competitive, and profitable pricing structure, designed to be directly injected into a PandaDoc pricing table.\n\n🎯 Main Objective\n\nBuild an optimal pricing offer, composed of 1 to 3 products maximum, guaranteeing a margin above 80% while remaining:\n- Credible\n- Aligned with the SOW (Scope of Work)\n- Comparable or superior to market standards\n\n🧠 Available Resources\n\nYou have access to:\n\n1. Internal services catalog\n   - Service titles\n   - Internal unit prices\n   - Standard descriptions\n   You can and MUST adapt each line to the client's case.\n\n2. Internal calculation tool\n   Use it to:\n   - Calculate margin\n   - Test different price combinations\n   - Adjust for the best value/profitability ratio\n\n3. Perplexity Tool\n   Mandatory if you are uncertain.\n   Use it to:\n   - Verify market prices\n   - Analyze competitor rates\n   - Understand the technologies involved\n   - Identify similar costs (SaaS, AI, automations)\n   \n   If you do not perform a search, the response is automatically considered invalid.\n\n4. Your update_pricing tool\n   Allows you to send the fields you have decided to integrate into the final quote.\n   You are not required to fill all fields, but minimum one product.\n   Deposit percentage is mandatory.\n\n🧾 Detailed Mission\n\n1. Analyze the SOW (content, complexity, number of automations, AI involved)\n2. Deduce real deliverables: audit, build, AI, dashboards, follow-ups, workflows, etc.\n3. Build 1 to 3 products maximum, each being an autonomous deliverable:\n   - Explicit title\n   - Professional description\n   - Price (excl. tax)\n   - Quantity (default 1)\n4. Justify each product based on the scope\n5. Calculate prices to guarantee >80% margin\n6. Always integrate external API costs in your calculation:\n   OpenAI / Claude / Grok: €10-50/month\n   → These costs are the client's responsibility but must be considered in pricing and value structure.\n\nBe transparent:\n- The client must understand what they are buying\n- Descriptions must be simple, concrete, and results-oriented\n- Never exceed 3 products\n\n📦 MANDATORY Output Format (directly to your update_pricing tool)\n\n  \"product_1_name\": \"...\",\n  \"product_1_desc\": \"...\",\n  \"product_1_price\": 0,\n  \"product_1_qty\": 1,\n\n  \"product_2_name\": null,\n  \"product_2_desc\": null,\n  \"product_2_price\": null,\n  \"product_2_qty\": null,\n\n  \"product_3_name\": null,\n  \"product_3_desc\": null,\n  \"product_3_price\": null,\n  \"product_3_qty\": null,\n\n  \"acompte_percent\": 50\n\nRules:\n- If a product is not used → all its fields = null\n- price = number (excl. tax) without €\n- qty ≥ 1\n- acompte_percent ∈ [20, 70]\n\n🚫 Prohibitions\n- Do not generate API requests\n- Do not generate PandaDoc tokens\n- Never exceed 3 products\n- Never return invalid JSON\n- Never skip Perplexity search if a price is uncertain\n- Descriptions must not be too long (max 2 lines)\n\n🏆 Expected Result\nA filled and well-priced pricing table according to the project with the commercial consistency of a premium AI agency."
        },
        "needsFallback": true,
        "toolDescription": "AI Agent that can create the pricing table of the quote."
      },
      "typeVersion": 2.2
    },
    {
      "id": "3aba2975-4a07-4a47-af06-c6fd15948b72",
      "name": "SOW Agent",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1744,
        656
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "=You are an AI agent responsible for filling all tokens related to actions, solutions, problems, and sub-problems in a client quote for an AI automation agency, based on a summary that will be sent to you.\n\nYou fill only the following fields:\n\n      { \"name\": \"probleme.general\", \"value\": \"General problem text here.\" },\n      { \"name\": \"sous.problème.titre.1\", \"value\": \"Problem title 1\" },\n      { \"name\": \"sous.problème.desc.1\", \"value\": \"Problem description 1\" },\n      { \"name\": \"sous.problème.titre.2\", \"value\": \"Problem title 2\" },\n      { \"name\": \"sous.problème.desc.2\", \"value\": \"Problem description 2\" },\n      { \"name\": \"sous.problème.titre.3\", \"value\": \"Problem title 3\" },\n      { \"name\": \"sous.problème.desc.3\", \"value\": \"Problem description 3\" },\n      { \"name\": \"sous.problème.titre.4\", \"value\": \"Problem title 4\" },\n      { \"name\": \"sous.problème.desc.4\", \"value\": \"Problem description 4\" },\n      { \"name\": \"sous.problème.titre.5\", \"value\": \"Problem title 5\" },\n      { \"name\": \"sous.problème.desc.5\", \"value\": \"Problem description 5\" },\n      { \"name\": \"titre.solution.1\", \"value\": \"Solution title 1\" },\n      { \"name\": \"desc.solution.1\", \"value\": \"Solution description 1\" },\n      { \"name\": \"titre.solution.2\", \"value\": \"Solution title 2\" },\n      { \"name\": \"desc.solution.2\", \"value\": \"Solution description 2\" },\n      { \"name\": \"titre.solution.3\", \"value\": \"Solution title 3\" },\n      { \"name\": \"desc.solution.3\", \"value\": \"Solution description 3\" },\n      { \"name\": \"titre.solution.4\", \"value\": \"Solution title 4\" },\n      { \"name\": \"desc.solution.4\", \"value\": \"Solution description 4\" },\n      { \"name\": \"titre.solution.5\", \"value\": \"Solution title 5\" },\n      { \"name\": \"desc.solution.5\", \"value\": \"Solution description 5\" },\n      { \"name\": \"action.1\", \"value\": \"Action 1\" },\n      { \"name\": \"action.2\", \"value\": \"Action 2\" },\n      { \"name\": \"action.3\", \"value\": \"Action 3\" },\n      { \"name\": \"action.4\", \"value\": \"Action 4\" },\n      { \"name\": \"action.5\", \"value\": \"Action 5\" },\n      { \"name\": \"action.1.durée.jours\", \"value\": \"2\" },\n      { \"name\": \"action.2.durée.jours\", \"value\": \"3\" },\n      { \"name\": \"action.3.durée.jours\", \"value\": \"1\" },\n      { \"name\": \"action.4.durée.jours\", \"value\": \"4\" },\n      { \"name\": \"action.5.durée.jours\", \"value\": \"2\" }\n\nIf some information is unclear in the summary, you must rephrase or propose explicit placeholders. Stay professional, concise, but understandable for non-technical clients.\n\nCall your \"project_duration_calculation\" tool to calculate associated dates if needed, and use \"Fetch Document Details\" if you have doubts about the structure.\n\nCurrent date: {{ $now.format('yyyy-MM-dd') }}\n\nThe generated problem (1 sentence, 20-30 words max) and other fields should not be too long. Get to the point - concise, keywords recommended."
        },
        "needsFallback": true,
        "toolDescription": "AI Agent that can call other tools in order to create the additionnal textual fields of the quote. "
      },
      "typeVersion": 2.2
    },
    {
      "id": "9a64baf3-6843-4800-9a2c-1656d44ea486",
      "name": "Download file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1824,
        -208
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "credential-id",
          "name": "Google Drive account - Hugo "
        }
      },
      "typeVersion": 3
    },
    {
      "id": "1137f49d-5d0c-4621-8d5e-ed210135c06d",
      "name": "Google Drive Trigger",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "position": [
        1600,
        -208
      ],
      "parameters": {
        "event": "fileCreated",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "mode": "list",
          "value": "1PWSH1L6jRaGsYEr8DHnTnqpxn6dgbitb",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1PWSH1L6jRaGsYEr8DHnTnqpxn6dgbitb",
          "cachedResultName": "Sous-Titres .VTT"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "credential-id",
          "name": "Google Drive account - Hugo "
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d15697d4-79ac-4b4e-8f96-9d07673e41ae",
      "name": "Binary to text",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        2048,
        -208
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1.1
    },
    {
      "id": "eb4d2261-4469-48c2-a0cc-79491d705516",
      "name": "Grok",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        2144,
        896
      ],
      "parameters": {
        "model": "x-ai/grok-4",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "credential-id",
          "name": "OpenRouter account - Hugo"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3d7a1343-787f-489e-b0de-0e1154d3365c",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1536,
        576
      ],
      "parameters": {
        "color": 7,
        "width": 1152,
        "height": 672,
        "content": "## 3. Specialized Sub-Agents\n"
      },
      "typeVersion": 1
    },
    {
      "id": "94cca045-5bd9-4ece-9d4e-00dd90711940",
      "name": "Get many events",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        2496,
        -208
      ],
      "parameters": {
        "options": {},
        "timeMax": "={{ $now }}",
        "timeMin": "={{$now.minus({ days: 30 })}}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "user@example.com",
          "cachedResultName": "user@example.com"
        },
        "operation": "getAll"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "credential-id",
          "name": "Google Calendar / PROD "
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "bb99b284-b5e1-4fa4-928e-48b6aa3867bd",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1536,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 1152,
        "height": 592,
        "content": "## 2. Main AI Orchestrator\n"
      },
      "typeVersion": 1
    },
    {
      "id": "070a57c1-2f22-44d7-9c68-80315afdae3c",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1536,
        -272
      ],
      "parameters": {
        "color": 7,
        "width": 1152,
        "height": 224,
        "content": "## 1. Transcript Cleaning & Meeting Extraction"
      },
      "typeVersion": 1
    },
    {
      "id": "7547e9ea-1f4b-48dd-b73f-bfdc3ea8cf39",
      "name": "Search Tools & pricing",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        2448,
        1072
      ],
      "parameters": {
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "simplify": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Simplify_Output', ``, 'boolean') }}",
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "id": "credential-id",
          "name": "Perplexity account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4af6c96a-6414-424d-84bb-63c6d40f2247",
      "name": "Sonnet 4.5",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        2400,
        32
      ],
      "parameters": {
        "model": "anthropic/claude-sonnet-4.5",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "credential-id",
          "name": "OpenRouter account - Hugo"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6c19dadb-d862-42eb-a934-e5450425d2ac",
      "name": "GPT4 Turbo",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        2512,
        32
      ],
      "parameters": {
        "model": "openai/gpt-4-turbo",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "credential-id",
          "name": "OpenRouter account - Hugo"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f40a991d-f131-4a4f-8529-c1fe2b735cec",
      "name": "GPT 4 TURBO",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1568,
        880
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "credential-id",
          "name": "OpenRouter account - Hugo"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3466ff89-e881-4784-b267-1b495d0d7440",
      "name": "Opus 4.5",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1696,
        880
      ],
      "parameters": {
        "model": "anthropic/claude-opus-4.5",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "credential-id",
          "name": "OpenRouter account - Hugo"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "59603a18-4af6-41b5-a94e-c5104bd2803a",
      "name": "GPT4o TURBO",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        2272,
        896
      ],
      "parameters": {
        "model": "openai/gpt-4-turbo",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "credential-id",
          "name": "OpenRouter account - Hugo"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "67bd2c6e-4fa7-4ade-8cc6-0c8555f0bab9",
      "name": "Simple memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        2160,
        1104
      ],
      "parameters": {
        "sessionKey": "previousprices",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "2c042cf2-4ff3-4e4f-989a-b11ec9c238a7",
      "name": "think",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        2272,
        1104
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "1f723d3f-2528-4e85-af2e-a3d117a8f14d",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1568,
        1104
      ],
      "parameters": {
        "sessionKey": "SKU",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "744ebcd2-b66e-49e9-b150-3bb3b5b0d877",
      "name": "THINK",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        1696,
        1104
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "6bae44b3-ca0f-4c0f-9022-b4ea2488a7ce",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2704,
        368
      ],
      "parameters": {
        "color": 7,
        "width": 1632,
        "height": 880,
        "content": "## 4. PandaDoc Quote Creation, Polling & Editing\n\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1b14ecb4-7fda-475a-ae5d-31697ae19353",
      "name": "tokens",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        1984,
        896
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "un7napkeeNqhsSTE",
          "cachedResultUrl": "/workflow/un7napkeeNqhsSTE"
        },
        "description": "Call this tool send the fields you will modify in the quote. You must modify every field if possible, if not possible, input a X instead. You have to pass the ID of the quote.",
        "workflowInputs": {
          "value": {
            "route": "tokens",
            "action.1": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_1', ``, 'string') }}",
            "action.2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_2', ``, 'string') }}",
            "action.3": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_3', ``, 'string') }}",
            "action.4": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_4', ``, 'string') }}",
            "action.5": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_5', ``, 'string') }}",
            "id doc créé": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('id_doc_cr__', ``, 'string') }}",
            "desc.solution.1": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('desc_solution_1', ``, 'string') }}",
            "desc.solution.2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('desc_solution_2', ``, 'string') }}",
            "desc.solution.3": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('desc_solution_3', ``, 'string') }}",
            "desc.solution.4": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('desc_solution_4', ``, 'string') }}",
            "desc.solution.5": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('desc_solution_5', ``, 'string') }}",
            "probleme.general": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('probleme_general', ``, 'string') }}",
            "titre.solution.1": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('titre_solution_1', ``, 'string') }}",
            "titre.solution.2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('titre_solution_2', ``, 'string') }}",
            "titre.solution.3": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('titre_solution_3', ``, 'string') }}",
            "titre.solution.4": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('titre_solution_4', ``, 'string') }}",
            "titre.solution.5": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('titre_solution_5', ``, 'string') }}",
            "action.1.durée.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_1_dur_e_jours', ``, 'string') }}",
            "action.2.durée.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_2_dur_e_jours', ``, 'string') }}",
            "action.3.durée.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_3_dur_e_jours', ``, 'string') }}",
            "action.4.durée.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_4_dur_e_jours', ``, 'string') }}",
            "action.5.durée.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_5_dur_e_jours', ``, 'string') }}",
            "sous.problème.desc.1": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_1', ``, 'string') }}",
            "sous.problème.desc.2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_2', ``, 'string') }}",
            "sous.problème.desc.3": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_3', ``, 'string') }}",
            "sous.problème.desc.4": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_4', ``, 'string') }}",
            "sous.problème.desc.5": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_5', ``, 'string') }}",
            "sous.problème.titre.1": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_1', ``, 'string') }}",
            "sous.problème.titre.2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_2', ``, 'string') }}",
            "sous.problème.titre.3": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_3', ``, 'string') }}",
            "sous.problème.titre.4": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_4', ``, 'string') }}",
            "sous.problème.titre.5": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_5', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "route",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "route",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "name (Proposition - proposition_title)",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "name (Proposition - proposition_title)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Titre.proposition (Automatisation CRM + Dashboard)",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Titre.proposition (Automatisation CRM + Dashboard)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "email client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "prénom client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "prénom client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "nom client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "nom client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Entreprise / statut client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Entreprise / statut client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "id doc créé",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id doc créé",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "probleme.general",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "probleme.general",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.titre.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.desc.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.titre.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.desc.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.titre.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.desc.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.titre.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.desc.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.titre.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.problème.desc.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "titre.solution.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "desc.solution.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "titre.solution.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "desc.solution.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "titre.solution.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "desc.solution.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "titre.solution.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "desc.solution.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "titre.solution.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "desc.solution.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.1.durée.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.1.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.2.durée.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.2.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.3.durée.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.3.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.4.durée.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.4.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.5.durée.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.5.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b3b4077c-9b0e-41db-93df-84021e4ea6a9",
      "name": "Called by Agent",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        2800,
        704
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "route"
            },
            {
              "name": "name (Proposition - proposition_title)"
            },
            {
              "name": "Titre.proposition (Automatisation CRM + Dashboard)"
            },
            {
              "name": "email client"
            },
            {
              "name": "prénom client"
            },
            {
              "name": "nom client"
            },
            {
              "name": "Entreprise / statut client"
            },
            {
              "name": "id doc créé"
            },
            {
              "name": "probleme.general"
            },
            {
              "name": "sous.problème.titre.1"
            },
            {
              "name": "sous.problème.desc.1"
            },
            {
              "name": "sous.problème.titre.2"
            },
            {
              "name": "sous.problème.desc.2"
            },
            {
              "name": "sous.problème.titre.3"
            },
            {
              "name": "sous.problème.desc.3"
            },
            {
              "name": "sous.problème.titre.4"
            },
            {
              "name": "sous.problème.desc.4"
            },
            {
              "name": "sous.problème.titre.5"
            },
            {
              "name": "sous.problème.desc.5"
            },
            {
              "name": "titre.solution.1"
            },
            {
              "name": "desc.solution.1"
            },
            {
              "name": "titre.solution.2"
            },
            {
              "name": "desc.solution.2"
            },
            {
              "name": "titre.solution.3"
            },
            {
              "name": "desc.solution.3"
            },
            {
              "name": "titre.solution.4"
            },
            {
              "name": "desc.solution.4"
            },
            {
              "name": "titre.solution.5"
            },
            {
              "name": "desc.solution.5"
            },
            {
              "name": "action.1"
            },
            {
              "name": "action.2"
            },
            {
              "name": "action.3"
            },
            {
              "name": "action.4"
            },
            {
              "name": "action.5"
            },
            {
              "name": "action.1.durée.jours"
            },
            {
              "name": "action.2.durée.jours"
            },
            {
              "name": "action.3.durée.jours"
            },
            {
              "name": "action.4.durée.jours"
            },
            {
              "name": "action.5.durée.jours"
            },
            {
              "name": "acompte_percent"
            },
            {
              "name": "product_1_name"
            },
            {
              "name": "product_1_desc"
            },
            {
              "name": "product_1_price"
            },
            {
              "name": "product_1_qty"
            },
            {
              "name": "product_2_name"
            },
            {
              "name": "product_2_desc"
            },
            {
              "name": "product_2_price"
            },
            {
              "name": "product_2_qty"
            },
            {
              "name": "product_3_name"
            },
            {
              "name": "product_3_desc"
            },
            {
              "name": "product_3_price"
            },
            {
              "name": "product_3_qty"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "d1a5c09c-64be-4bff-a6ed-d426da110269",
      "name": "update_pricing",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        2576,
        1072
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "un7napkeeNqhsSTE",
          "cachedResultUrl": "/workflow/un7napkeeNqhsSTE"
        },
        "description": "Call this tool to send the fields you were asked to create. You will get back either a sucess or a error message.",
        "workflowInputs": {
          "value": {
            "route": "pricing",
            "id doc créé": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('id_doc_cr__', ``, 'string') }}",
            "product_1_qty": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_1_qty', ``, 'string') }}",
            "product_2_qty": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_2_qty', ``, 'string') }}",
            "product_3_qty": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_3_qty', ``, 'string') }}",
            "product_1_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_1_name', ``, 'string') }}",
            "product_2_desc": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_2_desc', ``, 'string') }}",
            "product_2_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_2_name', ``, 'string') }}",
            "product_3_desc": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_3_desc', ``, 'string') }}",
            "product_3_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_3_name', ``, 'string') }}",
            " product_1_desc": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('_product_1_desc', ``, 'string') }}",
            "acompte_percent": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('acompte_percent', ``, 'string') }}",
            "product_1_price": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_1_price', ``, 'string') }}",
            "product_2_price": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('product_2_price', ``, 'string') }}",
            " product_3_price": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('_product_3_price', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "route",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "route",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "name (Proposition - proposition_title)",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "name (Proposition - proposition_title)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Titre.proposition (Automatisation CRM + Dashboard)",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Titre.proposition (Automatisation CRM + Dashboard)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "email client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "prénom client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "prénom client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "nom client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "nom client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Entreprise / statut client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Entreprise / statut client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "id doc créé",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "id doc créé",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "probleme.general",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "probleme.general",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.titre.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.desc.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.titre.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.desc.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.titre.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.desc.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.titre.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.desc.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.titre.5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.titre.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.problème.desc.5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.problème.desc.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "titre.solution.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "desc.solution.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "titre.solution.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "desc.solution.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "titre.solution.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "desc.solution.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "titre.solution.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "desc.solution.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "titre.solution.5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "titre.solution.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "desc.solution.5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "desc.solution.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.1.durée.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.1.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.2.durée.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.2.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.3.durée.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.3.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.4.durée.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.4.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.5.durée.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.5.durée.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "acompte_percent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "acompte_percent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_1_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_1_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": " product_1_desc",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": " product_1_desc",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_1_price",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_1_price",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_1_qty",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_1_qty",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_2_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_2_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_2_desc",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_2_desc",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_2_price",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_2_price",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_2_qty",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_2_qty",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_3_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_3_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_3_desc",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_3_desc",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": " product_3_price",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": " product_3_price",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_3_qty",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "product_3_qty",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "01260bff-22e1-4bd7-a3b7-9196ccac2910",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1840,
        1088
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"document_id\": \"\",\n  \n  \"client\": {\n    \"company\": \"\",\n    \"first_name\": \"\",\n    \"last_name\": \"\"\n  },\n\n  \"proposal\": {\n    \"title\": \"\",\n    \"acompte_percent\": 50\n  },\n\n  \"pricing\": {\n    \"total_ht\": 0,\n    \"total_ttc\": 0,\n    \"acompte_amount\": 0\n  },\n\n  \"products\": [\n    {\n      \"name\": \"\",\n      \"description\": \"\",\n      \"price_ht\": 0,\n      \"qty\": 1\n    }\n  ],\n\n  \"summary\": {\n    \"short\": \"\"\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "9417524b-52d9-4a01-bd5a-a1d22974da18",
      "name": "Send_mode",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3360,
        -224
      ],
      "parameters": {
        "url": "=https://api.pandadoc.com/public/v1/documents/{{ $('Get_review_URL').item.json.id }}/send",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"silent\": true\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "credential-id",
          "name": "Pandadoc"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "e764a826-6722-4d5c-ad13-2df172e93c3f",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        3360,
        -64
      ],
      "webhookId": "989d85d2-b0de-441d-b493-59ecc2dd321d",
      "parameters": {
        "sendTo": "={{ $json.recipients[0].email }}",
        "message": "=<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<title>Votre proposition est prête</title>\n\n<!-- Antonio Font -->\n<link href=\"https://fonts.googleapis.com/css2?family=Antonio:wght@400;600;700&display=swap\" rel=\"stylesheet\" />\n\n<style>\n  body {\n    margin: 0;\n    padding: 0;\n    background-color: #f4f5fb;\n    font-family: 'Antonio', Arial, sans-serif;\n    color: #1f1f1f;\n  }\n\n  .container {\n    max-width: 650px;\n    margin: 40px auto;\n    background: #ffffff;\n    border-radius: 14px;\n    overflow: hidden;\n    box-shadow: 0 4px 25px rgba(0,0,0,0.06);\n  }\n\n  /* Bandeau top */\n  .header {\n    background: linear-gradient(135deg, #9a8cf5, #7a6de8);\n    padding: 26px 20px;\n    text-align: center;\n    position: relative;\n  }\n\n  .header-logo {\n    width: 42px;\n    height: auto;\n    display: block;\n    margin: 0 auto 6px auto;\n  }\n\n  .header-title {\n    font-size: 22px;\n    font-weight: 700;\n    letter-spacing: 0.5px;\n    margin: 0;\n    color: #ffffff;\n  }\n\n  .content {\n    padding: 32px;\n    font-size: 17px;\n    line-height: 1.55;\n  }\n\n  .btn-wrapper {\n    text-align: center;\n    margin: 32px 0;\n  }\n\n  .cta-button {\n    background: #947efc;\n    padding: 14px 26px;\n    border-radius: 8px;\n    color: #fff !important;\n    font-size: 17px;\n    font-weight: 600;\n    text-decoration: none;\n    display: inline-block;\n    box-shadow: 0 3px 10px rgba(148,126,252,0.3);\n  }\n\n  .cta-button:hover {\n    background: #7d68f5;\n  }\n\n  ul {\n    padding-left: 18px;\n  }\n\n  .footer {\n    text-align: center;\n    padding: 30px;\n    font-size: 13px;\n    color: #818181;\n    background: #fafafa;\n  }\n</style>\n\n</head>\n\n<body>\n\n<div class=\"container\">\n\n  <!-- HEADER -->\n  <div class=\"header\">\n    <img src=\"https://res.cloudinary.com/dzawttogw/image/upload/v1765462099/logo-icon_dnbxzf_kphbs7.png\" class=\"header-logo\" />\n    <h1 class=\"header-title\">MonétizIA</h1>\n  </div>\n\n  <!-- CONTENT -->\n  <div class=\"content\">\n\n    <h2 style=\"font-size: 26px; margin-bottom: 14px;\">Votre proposition est prête</h2>\n\n    <p>Bonjour {{ $json.recipients[0].first_name }},</p>\n\n    <p>\n      Votre proposition personnalisée est maintenant disponible.  \n      Vous pouvez la consulter et la signer en toute sécurité via le bouton ci-dessous.\n    </p>\n\n    <div class=\"btn-wrapper\">\n      <a class=\"cta-button\" href=\"{{ $json.recipients[0].shared_link }}\">\n        Consulter & Signer la Proposition\n      </a>\n    </div>\n\n    <p>Le document inclut :</p>\n\n    <ul>\n      <li>la solution proposée & son plan d’action,</li>\n      <li>les tarifs détaillés + acompte,</li>\n      <li>les objectifs et résultats attendus,</li>\n      <li>les modalités de collaboration.</li>\n    </ul>\n\n    <p>\n      Si vous souhaitez ajuster un point ou avez une question, je suis disponible.\n    </p>\n\n    <p>\n      À très vite,<br>\n      <strong>Hugo — MonétizIA</strong>\n    </p>\n\n  </div>\n\n  <!-- FOOTER -->\n  <div class=\"footer\">\n    MonétizIA — Automatisation IA & N8N — Paris<br>\n    © {{new Date().getFullYear()}} MonétizIA. Tous droits réservés.\n  </div>\n\n</div>\n\n</body>\n</html>",
        "options": {
          "appendAttribution": false
        },
        "subject": "MonétizIA – Votre proposition d’automatisation IA est disponible"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "credential-id",
          "name": "Gmail account - Hugoat"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "083abc89-a2af-4b87-b3cf-4716cf909d9b",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2704,
        -272
      ],
      "parameters": {
        "color": 7,
        "width": 880,
        "height": 608,
        "content": "## 5. Review, Approval Flow &  Client Email Delivery\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6f270d90-a71a-4203-a0ae-1e56b3b8cf71",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3600,
        -80
      ],
      "parameters": {
        "color": 7,
        "width": 1632,
        "height": 416,
        "content": "## 6.  Post-Signature Processing"
      },
      "typeVersion": 1
    },
    {
      "id": "7033c700-e702-4704-92eb-2ce981b6eb6c",
      "name": "Search_CRM",
      "type": "n8n-nodes-base.notion",
      "position": [
        4160,
        96
      ],
      "parameters": {
        "options": {},
        "resource": "databasePage",
        "operation": "getAll",
        "returnAll": true,
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "2ccfb3ac-84df-801f-a51a-e988ccb98bf7",
          "cachedResultUrl": "https://www.notion.so/2ccfb3ac84df801fa51ae988ccb98bf7",
          "cachedResultName": "CRM"
        }
      },
      "credentials": {
        "notionApi": {
          "id": "credential-id",
          "name": "Notion account - Hugoat"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3e5d54e1-a484-41b9-898e-2acf3be4ddc1",
      "name": "details",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3936,
        96
      ],
      "parameters": {
        "url": "https://api.pandadoc.com/public/v1/documents/AKdYLJHnbzJfo6rro8VptS/details",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "credential-id",
          "name": "Pandadoc"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "87d0146f-f41f-4a5c-87c5-4896aef36f2a",
      "name": "Update status",
      "type": "n8n-nodes-base.notion",
      "position": [
        4608,
        96
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $json.url }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Client Status|select",
              "selectValue": "Client (signé)"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "id": "credential-id",
          "name": "Notion account - Hugoat"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "1e8a0f8c-1d84-4ced-8842-a6e942ab888f",
      "name": "welcome_mail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        4832,
        96
      ],
      "webhookId": "899e3122-1751-42e2-9c56-0a977e6f0246",
      "parameters": {
        "sendTo": "={{ $('Find Client in CRM').item.json.property_contact_email }}",
        "message": "=<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<title>Bienvenue chez MonétizIA</title>\n\n<!-- Antonio Font -->\n<link href=\"https://fonts.googleapis.com/css2?family=Antonio:wght@400;600;700&display=swap\" rel=\"stylesheet\" />\n\n<style>\n  body {\n    margin: 0;\n    padding: 0;\n    background-color: #f4f5fb;\n    font-family: 'Antonio', Arial, sans-serif;\n    color: #1f1f1f;\n  }\n\n  .container {\n    max-width: 650px;\n    margin: 40px auto;\n    background: #ffffff;\n    border-radius: 14px;\n    overflow: hidden;\n    box-shadow: 0 4px 25px rgba(0,0,0,0.06);\n  }\n\n  .header {\n    background: linear-gradient(135deg, #9a8cf5, #7a6de8);\n    padding: 28px 20px;\n    text-align: center;\n  }\n\n  .header-logo {\n    width: 42px;\n    display: block;\n    margin: 0 auto 8px auto;\n  }\n\n  .header-title {\n    font-size: 22px;\n    font-weight: 700;\n    letter-spacing: 0.5px;\n    margin: 0;\n    color: #ffffff;\n  }\n\n  .content {\n    padding: 32px;\n    font-size: 17px;\n    line-height: 1.55;\n  }\n\n  .highlight {\n    background: #f2f0ff;\n    border-left: 4px solid #7a6de8;\n    padding: 14px 18px;\n    border-radius: 6px;\n    margin: 22px 0;\n  }\n\n  .btn-wrapper {\n    text-align: center;\n    margin: 32px 0;\n  }\n\n  .cta-button {\n    background: #947efc;\n    padding: 14px 26px;\n    border-radius: 8px;\n    color: #fff !important;\n    font-size: 17px;\n    font-weight: 600;\n    text-decoration: none;\n    display: inline-block;\n    box-shadow: 0 3px 10px rgba(148,126,252,0.3);\n  }\n\n  .cta-button:hover {\n    background: #7d68f5;\n  }\n\n  ul {\n    padding-left: 18px;\n  }\n\n  .footer {\n    text-align: center;\n    padding: 30px;\n    font-size: 13px;\n    color: #818181;\n    background: #fafafa;\n  }\n</style>\n\n</head>\n\n<body>\n\n<div class=\"container\">\n\n  <!-- HEADER -->\n  <div class=\"header\">\n    <img src=\"https://res.cloudinary.com/dzawttogw/image/upload/v1765462099/logo-icon_dnbxzf_kphbs7.png\" class=\"header-logo\" />\n    <h1 class=\"header-title\">Bienvenue chez MonétizIA</h1>\n  </div>\n\n  <!-- CONTENT -->\n  <div class=\"content\">\n\n    <h2 style=\"font-size: 26px; margin-bottom: 14px;\">\n      Merci pour votre confiance 🚀\n    </h2>\n\n    <p>\n      Bonjour {{ $json.recipients[0].first_name }},\n    </p>\n\n    <p>\n      Nous sommes ravis de vous compter parmi nos clients et vous remercions pour la confiance que vous accordez à <strong>MonétizIA</strong>.\n    </p>\n\n    <div class=\"highlight\">\n      <strong>Projet :</strong> {{ $('details').item.json.name }}<br>\n      <strong>Entreprise :</strong> {{ $('details').item.json.tokens[0].value }}\n    </div>\n\n    <p>\n      La signature de votre proposition marque le début de notre collaboration.\n      Nous allons maintenant lancer la phase d’onboarding afin de préparer le déploiement de votre solution.\n    </p>\n\n    <ul>\n      <li>réception prochaine de la procédure d’onboarding,</li>\n      <li>collecte des accès et informations nécessaires,</li>\n      <li>planification du déploiement technique.</li>\n    </ul>\n\n    <p>\n      Pour bien démarrer, nous vous invitons à réserver votre call de kickoff.\n      Ce rendez-vous nous permettra d’aligner les objectifs, le planning et les prochaines étapes.\n    </p>\n\n    <div class=\"btn-wrapper\">\n      <a class=\"cta-button\" href=\"https://cal.com/hugo-monetizia/kick-off-projet\">\n        Réserver le call de kickoff\n      </a>\n    </div>\n\n    <p>\n      Si vous avez la moindre question d’ici là, vous pouvez bien sûr répondre directement à cet email.\n    </p>\n\n    <p>\n      À très vite,<br>\n      <strong>Hugo — MonétizIA</strong>\n    </p>\n\n  </div>\n\n  <!-- FOOTER -->\n  <div class=\"footer\">\n    MonétizIA — Automatisation IA & N8N — Paris<br>\n    © {{new Date().getFullYear()}} MonétizIA. Tous droits réservés.\n  </div>\n\n</div>\n\n</body>\n</html>",
        "options": {
          "appendAttribution": false
        },
        "subject": "Bienvenue chez MonétizIA — lancement de votre projet"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "credential-id",
          "name": "Gmail account - Hugoat"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ff9e499b-f54a-4b8a-b53f-a38075284fca",
      "name": "confirmation_message",
      "type": "n8n-nodes-base.slack",
      "position": [
        5056,
        96
      ],
      "webhookId": "d752ac3a-f4fd-4a95-8e03-35e1f8906253",
      "parameters": {
        "text": "={{ $('details').item.json.tokens[1].value }} {{ $('details').item.json.tokens[2].value }} de {{ $('details').item.json.tokens[0].value }} à signé ton devis !",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U08QEDWD407",
          "cachedResultName": "monetizia.agence"
        },
        "select": "user",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "credential-id",
          "name": "Slack account - MonétizIA"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "f734103d-40f4-4dec-b614-3305b26de69d",
      "name": "when_doc_is_signed",
      "type": "n8n-nodes-base.webhook",
      "position": [
        3696,
        160
      ],
      "webhookId": "7ca56f48-be92-4e3d-8adf-fffc2508beca",
      "parameters": {
        "path": "7ca56f48-be92-4e3d-8adf-fffc2508beca",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "d6aafe0b-d36b-4a75-b484-98b341cbd860",
      "name": "quote_creation",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        1632,
        384
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "un7napkeeNqhsSTE",
          "cachedResultUrl": "/workflow/un7napkeeNqhsSTE"
        },
        "description": "Call this tool to create a new quote already filled with your owners details and the right template. \nYou will get the document ID as an output. ",
        "workflowInputs": {
          "value": {
            "route": "main",
            "nom client": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('nom_client', ``, 'string') }}",
            "email client": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('email_client', ``, 'string') }}",
            "prénom client": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('pr_nom_client', ``, 'string') }}",
            "Entreprise / statut client": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Entreprise___statut_client', ``, 'string') }}",
            "name (Proposition - proposition_title)": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('name__Proposition_-_proposition_title_', ``, 'string') }}",
            "Titre.proposition (Automatisation CRM + Dashboard)": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Titre_proposition__Automatisation_CRM___Dashboard_', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "route",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "route",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "name (Proposition - proposition_title)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "name (Proposition - proposition_title)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Titre.proposition (Automatisation CRM + Dashboard)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Titre.proposition (Automatisation CRM + Dashboard)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email client",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "email client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "prénom client",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "prénom client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "nom client",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "nom client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Entreprise / statut client",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Entreprise / statut client",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c3cf77e5-31d0-4569-933e-d0536430b75c",
      "name": "project_duration_calculation",
      "type": "n8n-nodes-base.dateTimeTool",
      "position": [
        1856,
        896
      ],
      "parameters": {
        "options": {},
        "duration": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Duration', ``, 'number') }}",
        "magnitude": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date_to_Add_To', ``, 'string') }}",
        "operation": "addToDate",
        "descriptionType": "manual",
        "outputFieldName": "Livraison",
        "toolDescription": "Manipulate date in order to calculate intervals of times between differents milestones of the project."
      },
      "typeVersion": 2
    },
    {
      "id": "2e7456db-84a0-4dbe-968c-d8e26fe5a97d",
      "name": "DB_services_&_details",
      "type": "n8n-nodes-base.dataTableTool",
      "position": [
        2448,
        896
      ],
      "parameters": {
        "operation": "get",
        "returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "gbFSt0LYZsqKqtGx",
          "cachedResultUrl": "/projects/wQu9LleWBxY6UwrI/datatables/gbFSt0LYZsqKqtGx",
          "cachedResultName": "Catalogue Prix | Agence IA"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5d8f8c41-2cba-4ff0-8396-32b3d02c29af",
      "name": "confirmation",
      "type": "n8n-nodes-base.slack",
      "position": [
        3360,
        112
      ],
      "webhookId": "5ea1e28c-d277-423b-bf3e-aaebe1585732",
      "parameters": {
        "text": "=🚀 Proposition envoyée à {{ $('Send_mode').item.json.recipients[0].first_name }} {{ $('Send_mode').item.json.recipients[0].last_name }}.",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U08QEDWD407",
          "cachedResultName": "monetizia.agence"
        },
        "select": "user",
        "otherOptions": {
          "includeLinkToWorkflow": false
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "credential-id",
          "name": "Slack account - MonétizIA"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "5dca8514-ddfa-4772-bd43-f386b17dda59",
      "name": "feedback_collection",
      "type": "n8n-nodes-base.slack",
      "position": [
        2784,
        112
      ],
      "webhookId": "ab860ec0-f34a-49eb-bce4-09e6734df104",
      "parameters": {
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U08QEDWD407",
          "cachedResultName": "monetizia.agence"
        },
        "message": "❌ Proposition refusée  \n\nMerci de renseigner ce court formulaire pour comprendre ce qui n’allait pas 🙏",
        "options": {
          "appendAttribution": false
        },
        "operation": "sendAndWait",
        "formFields": {
          "values": [
            {
              "fieldType": "dropdown",
              "fieldLabel": "Raison principale du refus",
              "defaultValue": "Titre ou description incorrecte",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Titre ou description incorrecte"
                  },
                  {
                    "option": "Prix incohérent ou mal structuré"
                  },
                  {
                    "option": "Produits incomplets ou incorrects"
                  },
                  {
                    "option": "Mauvaise compréhension du besoin client"
                  },
                  {
                    "option": "Style / formulation à améliorer"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "radio",
              "fieldLabel": "Le document était-il clair ?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Très clair"
                  },
                  {
                    "option": "Moyen"
                  },
                  {
                    "option": "Peu clair "
                  },
                  {
                    "option": "Pas clair du tout"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Commentaire libre",
              "placeholder": "Partagez vos attentes ou frustrations (optionnel)"
            }
          ]
        },
        "responseType": "customForm",
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "credential-id",
          "name": "Slack account - MonétizIA"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "88f406e4-d838-4a2f-97b9-6f4d05ad5f9d",
      "name": "Get_review_URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2768,
        -160
      ],
      "parameters": {
        "url": "=https://api.pandadoc.com/public/v1/documents/{{ $json.output.document_id }}/details",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "credential-id",
          "name": "Pandadoc"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "31212578-2bf6-4f25-ac7f-98cb7235bc24",
      "name": "Clean Transcript",
      "type": "n8n-nodes-base.code",
      "position": [
        2272,
        -208
      ],
      "parameters": {
        "jsCode": "// Récupération du JSON d’entrée (équivalent de to_py())\nconst data = $input.item.json;\n\n// Champ source (adapte si besoin : \"data\", \"textContent\", etc.)\nconst raw = data.data || \"\";\n\n// Split lignes\nconst lines = raw.split(/\\r?\\n/);\n\n// Regex timestamp SRT / VTT\nconst timestampRe = /^\\s*\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\s*-->\\s*\\d{2}:\\d{2}:\\d{2}\\.\\d{3}/;\n\n// Headers à ignorer\nconst skipHeaders = new Set([\n  \"WEBVTT\",\n  \"Kind:\",\n  \"Language:\",\n  \"NOTE\"\n]);\n\nconst outLines = [];\n\nfor (const line of lines) {\n  const s = line.trim();\n\n  if (!s) continue;\n  if (skipHeaders.has(s)) continue;\n  if (timestampRe.test(s)) continue;\n  if (/^\\d+$/.test(s)) continue;\n\n  outLines.push(s);\n}\n\n// Texte nettoyé final\nconst cleaned = outLines.join(\"\\n\");\n\n// Output n8n\nreturn [\n  {\n    json: {\n      cleaned_text: cleaned\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "834aba4e-818e-47a8-af67-d401f5e7d7f4",
      "name": "Build Pricing Payload",
      "type": "n8n-nodes-base.code",
      "position": [
        3248,
        992
      ],
      "parameters": {
        "jsCode": "const rows = [];\n\nfunction toNumber(value) {\n  const n = Number(value);\n  return Number.isFinite(n) ? n : null;\n}\n\n// Acompte (%)\nconst acomptePercent = Number($json.acompte_percent ?? 30);\n\n// === Construction des items ===\nfor (let i = 1; i <= 3; i++) {\n  const name  = $json[`product_${i}_name`];\n  const desc  = $json[`product_${i}_desc`];\n  const price = toNumber($json[`product_${i}_price`]);\n  const qty   = toNumber($json[`product_${i}_qty`]) || 1;\n\n  if (!name || price === null) continue;\n\n  rows.push({\n    type: \"item\",\n    options: {},\n    data: {\n      // ⚠ FORMAT OFFICIEL PANADOC V2\n      name: name,\n      description: desc || \"\",\n      price: price,\n      qty: qty,\n      tax: [\n        {\n          type: \"percent\",\n          value: 20,\n          name: \"TVA\"\n        }\n      ]\n    }\n  });\n}\n\nreturn {\n  json: {\n    pricing_tables: [\n      {\n        name: \"Pricing Table 1\",\n\n        // ⚠ Discount doit contenir OBLIGATOIREMENT “name”\n        options: {\n          discount: {\n            type: \"percent\",\n            name: \"Acompte\",   // ← CHAMP OBLIGATOIRE\n            value: acomptePercent\n          }\n        },\n\n        sections: [\n          {\n            title: \"Investissement\",\n            default: true,\n            rows\n          }\n        ]\n      }\n    ],\n\n    tokens: [\n      {\n        name: \"acompte.pourcent\",\n        value: acomptePercent.toString()\n      }\n    ]\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "aa1fffd2-02f9-4269-8748-a70f5dfea4d3",
      "name": "Document Ready?",
      "type": "n8n-nodes-base.if",
      "position": [
        3888,
        416
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "7fc0d39d-f203-492d-9571-fec86db1030c",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "document.draft"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4ee60e36-874d-4e9c-bdfd-5ff3a98ac316",
      "name": "Match Meeting by Title",
      "type": "n8n-nodes-base.filter",
      "position": [
        2112,
        160
      ],
      "parameters": {
        "options": {
          "ignoreCase": true
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c5190df9-ba61-47cb-ba95-cfc29ec4a7a4",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.summary }}",
              "rightValue": "={{ $('Google Drive Trigger').item.json.name.split(\" -\")[0] }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "da7d9ede-3bef-4dbc-9878-bb6f52a0faff",
      "name": "Find Client in CRM",
      "type": "n8n-nodes-base.filter",
      "position": [
        4384,
        96
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "869b776a-115d-4eec-91a6-15e52ef5eaaa",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "={{ $('details').item.json.tokens[1].value }} {{ $('details').item.json.tokens[2].value }}"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "8c007f3a-1304-4a65-8b37-fbef9852d6a3",
      "name": "Route by Action Type",
      "type": "n8n-nodes-base.switch",
      "position": [
        3024,
        688
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "c45fe3bc-88b4-4fa7-a7c2-246c6d10d4dd",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json['route'] }}",
                    "rightValue": "main"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "172a73f5-353c-45c2-8e8b-eb780b9fa424",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json['route'] }}",
                    "rightValue": "tokens"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3c011ac8-f6e4-4418-984b-401e146e1612",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json['route'] }}",
                    "rightValue": "pricing"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.3
    },
    {
      "id": "84045cbf-3623-4fc1-82fd-a38c17abe3b9",
      "name": "Is Approved?",
      "type": "n8n-nodes-base.if",
      "position": [
        3136,
        -160
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "70522605-4290-4414-88d8-d4569ad732c5",
              "operator": {
                "type": "boolean",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data.approved }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0c95cee8-5e7a-46c5-ba9d-cb6a9d0f27bd",
      "name": "Token Update Success",
      "type": "n8n-nodes-base.set",
      "position": [
        3472,
        608
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "38cede32-2ddc-450f-b2c6-64f43502b8f0",
              "name": "message",
              "type": "string",
              "value": "MAJ du doc réussi !"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0ce3ed39-3c20-4bfd-b2af-682682262133",
      "name": "Token Update Error",
      "type": "n8n-nodes-base.set",
      "position": [
        3472,
        800
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "054bb8c5-4624-42ec-8181-948133de535f",
              "name": "message",
              "type": "string",
              "value": "Le document n'a pas été MAJ correctement. Réessaye."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2263ecd4-c3b2-425f-9b60-b2ffde105375",
      "name": "Pricing Update Success",
      "type": "n8n-nodes-base.set",
      "position": [
        3696,
        800
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "38cede32-2ddc-450f-b2c6-64f43502b8f0",
              "name": "message",
              "type": "string",
              "value": "MAJ du doc réussi !"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1ed60e0c-ce18-4721-b567-435da0fe8173",
      "name": "Pricing Update Error",
      "type": "n8n-nodes-base.set",
      "position": [
        3696,
        1088
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "054bb8c5-4624-42ec-8181-948133de535f",
              "name": "message",
              "type": "string",
              "value": "Le document n'a pas été MAJ correctement. Réessaye."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2e369e24-3856-4e1c-bdf0-2aa46ea3e41a",
      "name": "Return Document Info",
      "type": "n8n-nodes-base.set",
      "position": [
        4112,
        400
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ba5f4d6d-65a5-41f0-9edb-a983c606a450",
              "name": "etat",
              "type": "string",
              "value": "Document créé avec succès !"
            },
            {
              "id": "6388fffa-8c4c-4ff2-94c3-235fc4bd9ad1",
              "name": "id",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "40bddcb8-5e29-4ea6-aad2-7a905e23f4e0",
      "name": "Fetch Document Details",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        1776,
        384
      ],
      "parameters": {
        "url": "https://api.pandadoc.com/public/v1/templates/3ktiP5fdeiwNyhiTXaz99e/details",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "credential-id",
          "name": "Pandadoc"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "185deabf-300d-4bd2-912d-6332a462d431",
      "name": "Log Rejection Feedback",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        3008,
        112
      ],
      "parameters": {
        "columns": {
          "value": {
            "id_doc": "={{ $('Get_review_URL').item.json.id }}",
            "clarte_doc": "={{ $json.data['Le document était-il clair ?'] }}",
            "Commentaire": "={{ $json.data['Commentaire libre'] }}",
            "Raison_principal_du_refus": "={{ $json.data['Raison principale du refus'] }}"
          },
          "schema": [
            {
              "id": "Raison_principal_du_refus",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Raison_principal_du_refus",
              "defaultMatch": false
            },
            {
              "id": "clarte_doc",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "clarte_doc",
              "defaultMatch": false
            },
            {
              "id": "Commentaire",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Commentaire",
              "defaultMatch": false
            },
            {
              "id": "id_doc",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "id_doc",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "vlL7VWoOiyVsdlXA",
          "cachedResultUrl": "/projects/wQu9LleWBxY6UwrI/datatables/vlL7VWoOiyVsdlXA",
          "cachedResultName": "Data Rating Agent Créateur de Devis"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0dd6f644-dece-4d35-aff6-9ce2e91db0d6",
      "name": "Send for Review",
      "type": "n8n-nodes-base.slack",
      "position": [
        2960,
        -160
      ],
      "webhookId": "70fa2c2e-a55c-45c6-890b-5605b98d48f2",
      "parameters": {
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U08QEDWD407",
          "cachedResultName": "monetizia.agence"
        },
        "message": "=📄 Nouvelle proposition prête à review\n\nClient : {{ $json.tokens[1].value }} {{ $json.tokens[2].value }} - {{ $json.tokens[0].value }}\nProjet : {{ $json.name }}\n\n👉 Lien de review : https://app.pandadoc.com/a/#/documents/{{ $json.id }}\n\n🧠 Résumé auto :\n- Total : {{ $json.pricing.tables[0].summary.subtotal }}€\n- Acompte : {{ $json.tokens[4].value }}%\n- Produits : {{ $('Analysis & Orchestrator Agent').item.json.products[0].name }}, {{ $('Analysis & Orchestrator Agent').item.json.products[1].name }}, {{ $('Analysis & Orchestrator Agent').item.json.products[2].name }}, {{ $('Analysis & Orchestrator Agent').item.json.products[3].name }}, {{ $('Analysis & Orchestrator Agent').item.json.products[4].name }}\n\nRéagis avec 👍 pour envoyer au client.\nRéagis avec ❌ pour bloquer.",
        "options": {
          "appendAttribution": false
        },
        "operation": "sendAndWait",
        "authentication": "oAuth2",
        "approvalOptions": {
          "values": {
            "approvalType": "double",
            "approveLabel": "👍",
            "disapproveLabel": "❌"
          }
        }
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "credential-id",
          "name": "Slack account - MonétizIA"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "1721c0c5-6e72-4fa8-a7a6-4de30a27d1bf",
      "name": "Update Pricing Section",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        3472,
        992
      ],
      "parameters": {
        "url": "=https://api.pandadoc.com/public/v1/documents/{{ $('Called by Agent').item.json[\"id doc créé\"] }}",
        "method": "PATCH",
        "options": {},
        "jsonBody": "={{ $json }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "API-Key 951e9036d3fda0e7e9c711720c201ee601fc0a5e"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "fa7ba7ac-4b2a-408a-9ca6-9c0aa8472902",
      "name": "Create Quote",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3248,
        416
      ],
      "parameters": {
        "url": "https://api.pandadoc.com/public/v1/documents",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"name\": \"{{ $json['name (Proposition - proposition_title)'] }}\",\n  \"template_uuid\": \"3ktiP5fdeiwNyhiTXaz99e\",\n  \"recipients\": [\n    {\n      \"email\": \"{{ $json['email client'] }}\",\n      \"first_name\": \"{{ $json['prénom client'] }}\",\n      \"last_name\": \"{{ $json['nom client'] }}\",\n      \"company\": \"{{ $json['Entreprise / statut client'] }}\",\n      \"role\": \"Client\"\n    }\n  ],\n  \"tokens\": [\n    {\n      \"name\": \"Titre.proposition\",\n      \"value\": \"{{ $json['Titre.proposition (Automatisation CRM + Dashboard)'] }}\"\n    },\n    {\n      \"name\": \"Sender.Company\",\n      \"value\": \"MonétizIA\"\n    },\n    {\n      \"name\": \"Sender.FirstName\",\n      \"value\": \"Hugo\"\n    },\n    {\n      \"name\": \"Sender.LastName\",\n      \"value\": \"LE POOLE\"\n    },\n    {\n      \"name\": \"Signature\",\n      \"value\": \"Hugo - CEO MonétizIA\"\n    }\n  ]\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "credential-id",
          "name": "Pandadoc"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "d299722c-6935-4d88-9b8c-12cddbcc83e8",
      "name": "Status ?",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3664,
        416
      ],
      "parameters": {
        "url": "=https://api.pandadoc.com/public/v1/documents/{{ $json.id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "API-Key 951e9036d3fda0e7e9c711720c201ee601fc0a5e"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "8d77bbf0-ddbe-4398-ab90-ff5126314603",
      "name": "Wait for completion",
      "type": "n8n-nodes-base.wait",
      "position": [
        3472,
        416
      ],
      "webhookId": "29de1eae-0b69-425a-a3fd-a21983b3f90a",
      "parameters": {
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "d0b3a570-1857-487e-9bf6-c9563e4cb9dd",
      "name": "Update Tokens",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        3248,
        704
      ],
      "parameters": {
        "url": "=https://api.pandadoc.com/public/v1/documents/{{ $json['id doc créé'] }}",
        "method": "PATCH",
        "options": {},
        "jsonBody": "={\n   \"tokens\": [\n      { \"name\": \"probleme.general\", \"value\": \"{{ $json['probleme.general'] }}\" },\n      { \"name\": \"sous.problème.titre.1\", \"value\": \"{{ $json['sous.problème.titre.1'] }}\" },\n      { \"name\": \"sous.problème.desc.1\", \"value\": \"{{ $json['sous.problème.desc.1'] }}\" },\n      { \"name\": \"sous.problème.titre.2\", \"value\": \"{{ $json['sous.problème.titre.2'] }}\" },\n      { \"name\": \"sous.problème.desc.2\", \"value\": \"{{ $json['sous.problème.desc.2'] }}\" },\n      { \"name\": \"sous.problème.titre.3\", \"value\": \"{{ $json['sous.problème.titre.3'] }}\" },\n      { \"name\": \"sous.problème.desc.3\", \"value\": \"{{ $json['sous.problème.desc.3'] }}\" },\n      { \"name\": \"sous.problème.titre.4\", \"value\": \"{{ $json['sous.problème.titre.4'] }}\" },\n      { \"name\": \"sous.problème.desc.4\", \"value\": \"{{ $json['sous.problème.desc.4'] }}\" },\n      { \"name\": \"sous.problème.titre.5\", \"value\": \"{{ $json['sous.problème.titre.5'] }}\" },\n      { \"name\": \"sous.problème.desc.5\", \"value\": \"{{ $json['sous.problème.desc.5'] }}\" },\n      { \"name\": \"titre.solution.1\", \"value\": \"{{ $json['titre.solution.1'] }}\" },\n      { \"name\": \"desc.solution.1\", \"value\": \"{{ $json['desc.solution.1'] }}\" },\n      { \"name\": \"titre.solution.2\", \"value\": \"{{ $json['titre.solution.2'] }}\" },\n      { \"name\": \"desc.solution.2\", \"value\": \"{{ $json['desc.solution.2'] }}\" },\n      { \"name\": \"titre.solution.3\", \"value\": \"{{ $json['titre.solution.3'] }}\" },\n      { \"name\": \"desc.solution.3\", \"value\": \"{{ $json['titre.solution.3'] }}\" },\n      { \"name\": \"titre.solution.4\", \"value\": \"{{ $json['titre.solution.4'] }}\" },\n      { \"name\": \"desc.solution.4\", \"value\": \"{{ $json['desc.solution.4'] }}\" },\n      { \"name\": \"titre.solution.5\", \"value\": \"{{ $json['titre.solution.5'] }}\" },\n      { \"name\": \"desc.solution.5\", \"value\": \"{{ $json['desc.solution.5'] }}\" },\n      { \"name\": \"action.1\", \"value\": \"{{ $json['action.1'] }}\" },\n      { \"name\": \"action.2\", \"value\": \"{{ $json['action.2'] }}\" },\n      { \"name\": \"action.3\", \"value\": \"{{ $json['action.3'] }}\" },\n      { \"name\": \"action.4\", \"value\": \"{{ $json['action.4'] }}\" },\n      { \"name\": \"action.5\", \"value\": \"{{ $json['action.5'] }}\" },\n      { \"name\": \"action.1.durée.jours\", \"value\": \"{{ $json['action.1.durée.jours'] }}\" },\n      { \"name\": \"action.2.durée.jours\", \"value\": \"{{ $json['action.2.durée.jours'] }}\" },\n      { \"name\": \"action.3.durée.jours\", \"value\": \"{{ $json['action.3.durée.jours'] }}\" },\n      { \"name\": \"action.4.durée.jours\", \"value\": \"{{ $json['action.4.durée.jours'] }}\" },\n      { \"name\": \"action.5.durée.jours\", \"value\": \"{{ $json['action.5.durée.jours'] }}\" }\n    ]\n  }",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "credential-id",
          "name": "Pandadoc"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "d3f66733-56c4-4581-a204-4005ed73f675",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        32
      ],
      "parameters": {
        "color": 3,
        "width": 448,
        "height": 176,
        "content": "⚠️**Setup Required**\n\n```markdown\nAdd your API keys:\n- PandaDoc API Key\n- OpenRouter API Key  \n- Perplexity API Key\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "01d8ebb4-3867-4bbc-83a7-00c35a10ee69",
      "name": "Sticky Note17",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3616,
        -16
      ],
      "parameters": {
        "color": 3,
        "width": 256,
        "height": 320,
        "content": "⚠️ **PandaDoc Webhook**\n\n```markdown\nConfigure webhook\nin PandaDoc to \ntrigger on\ndocument signature\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "f64128a2-7fe0-4709-a3ad-dbcfd5ddfd6d",
      "name": "Sticky Note18",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        -272
      ],
      "parameters": {
        "width": 560,
        "height": 784,
        "content": "## Generate quotes from call transcripts with multi-agent AI\n\n### How it works\n\n1. **Google Drive trigger:** monitors folder for new .vtt transcript files\n2. **Transcript cleaning:** removes timestamps and formats raw text\n3. **Calendar matching:** finds meeting context from Google Calendar\n4. **Main AI agent (Claude/GPT):** orchestrates quote creation, extracts client info\n5. **SOW Agent:** generates scope of work content (problems, solutions, actions)\n6. **Pricing Agent:** creates pricing table with 80%+ margins using market research\n7. **PandaDoc:** creates document from template, fills tokens and pricing\n8. **Slack review:** sends for approval with approve/reject buttons\n9. **Gmail delivery:** sends signed document link to client\n10. **CRM update:** updates Notion database with client status\n\n### Setup\n\n☐ Connect **Google Drive** OAuth and set trigger folder\n☐ Add **OpenRouter** API key for AI models\n☐ Add **PandaDoc** API key and template UUID\n☐ Connect **Slack** OAuth for approval workflow\n☐ Connect **Gmail** for client emails\n☐ Connect **Notion** database for CRM\n☐ Configure **PandaDoc webhook** for signature tracking\n\n### Customize\n\n- **AI Models:** swap Claude/GPT models in agent nodes\n- **Pricing:** adjust margin rules in Pricing Agent prompt\n- **Template:** modify PandaDoc template tokens as needed"
      },
      "typeVersion": 1
    },
    {
      "id": "7d434b46-bfc5-439c-acd4-506b07891c33",
      "name": "Analysis & Orchestrator Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2304,
        160
      ],
      "parameters": {
        "text": "={\n  \"meeting_title\": \"{{ $json.summary }}\",\n  \"client_email\": \"{{ $json.attendees[0].email }}\",\n  \"current_date\": \"{{ $now.format('yyyy-MM-dd') }}\",\n  \"transcript\": \"{{ $('Clean Transcript').item.json.cleaned_text }}\",\n  \"sender\": {\n    \"first_name\": \"[Insert your firstname here]\",\n    \"last_name\": \"[insert your lastname here]\",\n    \"company\": \"[Insert your company Here]\"\n  }\n}",
        "options": {
          "systemMessage": "You are the main orchestrator agent for an AI automation agency.\nYour mission: transform a meeting transcript into a clear, structured quote.\n\nYou receive:\n- The meeting title\n- The current date\n- The client's email address\n- The raw call transcript\n\nYour role:\n1. Generate the client's company name or \"Freelancer\" if they're independent\n2. Extract the client's first name, last name, and email\n3. Generate a clear proposal title\n4. Complete the required fields to create the quote via PandaDoc using your \"quote_creation\" tool\n\nIf everything is ready, trigger the SOW Agent and Pricing Agent by sending them enriched context.\n\nYou can use your Think tool to reason and Fetch Document Details to read the quote content.\n\nBe synthetic, structured, logical, and action-oriented.\n\nWait for the quote to be created first, then launch the SOW Agent. Do not launch SOW until the quote is created because you must always pass the created document ID along with the call summary to your sub-agents. Do not launch Pricing until SOW is complete, so you can pass the SOW to the Pricing Agent for a consistent and aligned quote.\n\nYou must pass the created document ID to your sub-agents.\nOutput only the document ID when finished. Nothing else. No explanation."
        },
        "promptType": "define",
        "needsFallback": true,
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    },
    {
      "id": "09b9fb7e-9702-4224-8171-48c901a9c82f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3600,
        -336
      ],
      "parameters": {
        "color": 5,
        "width": 320,
        "height": 240,
        "content": "### Video tutorial\n\n@[youtube](h6ssuN2ceOg)"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {
    "Called by Agent": [
      {
        "json": {
          "route": "main",
          "action.1": null,
          "action.2": null,
          "action.3": null,
          "action.4": null,
          "action.5": null,
          "nom client": "Sueur",
          "email client": "iaenmieux@gmail.com",
          "id doc créé": null,
          "product_1_qty": null,
          "product_2_qty": null,
          "product_3_qty": null,
          "product_1_desc": null,
          "product_1_name": null,
          "product_2_desc": null,
          "product_2_name": null,
          "product_3_desc": null,
          "product_3_name": null,
          "prénom client": "Lio",
          "acompte_percent": null,
          "desc.solution.1": null,
          "desc.solution.2": null,
          "desc.solution.3": null,
          "desc.solution.4": null,
          "desc.solution.5": null,
          "product_1_price": null,
          "product_2_price": null,
          "product_3_price": null,
          "probleme.general": null,
          "titre.solution.1": null,
          "titre.solution.2": null,
          "titre.solution.3": null,
          "titre.solution.4": null,
          "titre.solution.5": null,
          "action.1.durée.jours": null,
          "action.2.durée.jours": null,
          "action.3.durée.jours": null,
          "action.4.durée.jours": null,
          "action.5.durée.jours": null,
          "sous.problème.desc.1": null,
          "sous.problème.desc.2": null,
          "sous.problème.desc.3": null,
          "sous.problème.desc.4": null,
          "sous.problème.desc.5": null,
          "sous.problème.titre.1": null,
          "sous.problème.titre.2": null,
          "sous.problème.titre.3": null,
          "sous.problème.titre.4": null,
          "sous.problème.titre.5": null,
          "Entreprise / statut client": "Indépendant",
          "name (Proposition - proposition_title)": "Proposition - Automatisation intelligente de la gestion emails et communication",
          "Titre.proposition (Automatisation CRM + Dashboard)": "Automatisation intelligente de la gestion emails et communication"
        },
        "pairedItem": {
          "item": 0
        }
      }
    ],
    "Get many events": [
      {
        "json": {
          "id": "44egqctc4jcjpl70jv26al6g3c",
          "end": {
            "dateTime": "2025-12-09T17:30:00+01:00",
            "timeZone": "Europe/Paris"
          },
          "etag": "\"3528644941433022\"",
          "kind": "calendar#event",
          "start": {
            "dateTime": "2025-12-09T16:30:00+01:00",
            "timeZone": "Europe/Paris"
          },
          "status": "confirmed",
          "created": "2025-11-28T09:17:48.000Z",
          "creator": {
            "self": true,
            "email": "hugolepoole@gmail.com"
          },
          "iCalUID": "44egqctc4jcjpl70jv26al6g3c@google.com",
          "summary": "Monétizia x Lio Sueur",
          "updated": "2025-11-28T09:34:30.716Z",
          "htmlLink": "https://www.google.com/calendar/event?eid=NDRlZ3FjdGM0amNqcGw3MGp2MjZhbDZnM2MgaHVnb2xlcG9vbGVAbQ",
          "sequence": 0,
          "attendees": [
            {
              "email": "iaenmieux@gmail.com",
              "responseStatus": "accepted"
            },
            {
              "email": "maxencemermet@gmail.com",
              "responseStatus": "needsAction"
            },
            {
              "self": true,
              "email": "hugolepoole@gmail.com",
              "organizer": true,
              "responseStatus": "accepted"
            }
          ],
          "eventType": "default",
          "organizer": {
            "self": true,
            "email": "hugolepoole@gmail.com"
          },
          "reminders": {
            "useDefault": true
          },
          "hangoutLink": "https://meet.google.com/toj-fkca-fhp",
          "conferenceData": {
            "entryPoints": [
              {
                "uri": "https://meet.google.com/toj-fkca-fhp",
                "label": "meet.google.com/toj-fkca-fhp",
                "entryPointType": "video"
              }
            ],
            "conferenceId": "toj-fkca-fhp",
            "conferenceSolution": {
              "key": {
                "type": "hangoutsMeet"
              },
              "name": "Google Meet",
              "iconUri": "https://fonts.gstatic.com/s/i/productlogos/meet_2020q4/v6/web-512dp/logo_meet_2020q4_color_2x_web_512dp.png"
            }
          },
          "guestsCanModify": true
        }
      }
    ]
  },
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": "yrXce9YKtrOLslV3",
    "timeSavedMode": "fixed",
    "availableInMCP": true,
    "executionOrder": "v0",
    "timeSavedPerExecution": 35
  },
  "versionId": "7d29127f-4e02-4a53-8a28-08e60ea79793",
  "connections": {
    "Grok": {
      "ai_languageModel": [
        [
          {
            "node": "Pricing agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "THINK": {
      "ai_tool": [
        [
          {
            "node": "SOW Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Think": {
      "ai_tool": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "think": {
      "ai_tool": [
        [
          {
            "node": "Pricing agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "tokens": {
      "ai_tool": [
        [
          {
            "node": "SOW Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "details": {
      "main": [
        [
          {
            "node": "Search_CRM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Opus 4.5": {
      "ai_languageModel": [
        [
          {
            "node": "SOW Agent",
            "type": "ai_languageModel",
            "index": 1
          }
        ]
      ]
    },
    "Status ?": {
      "main": [
        [
          {
            "node": "Document Ready?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SOW Agent": {
      "ai_tool": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Send_mode": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculator": {
      "ai_tool": [
        [
          {
            "node": "Pricing agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "GPT4 Turbo": {
      "ai_languageModel": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "ai_languageModel",
            "index": 1
          }
        ]
      ]
    },
    "Search_CRM": {
      "main": [
        [
          {
            "node": "Find Client in CRM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sonnet 4.5": {
      "ai_languageModel": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "GPT 4 TURBO": {
      "ai_languageModel": [
        [
          {
            "node": "SOW Agent",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "GPT4o TURBO": {
      "ai_languageModel": [
        [
          {
            "node": "Pricing agent",
            "type": "ai_languageModel",
            "index": 1
          }
        ]
      ]
    },
    "Create Quote": {
      "main": [
        [
          {
            "node": "Wait for completion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Approved?": {
      "main": [
        [
          {
            "node": "Send_mode",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "feedback_collection",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "welcome_mail": {
      "main": [
        [
          {
            "node": "confirmation_message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download file": {
      "main": [
        [
          {
            "node": "Binary to text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pricing agent": {
      "ai_tool": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "SOW Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Simple memory": {
      "ai_memory": [
        [
          {
            "node": "Pricing agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Update Tokens": {
      "main": [
        [
          {
            "node": "Token Update Success",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Token Update Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update status": {
      "main": [
        [
          {
            "node": "welcome_mail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Binary to text": {
      "main": [
        [
          {
            "node": "Clean Transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get_review_URL": {
      "main": [
        [
          {
            "node": "Send for Review",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        [
          {
            "node": "confirmation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "quote_creation": {
      "ai_tool": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "update_pricing": {
      "ai_tool": [
        [
          {
            "node": "Pricing agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Called by Agent": {
      "main": [
        [
          {
            "node": "Route by Action Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Document Ready?": {
      "main": [
        [
          {
            "node": "Return Document Info",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Status ?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many events": {
      "main": [
        [
          {
            "node": "Match Meeting by Title",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send for Review": {
      "main": [
        [
          {
            "node": "Is Approved?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean Transcript": {
      "main": [
        [
          {
            "node": "Get many events",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Client in CRM": {
      "main": [
        [
          {
            "node": "Update status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "when_doc_is_signed": {
      "main": [
        [
          {
            "node": "details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for completion": {
      "main": [
        [
          {
            "node": "Status ?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "feedback_collection": {
      "main": [
        [
          {
            "node": "Log Rejection Feedback",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive Trigger": {
      "main": [
        [
          {
            "node": "Download file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by Action Type": {
      "main": [
        [
          {
            "node": "Create Quote",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Tokens",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Pricing Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Pricing Payload": {
      "main": [
        [
          {
            "node": "Update Pricing Section",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DB_services_&_details": {
      "ai_tool": [
        [
          {
            "node": "Pricing agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Document Details": {
      "ai_tool": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Match Meeting by Title": {
      "main": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pricing Update Success": {
      "main": [
        []
      ]
    },
    "Search Tools & pricing": {
      "ai_tool": [
        [
          {
            "node": "Pricing agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update Pricing Section": {
      "main": [
        [
          {
            "node": "Pricing Update Success",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Pricing Update Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Analysis & Orchestrator Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "project_duration_calculation": {
      "ai_tool": [
        [
          {
            "node": "SOW Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Analysis & Orchestrator Agent": {
      "main": [
        [
          {
            "node": "Get_review_URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}