{
  "id": "un7napkeeNqhsSTE",
  "meta": {
    "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\ud83c\udfaf 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\ud83e\udde0 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\ud83e\uddfe 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: \u20ac10-50/month\n   \u2192 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\ud83d\udce6 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 \u2192 all its fields = null\n- price = number (excl. tax) without \u20ac\n- qty \u2265 1\n- acompte_percent \u2208 [20, 70]\n\n\ud83d\udeab 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\ud83c\udfc6 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\u00e8me.titre.1\", \"value\": \"Problem title 1\" },\n      { \"name\": \"sous.probl\u00e8me.desc.1\", \"value\": \"Problem description 1\" },\n      { \"name\": \"sous.probl\u00e8me.titre.2\", \"value\": \"Problem title 2\" },\n      { \"name\": \"sous.probl\u00e8me.desc.2\", \"value\": \"Problem description 2\" },\n      { \"name\": \"sous.probl\u00e8me.titre.3\", \"value\": \"Problem title 3\" },\n      { \"name\": \"sous.probl\u00e8me.desc.3\", \"value\": \"Problem description 3\" },\n      { \"name\": \"sous.probl\u00e8me.titre.4\", \"value\": \"Problem title 4\" },\n      { \"name\": \"sous.probl\u00e8me.desc.4\", \"value\": \"Problem description 4\" },\n      { \"name\": \"sous.probl\u00e8me.titre.5\", \"value\": \"Problem title 5\" },\n      { \"name\": \"sous.probl\u00e8me.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\u00e9e.jours\", \"value\": \"2\" },\n      { \"name\": \"action.2.dur\u00e9e.jours\", \"value\": \"3\" },\n      { \"name\": \"action.3.dur\u00e9e.jours\", \"value\": \"1\" },\n      { \"name\": \"action.4.dur\u00e9e.jours\", \"value\": \"4\" },\n      { \"name\": \"action.5.dur\u00e9e.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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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\u00e9\u00e9": "={{ /*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\u00e9e.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_1_dur_e_jours', ``, 'string') }}",
            "action.2.dur\u00e9e.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_2_dur_e_jours', ``, 'string') }}",
            "action.3.dur\u00e9e.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_3_dur_e_jours', ``, 'string') }}",
            "action.4.dur\u00e9e.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_4_dur_e_jours', ``, 'string') }}",
            "action.5.dur\u00e9e.jours": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('action_5_dur_e_jours', ``, 'string') }}",
            "sous.probl\u00e8me.desc.1": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_1', ``, 'string') }}",
            "sous.probl\u00e8me.desc.2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_2', ``, 'string') }}",
            "sous.probl\u00e8me.desc.3": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_3', ``, 'string') }}",
            "sous.probl\u00e8me.desc.4": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_4', ``, 'string') }}",
            "sous.probl\u00e8me.desc.5": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_desc_5', ``, 'string') }}",
            "sous.probl\u00e8me.titre.1": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_1', ``, 'string') }}",
            "sous.probl\u00e8me.titre.2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_2', ``, 'string') }}",
            "sous.probl\u00e8me.titre.3": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_3', ``, 'string') }}",
            "sous.probl\u00e8me.titre.4": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sous_probl_me_titre_4', ``, 'string') }}",
            "sous.probl\u00e8me.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\u00e9nom client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "pr\u00e9nom 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\u00e9\u00e9",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id doc cr\u00e9\u00e9",
              "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\u00e8me.titre.1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.desc.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.titre.2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.desc.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.titre.3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.desc.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.titre.4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.desc.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.titre.5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sous.probl\u00e8me.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\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.1.dur\u00e9e.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.2.dur\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.2.dur\u00e9e.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.3.dur\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.3.dur\u00e9e.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.4.dur\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.4.dur\u00e9e.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.5.dur\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action.5.dur\u00e9e.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\u00e9nom client"
            },
            {
              "name": "nom client"
            },
            {
              "name": "Entreprise / statut client"
            },
            {
              "name": "id doc cr\u00e9\u00e9"
            },
            {
              "name": "probleme.general"
            },
            {
              "name": "sous.probl\u00e8me.titre.1"
            },
            {
              "name": "sous.probl\u00e8me.desc.1"
            },
            {
              "name": "sous.probl\u00e8me.titre.2"
            },
            {
              "name": "sous.probl\u00e8me.desc.2"
            },
            {
              "name": "sous.probl\u00e8me.titre.3"
            },
            {
              "name": "sous.probl\u00e8me.desc.3"
            },
            {
              "name": "sous.probl\u00e8me.titre.4"
            },
            {
              "name": "sous.probl\u00e8me.desc.4"
            },
            {
              "name": "sous.probl\u00e8me.titre.5"
            },
            {
              "name": "sous.probl\u00e8me.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\u00e9e.jours"
            },
            {
              "name": "action.2.dur\u00e9e.jours"
            },
            {
              "name": "action.3.dur\u00e9e.jours"
            },
            {
              "name": "action.4.dur\u00e9e.jours"
            },
            {
              "name": "action.5.dur\u00e9e.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\u00e9\u00e9": "={{ /*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\u00e9nom client",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "pr\u00e9nom 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\u00e9\u00e9",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "id doc cr\u00e9\u00e9",
              "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\u00e8me.titre.1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.desc.1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.titre.2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.desc.2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.titre.3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.desc.3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.titre.4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.desc.4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.titre.5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.titre.5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sous.probl\u00e8me.desc.5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sous.probl\u00e8me.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\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.1.dur\u00e9e.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.2.dur\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.2.dur\u00e9e.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.3.dur\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.3.dur\u00e9e.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.4.dur\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.4.dur\u00e9e.jours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action.5.dur\u00e9e.jours",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action.5.dur\u00e9e.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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "e764a826-6722-4d5c-ad13-2df172e93c3f",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        3360,
        -64
      ],
      "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\u00eate</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\u00e9tizIA</h1>\n  </div>\n\n  <!-- CONTENT -->\n  <div class=\"content\">\n\n    <h2 style=\"font-size: 26px; margin-bottom: 14px;\">Votre proposition est pr\u00eate</h2>\n\n    <p>Bonjour {{ $json.recipients[0].first_name }},</p>\n\n    <p>\n      Votre proposition personnalis\u00e9e est maintenant disponible.  \n      Vous pouvez la consulter et la signer en toute s\u00e9curit\u00e9 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\u00e9e & son plan d\u2019action,</li>\n      <li>les tarifs d\u00e9taill\u00e9s + acompte,</li>\n      <li>les objectifs et r\u00e9sultats attendus,</li>\n      <li>les modalit\u00e9s 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      \u00c0 tr\u00e8s vite,<br>\n      <strong>Hugo \u2014 Mon\u00e9tizIA</strong>\n    </p>\n\n  </div>\n\n  <!-- FOOTER -->\n  <div class=\"footer\">\n    Mon\u00e9tizIA \u2014 Automatisation IA & N8N \u2014 Paris<br>\n    \u00a9 {{new Date().getFullYear()}} Mon\u00e9tizIA. Tous droits r\u00e9serv\u00e9s.\n  </div>\n\n</div>\n\n</body>\n</html>",
        "options": {
          "appendAttribution": false
        },
        "subject": "Mon\u00e9tizIA \u2013 Votre proposition d\u2019automatisation IA est disponible"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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\u00e9)"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "1e8a0f8c-1d84-4ced-8842-a6e942ab888f",
      "name": "welcome_mail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        4832,
        96
      ],
      "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\u00e9tizIA</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\u00e9tizIA</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 \ud83d\ude80\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 \u00e0 <strong>Mon\u00e9tizIA</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\u00e9but de notre collaboration.\n      Nous allons maintenant lancer la phase d\u2019onboarding afin de pr\u00e9parer le d\u00e9ploiement de votre solution.\n    </p>\n\n    <ul>\n      <li>r\u00e9ception prochaine de la proc\u00e9dure d\u2019onboarding,</li>\n      <li>collecte des acc\u00e8s et informations n\u00e9cessaires,</li>\n      <li>planification du d\u00e9ploiement technique.</li>\n    </ul>\n\n    <p>\n      Pour bien d\u00e9marrer, nous vous invitons \u00e0 r\u00e9server votre call de kickoff.\n      Ce rendez-vous nous permettra d\u2019aligner les objectifs, le planning et les prochaines \u00e9tapes.\n    </p>\n\n    <div class=\"btn-wrapper\">\n      <a class=\"cta-button\" href=\"https://cal.com/hugo-monetizia/kick-off-projet\">\n        R\u00e9server le call de kickoff\n      </a>\n    </div>\n\n    <p>\n      Si vous avez la moindre question d\u2019ici l\u00e0, vous pouvez bien s\u00fbr r\u00e9pondre directement \u00e0 cet email.\n    </p>\n\n    <p>\n      \u00c0 tr\u00e8s vite,<br>\n      <strong>Hugo \u2014 Mon\u00e9tizIA</strong>\n    </p>\n\n  </div>\n\n  <!-- FOOTER -->\n  <div class=\"footer\">\n    Mon\u00e9tizIA \u2014 Automatisation IA & N8N \u2014 Paris<br>\n    \u00a9 {{new Date().getFullYear()}} Mon\u00e9tizIA. Tous droits r\u00e9serv\u00e9s.\n  </div>\n\n</div>\n\n</body>\n</html>",
        "options": {
          "appendAttribution": false
        },
        "subject": "Bienvenue chez Mon\u00e9tizIA \u2014 lancement de votre projet"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ff9e499b-f54a-4b8a-b53f-a38075284fca",
      "name": "confirmation_message",
      "type": "n8n-nodes-base.slack",
      "position": [
        5056,
        96
      ],
      "parameters": {
        "text": "={{ $('details').item.json.tokens[1].value }} {{ $('details').item.json.tokens[2].value }} de {{ $('details').item.json.tokens[0].value }} \u00e0 sign\u00e9 ton devis !",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U08QEDWD407",
          "cachedResultName": "monetizia.agence"
        },
        "select": "user",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "f734103d-40f4-4dec-b614-3305b26de69d",
      "name": "when_doc_is_signed",
      "type": "n8n-nodes-base.webhook",
      "position": [
        3696,
        160
      ],
      "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\u00e9nom 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\u00e9nom client",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "pr\u00e9nom 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
      ],
      "parameters": {
        "text": "=\ud83d\ude80 Proposition envoy\u00e9e \u00e0 {{ $('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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "5dca8514-ddfa-4772-bd43-f386b17dda59",
      "name": "feedback_collection",
      "type": "n8n-nodes-base.slack",
      "position": [
        2784,
        112
      ],
      "parameters": {
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U08QEDWD407",
          "cachedResultName": "monetizia.agence"
        },
        "message": "\u274c Proposition refus\u00e9e  \n\nMerci de renseigner ce court formulaire pour comprendre ce qui n\u2019allait pas \ud83d\ude4f",
        "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\u00e9rent ou mal structur\u00e9"
                  },
                  {
                    "option": "Produits incomplets ou incorrects"
                  },
                  {
                    "option": "Mauvaise compr\u00e9hension du besoin client"
                  },
                  {
                    "option": "Style / formulation \u00e0 am\u00e9liorer"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "radio",
              "fieldLabel": "Le document \u00e9tait-il clair ?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Tr\u00e8s 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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "31212578-2bf6-4f25-ac7f-98cb7235bc24",
      "name": "Clean Transcript",
      "type": "n8n-nodes-base.code",
      "position": [
        2272,
        -208
      ],
      "parameters": {
        "jsCode": "// R\u00e9cup\u00e9ration du JSON d\u2019entr\u00e9e (\u00e9quivalent 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 \u00e0 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\u00e9 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      // \u26a0 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        // \u26a0 Discount doit contenir OBLIGATOIREMENT \u201cname\u201d\n        options: {\n          discount: {\n            type: \"percent\",\n            name: \"Acompte\",   // \u2190 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\u00e9ussi !"
            }
          ]
        }
      },
      "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 \u00e9t\u00e9 MAJ correctement. R\u00e9essaye."
            }
          ]
        }
      },
      "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\u00e9ussi !"
            }
          ]
        }
      },
      "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 \u00e9t\u00e9 MAJ correctement. R\u00e9essaye."
            }
          ]
        }
      },
      "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\u00e9\u00e9 avec succ\u00e8s !"
            },
            {
              "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": {
          "name": "<your credential>"
        }
      },
      "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 \u00e9tait-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\u00e9ateur de Devis"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0dd6f644-dece-4d35-aff6-9ce2e91db0d6",
      "name": "Send for Review",
      "type": "n8n-nodes-base.slack",
      "position": [
        2960,
        -160
      ],
      "parameters": {
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U08QEDWD407",
          "cachedResultName": "monetizia.agence"
        },
        "message": "=\ud83d\udcc4 Nouvelle proposition pr\u00eate \u00e0 review\n\nClient : {{ $json.tokens[1].value }} {{ $json.tokens[2].value }} - {{ $json.tokens[0].value }}\nProjet : {{ $json.name }}\n\n\ud83d\udc49 Lien de review : https://app.pandadoc.com/a/#/documents/{{ $json.id }}\n\n\ud83e\udde0 R\u00e9sum\u00e9 auto :\n- Total : {{ $json.pricing.tables[0].summary.subtotal }}\u20ac\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\u00e9agis avec \ud83d\udc4d pour envoyer au client.\nR\u00e9agis avec \u274c pour bloquer.",
        "options": {
          "appendAttribution": false
        },
        "operation": "sendAndWait",
        "authentication": "oAuth2",
        "approvalOptions": {
          "values": {
            "approvalType": "double",
            "approveLabel": "\ud83d\udc4d",
            "disapproveLabel": "\u274c"
          }
        }
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "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\u00e9\u00e9\"] }}",
        "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\u00e9nom 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\u00e9tizIA\"\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\u00e9tizIA\"\n    }\n  ]\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "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
      ],
      "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\u00e9\u00e9'] }}",
        "method": "PATCH",
        "options": {},
        "jsonBody": "={\n   \"tokens\": [\n      { \"name\": \"probleme.general\", \"value\": \"{{ $json['probleme.general'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.titre.1\", \"value\": \"{{ $json['sous.probl\u00e8me.titre.1'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.desc.1\", \"value\": \"{{ $json['sous.probl\u00e8me.desc.1'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.titre.2\", \"value\": \"{{ $json['sous.probl\u00e8me.titre.2'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.desc.2\", \"value\": \"{{ $json['sous.probl\u00e8me.desc.2'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.titre.3\", \"value\": \"{{ $json['sous.probl\u00e8me.titre.3'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.desc.3\", \"value\": \"{{ $json['sous.probl\u00e8me.desc.3'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.titre.4\", \"value\": \"{{ $json['sous.probl\u00e8me.titre.4'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.desc.4\", \"value\": \"{{ $json['sous.probl\u00e8me.desc.4'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.titre.5\", \"value\": \"{{ $json['sous.probl\u00e8me.titre.5'] }}\" },\n      { \"name\": \"sous.probl\u00e8me.desc.5\", \"value\": \"{{ $json['sous.probl\u00e8me.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\u00e9e.jours\", \"value\": \"{{ $json['action.1.dur\u00e9e.jours'] }}\" },\n      { \"name\": \"action.2.dur\u00e9e.jours\", \"value\": \"{{ $json['action.2.dur\u00e9e.jours'] }}\" },\n      { \"name\": \"action.3.dur\u00e9e.jours\", \"value\": \"{{ $json['action.3.dur\u00e9e.jours'] }}\" },\n      { \"name\": \"action.4.dur\u00e9e.jours\", \"value\": \"{{ $json['action.4.dur\u00e9e.jours'] }}\" },\n      { \"name\": \"action.5.dur\u00e9e.jours\", \"value\": \"{{ $json['action.5.dur\u00e9e.jours'] }}\" }\n    ]\n  }",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "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": "\u26a0\ufe0f**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": "\u26a0\ufe0f **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\u2610 Connect **Google Drive** OAuth and set trigger folder\n\u2610 Add **OpenRouter** API key for AI models\n\u2610 Add **PandaDoc** API key and template UUID\n\u2610 Connect **Slack** OAuth for approval workflow\n\u2610 Connect **Gmail** for client emails\n\u2610 Connect **Notion** database for CRM\n\u2610 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,
  "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
          }
        ]
      ]
    }
  }
}