Client Meeting Prep And Proposal Agent in n8n - By Sohail

    Shared 12/4/2025

    1 views

    Visual Workflow

    JSON Code

    {
      "id": "8R7IsSbWbiqCozzw",
      "meta": {
        "instanceId": "9fb634bb746cbe3fe9f7fa86fdd635510d2f0c24c4ba919fbba1ca6aec3c4e57",
        "templateCredsSetupCompleted": true
      },
      "name": "Client Meeting Prep And Proposal Agent v1",
      "tags": [],
      "nodes": [
        {
          "id": "926b6c2e-e4dc-439d-b181-98074fc24cbb",
          "name": "Extract Booking Details",
          "type": "n8n-nodes-base.set",
          "position": [
            -6560,
            -224
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "name-field",
                  "name": "name",
                  "type": "string",
                  "value": "={{ $json.attendees[0].name }}"
                },
                {
                  "id": "email-field",
                  "name": "email",
                  "type": "string",
                  "value": "={{ $json.attendees[0].email }}"
                },
                {
                  "id": "details-field",
                  "name": "reason",
                  "type": "string",
                  "value": "={{ $json.responses.title.value }}"
                },
                {
                  "id": "company-field",
                  "name": "websiteUrl",
                  "type": "string",
                  "value": "={{ $json.responses.websiteUrl.value }}"
                },
                {
                  "id": "f76ce59c-d031-426b-aadd-0eb0940e6a2c",
                  "name": "date",
                  "type": "string",
                  "value": "={{ $json.startTime }}"
                },
                {
                  "id": "599011c4-6c7e-44bd-bd0f-6ef1a25f19c2",
                  "name": "meetUrl",
                  "type": "string",
                  "value": "={{ $json.metadata.videoCallUrl }}"
                },
                {
                  "id": "bbc1f386-22ed-4b4b-b8e1-0aff021c19d3",
                  "name": "bookingUrl",
                  "type": "string",
                  "value": "=https://cal.com/booking/{{ $json.uid }}"
                },
                {
                  "id": "bf81a182-9105-41fb-a8ae-92db7eb9b482",
                  "name": "hostEmail",
                  "type": "string",
                  "value": "={{ $json.organizer.email }}"
                },
                {
                  "id": "2d325285-64f7-424a-8397-5f0c635f7404",
                  "name": "hostName",
                  "type": "string",
                  "value": "={{ $json.organizer.name }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "5a373c6d-1ec0-4eca-afa9-37b42b3deb9a",
          "name": "Perplexity: Research Attendee",
          "type": "n8n-nodes-base.httpRequest",
          "notes": "Uses Perplexity AI to research the individual's professional background",
          "position": [
            -5984,
            -368
          ],
          "parameters": {
            "url": "https://api.perplexity.ai/chat/completions",
            "method": "POST",
            "options": {},
            "jsonBody": "={\n  \"model\": \"sonar-pro\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"{{ $json.researchAttendeePrompt.replace(/\\r?\\n|\\r/g, ' ')\n  .replace(/\"/g, '')\n  .replace(/[“”]/g, '')  }}\"\n    }\n  ],\n  \"web_search_options\": {\n    \"max_search_results\": 5\n  }\n}",
            "sendBody": true,
            "specifyBody": "json",
            "authentication": "genericCredentialType",
            "genericAuthType": "httpBearerAuth"
          },
          "credentials": {
            "perplexityApi": {
              "id": "uFjIbcUyKSbqrCGQ",
              "name": "Perplexity account"
            },
            "httpBearerAuth": {
              "id": "jSA7SqSDy6NyNu4t",
              "name": "Perplexity Auth"
            },
            "httpHeaderAuth": {
              "id": "SS9VwEoLC4cF0rSR",
              "name": "Unipile Auth"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "434ef35d-3148-43e9-b8a8-eecaa4d803cd",
          "name": "Perplexity: Research Company Info",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -5984,
            -96
          ],
          "parameters": {
            "url": "https://api.perplexity.ai/chat/completions",
            "method": "POST",
            "options": {},
            "jsonBody": "={\n  \"model\": \"sonar-pro\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"{{ $json.researchCompanyPrompt.replace(/\\r?\\n|\\r/g, ' ')\n  .replace(/\"/g, '')\n  .replace(/[“”]/g, '')  }}\"\n    }\n  ],\n  \"web_search_options\": {\n    \"max_search_results\": 5\n  }\n}",
            "sendBody": true,
            "specifyBody": "json",
            "authentication": "genericCredentialType",
            "genericAuthType": "httpBearerAuth"
          },
          "credentials": {
            "httpBearerAuth": {
              "id": "jSA7SqSDy6NyNu4t",
              "name": "Perplexity Auth"
            },
            "httpHeaderAuth": {
              "id": "SS9VwEoLC4cF0rSR",
              "name": "Unipile Auth"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "9f9fc6f9-97d5-4c6c-9822-d5849eb32b96",
          "name": "Extract Attendee Research",
          "type": "n8n-nodes-base.set",
          "position": [
            -5664,
            -368
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "3ff2c7fe-81dd-4fbf-9527-5966e0ca854e",
                  "name": "individualResearch",
                  "type": "string",
                  "value": "={{ $json.choices[0].message.content }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "a0d155fc-959a-4b21-b013-aeaa6dad37dd",
          "name": "Extract Meeting Goals",
          "type": "n8n-nodes-base.set",
          "position": [
            -5648,
            192
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "54cb21c8-f80e-41f3-a45e-7c3d7ae283dd",
                  "name": "goalsAnalysis",
                  "type": "string",
                  "value": "={{ $json.text }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "77c1dab1-f439-41f5-b842-49806a6aebbd",
          "name": "Extract Company Research",
          "type": "n8n-nodes-base.set",
          "position": [
            -5648,
            -96
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "6402853b-4101-4e05-96c3-87c0d9a5682b",
                  "name": "companyResearch",
                  "type": "string",
                  "value": "={{ $json.choices[0].message.content }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "4e99abcd-aa46-47a7-aeb8-65ed94024c50",
          "name": "Combine Research Results",
          "type": "n8n-nodes-base.merge",
          "position": [
            -5376,
            -256
          ],
          "parameters": {
            "numberInputs": 4
          },
          "typeVersion": 3.1
        },
        {
          "id": "ca474e6d-5e31-4511-b9d4-d7e71be71538",
          "name": "Consolidate Research Data",
          "type": "n8n-nodes-base.aggregate",
          "position": [
            -5184,
            -224
          ],
          "parameters": {
            "options": {},
            "fieldsToAggregate": {
              "fieldToAggregate": [
                {
                  "fieldToAggregate": "individualResearch"
                },
                {
                  "fieldToAggregate": "goalsAnalysis"
                },
                {
                  "fieldToAggregate": "companyResearch"
                },
                {
                  "fieldToAggregate": "competitorResearch"
                }
              ]
            }
          },
          "typeVersion": 1
        },
        {
          "id": "cbadb312-9ce1-46e4-b41b-d43bce3b98fc",
          "name": "Assemble Email Package",
          "type": "n8n-nodes-base.merge",
          "position": [
            -4000,
            -240
          ],
          "parameters": {
            "mode": "combine",
            "options": {},
            "combineBy": "combineByPosition",
            "numberInputs": 3
          },
          "typeVersion": 3.1
        },
        {
          "id": "6a9b5581-6670-49a0-8085-0eb67b91350b",
          "name": "Cal.com Trigger",
          "type": "n8n-nodes-base.calTrigger",
          "position": [
            -6992,
            -224
          ],
          "webhookId": "35e03365-84bf-4c5e-a00c-1489564c0d96",
          "parameters": {
            "events": [
              "BOOKING_CREATED"
            ],
            "options": {}
          },
          "credentials": {
            "calApi": {
              "id": "AgJNQCAQYNVzmKcW",
              "name": "Cal account"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "33d09ad2-37d4-4f9b-bb77-9d3cca63b3cf",
          "name": "Meeting Goal Analysis",
          "type": "@n8n/n8n-nodes-langchain.chainLlm",
          "position": [
            -5984,
            192
          ],
          "parameters": {
            "text": "={{ $json.researchGoalPrompt }}",
            "batching": {},
            "promptType": "define"
          },
          "typeVersion": 1.7
        },
        {
          "id": "8639d6c9-5b39-4122-b795-80557602c4b9",
          "name": "OpenRouter Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
          "position": [
            -4736,
            -48
          ],
          "parameters": {
            "options": {}
          },
          "credentials": {
            "openRouterApi": {
              "id": "6z6zYFNsqyqFRUEB",
              "name": "OpenRouter account"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "e908f204-987d-4a9c-8195-893937df02a6",
          "name": "Extract Competitor Research",
          "type": "n8n-nodes-base.set",
          "position": [
            -5664,
            -624
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "3ff2c7fe-81dd-4fbf-9527-5966e0ca854e",
                  "name": "competitorResearch",
                  "type": "string",
                  "value": "={{ $json.choices[0].message.content }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "e366a968-c80f-4215-82bb-40274f8d7c88",
          "name": "Set Research Prompts",
          "type": "n8n-nodes-base.set",
          "position": [
            -6336,
            -224
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "8e0e981c-18de-4e78-bce7-e25efdd0c9af",
                  "name": "researchCompetitorPrompt",
                  "type": "string",
                  "value": "=Provide a detailed competitor research analysis for the following company website:\n\nWebsite: {{ $json.websiteUrl }}\n\nIdentify the company’s primary competitors, compare their products or services, pricing models, market positioning, strengths, and weaknesses. Include any notable trends in the competitive landscape and highlight areas where the company may have strategic advantages or vulnerabilities.\n"
                },
                {
                  "id": "41ca99d2-0e48-4bb3-a16b-833a31f30762",
                  "name": "researchAttendeePrompt",
                  "type": "string",
                  "value": "=Summarize the professional background and relevant information about this individual:\n\nName: {{ $json.name }}\nEmail: {{ $json.email }}\n\nFocus on job title, industry, notable press mentions, and any interesting professional highlights."
                },
                {
                  "id": "80a47f1e-6ee8-4b09-850a-2513991ce8bf",
                  "name": "researchCompanyPrompt",
                  "type": "string",
                  "value": "=Provide a comprehensive analysis of:\n\nCompany: {{ $json.websiteUrl }}\n\nInclude its mission, key products or services, leadership team, company history, recent news or developments, and funding history (if applicable). Highlight what makes the company/individual notable and any strategic initiatives or challenges it may be facing.\n"
                },
                {
                  "id": "aaccb629-4712-4ebb-a01d-6302cf2fbb21",
                  "name": "researchGoalPrompt",
                  "type": "string",
                  "value": "=You are a meeting assistant for an AI Agency that consults with clients to implement AI into their business systems.  Analyze the following calendar booking details to identify the requester's possible goals, pain points, and expectations for our upcoming meeting. Summarize their likely needs and suggest a few tailored questions or prep points I should consider before the call.  \n\nAdditional details from booking: \nName: {{ $json.name }}\nEmail: {{ $json.email }}\nReason: {{ $json.reason }}\nWebsite: {{ $json.websiteUrl }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "47c3ba60-e54b-43b5-91e1-37df991f5153",
          "name": "Perplexity: Research Competitor",
          "type": "n8n-nodes-base.httpRequest",
          "notes": "Uses Perplexity AI to research the individual's professional background",
          "position": [
            -5984,
            -624
          ],
          "parameters": {
            "url": "https://api.perplexity.ai/chat/completions",
            "method": "POST",
            "options": {},
            "jsonBody": "={\n  \"model\": \"sonar-pro\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"{{ $json.researchCompetitorPrompt.replace(/\\r?\\n|\\r/g, ' ')\n  .replace(/\"/g, '')\n  .replace(/[“”]/g, '')  }}\"\n    }\n  ],\n  \"web_search_options\": {\n    \"max_search_results\": 10\n  }\n}",
            "sendBody": true,
            "specifyBody": "json",
            "authentication": "genericCredentialType",
            "genericAuthType": "httpBearerAuth"
          },
          "credentials": {
            "perplexityApi": {
              "id": "uFjIbcUyKSbqrCGQ",
              "name": "Perplexity account"
            },
            "httpBearerAuth": {
              "id": "jSA7SqSDy6NyNu4t",
              "name": "Perplexity Auth"
            },
            "httpHeaderAuth": {
              "id": "SS9VwEoLC4cF0rSR",
              "name": "Unipile Auth"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "e482674b-7585-4e71-a669-7e865ec98745",
          "name": "Meeting Prep Report Generator",
          "type": "@n8n/n8n-nodes-langchain.chainLlm",
          "position": [
            -4944,
            -224
          ],
          "parameters": {
            "text": "=You are a meeting prep assistant helping me consolidate research into a single, easy-to-read report.\n\nPlease compile the following information into a structured briefing report that flows naturally when read aloud (for use with a text-to-speech tool later). The report should be concise (under 1500 characters)\n\nThe report should include:\n- A brief summary of the individual (title, background, accomplishments, communication style)\n- A summary of the company (industry, mission, recent news, market position)\n- Key insights or red flags from both\n- Inferred goals, needs, or expectations for the meeting (from calendar data)\n- 3-5 personalized questions I could ask to show preparedness and build rapport\n\n### Research on the individual\n{{ $json.individualResearch[0] }}\n\n### Research on the company\n{{ $json.companyResearch[0] }}\n\n### Research on the company competitor\n{{ $json.competitorResearch[0] }}\n\n### Booking detail analysis\n{{ $json.goalsAnalysis[0] }}",
            "batching": {},
            "promptType": "define"
          },
          "typeVersion": 1.7
        },
        {
          "id": "ff5036b5-e43a-46cd-8a04-e7cc8b5e5f06",
          "name": "Meeting Brief Email Formatter",
          "type": "@n8n/n8n-nodes-langchain.chainLlm",
          "position": [
            -4576,
            -224
          ],
          "parameters": {
            "text": "=Summarize the content below into concise HTML bullet points for an email.\n\nRequirements:\n\nUse HTML formatting\n\nStart with:\n“Hello,<br><br>Here is a summary prepared for your upcoming meeting with {{ $('Extract Booking Details').item.json.name }}:”\n\nThen output bullet points using <ul><li>\n\nOnly return the HTML body — no signatures, no markdown, no explanations\n\nClient Information\n\nClient Name: {{ $('Extract Booking Details').item.json.name }}\nClient Email: {{ $('Extract Booking Details').item.json.email }}\nClient Website: {{ $('Extract Booking Details').item.json.websiteUrl }}\n\nContent to Summarize\n{{ $json.text }}",
            "batching": {},
            "messages": {
              "messageValues": [
                {
                  "message": "=You are an AI assistant that creates concise, email-ready HTML summaries from longer text.\nYour writing must be clean, readable, and formatted for email clients.\n\nOUTPUT RULES\n\nOutput ONLY the HTML body, no plaintext, no markdown, no JSON.\n\nStart with a simple, friendly introduction like:\n“Hello,<br><br>Here is a summary of the meeting cheat sheet prepared for your upcoming meeting:”\n\nAfter the introduction, present the summary as clean HTML bullet points (<ul><li>).\n\nMake the summary short, concise, and high-signal.\n\nNo signature at the end.\n\nNo headings unless wrapped in <strong>.\n\nWRITING STYLE\n\nClear\n\nCrisp\n\nNo rambling\n\nNo unnecessary sentences\n\nNo speculation\n\nNo extra commentary\n\n⭐ SYSTEM PROMPT — SAMPLE OUTPUTS\nSample Output 1 (Strong content available)\nHere is a summary of the meeting cheat sheet prepared for your upcoming meeting:<br><br>\n\n<ul>\n  <li>The client wants to automate manual data entry processes across departments.</li>\n  <li>Main pain points include slow turnaround, duplicate work, and errors in reporting.</li>\n  <liThey are exploring AI-based calling systems for follow-ups and reminders.</li>\n  <li>Competitors already use automation, creating pressure to modernize.</li>\n  <li>Goal: Reduce manual load, improve turnaround time, and unify communication workflows.</li>\n</ul>\n\nSample Output 2 (Weak content available)\nHello,<br><br>\nHere is a summary of the meeting cheat sheet prepared for your upcoming meeting:<br><br>\n\n<ul>\n  <li>Only minimal information was available in the provided text.</li>\n  <li>Recommend gathering more details before the meeting.</li>\n</ul>"
                }
              ]
            },
            "promptType": "define"
          },
          "typeVersion": 1.7
        },
        {
          "id": "ff67abef-e1ce-4b3f-9a35-6bb3b0ca664f",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -6304,
            -448
          ],
          "parameters": {
            "width": 608,
            "height": 272,
            "content": "## Perplexity: Research Attendee"
          },
          "typeVersion": 1
        },
        {
          "id": "b1a86a87-4860-4810-9a56-d000ff354e2a",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -6304,
            -176
          ],
          "parameters": {
            "width": 608,
            "height": 272,
            "content": "## Research Company Info"
          },
          "typeVersion": 1
        },
        {
          "id": "7329d6f7-2e8b-4a16-9b4d-e71af8ca68e4",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -6304,
            -704
          ],
          "parameters": {
            "width": 608,
            "height": 256,
            "content": "## Perplexity: Research Competitor"
          },
          "typeVersion": 1
        },
        {
          "id": "5d03f88e-9ca6-474e-bc1e-6bcd3d6f494f",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -6304,
            96
          ],
          "parameters": {
            "width": 608,
            "height": 256,
            "content": "## Meeting Goal Analysis"
          },
          "typeVersion": 1
        },
        {
          "id": "57198d3d-8bb5-4e02-89ce-5cf269b4b904",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -7072,
            -448
          ],
          "parameters": {
            "width": 768,
            "height": 544,
            "content": "## Get Meeting Details And Set Research Prompts"
          },
          "typeVersion": 1
        },
        {
          "id": "9d7e326b-e848-4eb2-b397-f79821805641",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -5696,
            -448
          ],
          "parameters": {
            "width": 480,
            "height": 544,
            "content": "## Combine Research"
          },
          "typeVersion": 1
        },
        {
          "id": "62a51090-d236-4e25-80a9-d551c9bc33c6",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -5216,
            -512
          ],
          "parameters": {
            "width": 1168,
            "height": 672,
            "content": "## Compose Client Proposal And Team Briefing"
          },
          "typeVersion": 1
        },
        {
          "id": "e87b1e51-effe-4cc3-9e69-ddcfee4efed0",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -4048,
            -512
          ],
          "parameters": {
            "width": 720,
            "height": 672,
            "content": "## Send And Save Updates"
          },
          "typeVersion": 1
        },
        {
          "id": "f6f1d897-b7de-4440-ad5f-2089de304c19",
          "name": "Client Proposal Generator",
          "type": "@n8n/n8n-nodes-langchain.chainLlm",
          "position": [
            -4944,
            -400
          ],
          "parameters": {
            "text": "=Please generate a hyper-personalized proposal using the following:\n\nClient Name: {{ $('Extract Booking Details').item.json.name }}\nBooking Reason: {{ $('Extract Booking Details').item.json.reason }}\nClient Website: {{ $('Extract Booking Details').item.json.websiteUrl }}\n\nIndividual Research\n\n{{ $json.individualResearch[0] }}\n\nCompany Research\n\n{{ $json.companyResearch[0] }}\n\nCompetitor Research\n\n{{ $json.competitorResearch[0] }}\n\nBooking Detail Analysis\n\n{{ $json.goalsAnalysis[0] }}\n\nReturn ONLY valid JSON with:\n\nsummaryHtml (must begin with the required intro and use <strong> headings)\n\nconfidenceScore (0–100)\n\nproposalGood (boolean)",
            "batching": {},
            "messages": {
              "messageValues": [
                {
                  "message": "=You are writing as a real team member of The Zen Labs, representing founder Sohail Jafri.\nEvery proposal MUST start with the following intro (exact wording):\n\n“Hi {{ name }}, this is Sohail’s AI Assistance from The Zen Labs. I reviewed your details and here’s a quick, personalized breakdown.”\n\nReplace {{ name }} with the client’s actual name when generating the summary.\n\nYou MUST always return valid JSON with:\n\nsummaryHtml:\n\nStarts with the required intro.\n\nUses ONLY <strong> for headings (NO h-tags).\n\nUnder 1500 characters.\n\nWritten in a human, conversational, consultant-like voice.\n\nconfidenceScore: 0–100\n\nproposalGood: true if score ≥ 60, else false\n\nIf research is weak, write a short, cautious proposal and reduce the score.\n\n🎯 TONE REQUIREMENTS\n\nSound like Sohail or a Zen Labs strategist — confident, real, and practical.\n\nShort sentences. Zero fluff.\n\nNo corporate textbook phrasing.\n\nNo AI buzzwords.\n\nHyper-personalized to the company situation.\n\nKeep it conversational but sharp.\n\n🧠 THE ZEN LABS — KNOWLEDGE BASE (Team Voice Edition)\n\nWe build AI automation systems that remove repetitive work and increase productivity.\nOur strengths include:\n\nContent automation (blogs, UGC, videos, calendars)\n\nOperational automation\n\nAI inbound/outbound voice callers\n\nCustom internal tools & workflow systems\n\nWebsites, applications, integrations\n\nStrong full-stack engineering & architecture\n\nIndustries we specialize in: dental, pharma, real estate, back-office-heavy operations, product-based companies.\n\nWe design systems that reduce manual effort, improve response times, and free teams to focus on meaningful work.\n\n⭐ UPDATED SAMPLE OUTPUTS (WITH EMAIL INTRO)\nSample — Strong, Human Tone\n{\n  \"summaryHtml\": \"Hi Rohit, this is Sohail’s AI Assistance from The Zen Labs. I reviewed your details and here’s a quick, personalized breakdown.<br><br><strong>Quick Summary</strong><br>Prince Pipes handles heavy dealer communication manually, which slows follow-ups and creates missed-call gaps. An AI caller built around your workflows can remove a big chunk of routine calling.<br><br><strong>What We Suggest</strong><br>A multilingual AI agent that manages inquiries, dealer check-ins, reminders, and outbound coordination — all synced with your CRM.<br><br><strong>Why This Fits</strong><br>Your scale demands faster communication and fewer manual loops. This system saves hours weekly and keeps things consistent across regions.\",\n  \"confidenceScore\": 93,\n  \"proposalGood\": true\n}\n\nSample — Weak Research\n{\n  \"summaryHtml\": \"Hi there, this is Sohail’s AI Assistance from The Zen Labs. Based on the limited info available, here’s a quick initial view.<br><br><strong>Quick Note</strong><br>An AI calling workflow could still help reduce manual follow-ups, but we’d need more details from your side to personalize this properly.\",\n  \"confidenceScore\": 32,\n  \"proposalGood\": false\n}\n\n📌 OUTPUT RULES\n\nALWAYS start with the intro:\n“Hi {{ name }}, this is Sohail’s AI Assistance from The Zen Labs. I reviewed your details and here’s a quick, personalized breakdown.”\n\nUse <strong> for headings only\n\nUnder 1500 characters\n\nClean HTML\n\nNatural, human, Zen Labs tone\n\nJSON only"
                }
              ]
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 1.7
        },
        {
          "id": "f684d342-7589-4458-b761-6bbce44d63dd",
          "name": "If Proposal Good",
          "type": "n8n-nodes-base.if",
          "position": [
            -4240,
            -400
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "464c9d38-d5e0-404a-956a-351891d945bc",
                  "operator": {
                    "type": "boolean",
                    "operation": "true",
                    "singleValue": true
                  },
                  "leftValue": "={{ $json.output.proposalGood }}",
                  "rightValue": ""
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "044ef978-bb19-42e6-8a5c-e669b74d71cb",
          "name": "ProposalOutput",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            -4592,
            -400
          ],
          "parameters": {
            "autoFix": true,
            "schemaType": "manual",
            "inputSchema": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"ProposalOutput\",\n  \"type\": \"object\",\n  \"required\": [\"summaryHtml\", \"confidenceScore\", \"proposalGood\"],\n  \"properties\": {\n    \"summaryHtml\": {\n      \"type\": \"string\",\n      \"description\": \"HTML-formatted summary of the proposal. Must be valid HTML or plain text wrapped in HTML tags.\"\n    },\n    \"confidenceScore\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"description\": \"Score from 0 to 100 representing how strong or persuasive the proposal is.\"\n    },\n    \"proposalGood\": {\n      \"type\": \"boolean\",\n      \"description\": \"Boolean indicating whether the proposal is strong enough to send (true if confidenceScore >= 60).\"\n    }\n  },\n  \"additionalProperties\": false\n}\n"
          },
          "typeVersion": 1.3
        },
        {
          "id": "96c0f0c1-1fe9-430f-89e1-29a747379098",
          "name": "Prepare Audio Attachment",
          "type": "n8n-nodes-base.set",
          "position": [
            -3312,
            -224
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "11810997-b14b-44ca-a807-ba2bf9b688df",
                  "name": "data",
                  "type": "string",
                  "value": "={{ $binary }}"
                },
                {
                  "id": "a597e109-1ded-4aa1-a172-fa86cfaedbf5",
                  "name": "Mime Type",
                  "type": "string",
                  "value": "={{ $json.mimeType }}"
                },
                {
                  "id": "e85b5ee1-b58d-4850-aeb9-3fdfdd91adad",
                  "name": "File Name",
                  "type": "string",
                  "value": "=meeting_briefing_{{ $json.fileName }}"
                }
              ]
            },
            "includeOtherFields": true
          },
          "typeVersion": 3.4
        },
        {
          "id": "59c82673-d708-4615-86ec-bd945c5f5a49",
          "name": "Generate Audio Briefing",
          "type": "@n8n/n8n-nodes-langchain.openAi",
          "position": [
            -3536,
            -224
          ],
          "parameters": {
            "input": "={{ $('Assemble Email Package').item.json.meetingReport }}",
            "options": {},
            "resource": "audio"
          },
          "credentials": {
            "openAiApi": {
              "id": "tgl6dYfCwAsbUDtk",
              "name": "OpenAi account"
            }
          },
          "typeVersion": 1.8
        },
        {
          "id": "aba02637-4958-408a-89a4-920f102ce3aa",
          "name": "Recipient List",
          "type": "n8n-nodes-base.code",
          "position": [
            -3760,
            -224
          ],
          "parameters": {
            "jsCode": "const primaryEmail = $('Extract Booking Details').first().json.hostEmail;\nconst ccEmailList = [\"hi@thesohailjafri.me\"];\nconst bccEmailList = [\"\"];\n\n// Convert lists to comma-separated strings with clean filtering\nconst ccString = ccEmailList.filter(Boolean).join(\",\");\nconst bccString = bccEmailList.filter(Boolean).join(\",\");\n\n// Check if each one has valid values\nconst hasPrimary = Boolean(primaryEmail);\nconst hasCC = ccString.length > 0;\nconst hasBCC = bccString.length > 0;\n\nreturn { primaryEmail, ccString, bccString, hasPrimary, hasCC, hasBCC }"
          },
          "typeVersion": 2
        },
        {
          "id": "7537c1f9-6297-4acb-8b39-466cba2872a7",
          "name": "Send Team Email",
          "type": "n8n-nodes-base.gmail",
          "position": [
            -3312,
            -416
          ],
          "webhookId": "1cebcf99-25d5-464b-bd47-eb5b33142cac",
          "parameters": {
            "sendTo": "={{ $('Recipient List').item.json.primaryEmail }}",
            "message": "={{ $('Assemble Email Package').item.json.meetingReportHtml }}\n\n<p><strong>Client Name:</strong> {{ $('Extract Booking Details').item.json.name }}</p>\n<p><strong>Client Email:</strong> {{ $('Extract Booking Details').item.json.email }}</p>\n<p><strong>Booking Details:</strong> {{ $('Extract Booking Details').item.json.bookingUrl }}</p>\n<p><strong>Meet Link:</strong> {{ $('Extract Booking Details').item.json.meetUrl }}</p>\n",
            "options": {
              "ccList": "={{ $('Recipient List').item.json.ccString }}",
              "bccList": "={{ $('Recipient List').item.json.bccString }}",
              "attachmentsUi": {
                "attachmentsBinary": [
                  {
                    "property": "={{ 'data' }}"
                  }
                ]
              }
            },
            "subject": "=Cal Meeting Prep - {{ $('Extract Booking Details').item.json.name }} - {{ $('Extract Booking Details').item.json.date.split('T')[0] }}"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "pT69eutSGot4W4td",
              "name": "Gmail account"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "9a9dabcc-3f9d-47b4-88dc-0f8b106f86c5",
          "name": "Send Client Proposal Email",
          "type": "n8n-nodes-base.gmail",
          "position": [
            -3760,
            -416
          ],
          "webhookId": "1cebcf99-25d5-464b-bd47-eb5b33142cac",
          "parameters": {
            "sendTo": "={{ $('Extract Booking Details').item.json.email }}",
            "message": "={{ $json.output.summaryHtml }}\n\n<p><strong>Booking Details:</strong> {{ $('Extract Booking Details').item.json.bookingUrl }}</p>\n<p><strong>Meet Link:</strong> {{ $('Extract Booking Details').item.json.meetUrl }}</p>\n",
            "options": {},
            "subject": "=Hi {{ $('Extract Booking Details').item.json.name }}, Here’s What We Can Build Together | Ai With Sohail"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "pT69eutSGot4W4td",
              "name": "Gmail account"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "7e63de10-e92a-472a-947d-0214599533fb",
          "name": "Set Meeting Report",
          "type": "n8n-nodes-base.set",
          "position": [
            -4240,
            -64
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "97b9ea3f-6221-4be4-844b-fa5542edad7b",
                  "name": "meetingReport",
                  "type": "string",
                  "value": "={{ $json.text }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "5c807527-c97f-49fe-ad10-7a0c166cfbc4",
          "name": "Set Meeting Report HTML",
          "type": "n8n-nodes-base.set",
          "position": [
            -4240,
            -256
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "267f484c-e2d4-4b5c-af89-d17b068a31be",
                  "name": "meetingReportHtml",
                  "type": "string",
                  "value": "={{ $json.text }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "7a545ecb-1ff1-49b2-a6c1-b99aad6a88d1",
          "name": "Save Booking In Sheets",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            -3760,
            -32
          ],
          "parameters": {
            "columns": {
              "value": {
                "Client Name": "={{ $json.name }}",
                "Client Req.": "={{ $json.reason }}",
                "Booking Date": "={{ $json.date }}",
                "Booking Link": "={{ $json.bookingUrl }}",
                "Client Email": "={{ $json.email }}",
                "Meeting Link": "={{ $json.meetUrl }}",
                "Meeting Briefing": "={{ $json.meetingReport }}"
              },
              "schema": [
                {
                  "id": "Booking Date",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Booking Date",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Client Name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Client Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Client Email",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Client Email",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Client Req.",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Client Req.",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Meeting Briefing",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Meeting Briefing",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Meeting Link",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Meeting Link",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Booking Link",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Booking Link",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1aIzD0f2erJ2PnneLJFBs0JgMs5-zP0ouxqH8biU1ogk/edit#gid=0",
              "cachedResultName": "Bookings"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1aIzD0f2erJ2PnneLJFBs0JgMs5-zP0ouxqH8biU1ogk",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1aIzD0f2erJ2PnneLJFBs0JgMs5-zP0ouxqH8biU1ogk/edit?usp=drivesdk",
              "cachedResultName": "Client Meeting Prep And Proposal Agent | Ai With Sohail"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "TB2tCNqF1GBm2ag8",
              "name": "Google Sheets account"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "54b0b03d-9e17-48d2-bdc0-5c0fd578c1b2",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -7696,
            -752
          ],
          "parameters": {
            "width": 624,
            "height": 1136,
            "content": "# 🛠️ Setup Guide  \n\n## **Author: [Sohail Jafri](https://link.thesohailjafri.me/web_ai) | [Youtube](https://link.thesohailjafri.me/yt_ai) | [Instagram](https://link.thesohailjafri.me/ig_ai) | [Join Skool](https://link.thesohailjafri.me/join-skool)**\n\n### Below are the **only essential steps** required to get the workflow running:  \n---\n\n### ✅ Step 1: [Copy the Google Sheet Template](https://docs.google.com/spreadsheets/d/1aIzD0f2erJ2PnneLJFBs0JgMs5-zP0ouxqH8biU1ogk/copy)\n#### Connect your **Google Sheets OAuth2** credential after copying the sheet.\n---\n\n### ✅ Step 2: Connect Your OpenRouter API Key  \nNeeded for these nodes:\n- **OpenRouter Chat Model**  \nUsed by: Meeting Goal Analysis, Report Generator, Email Formatter, Proposal Generator.\n\nAdd credential: **OpenRouter API**\n\n---\n\n### ✅ Step 3: Add Your Perplexity API Key  \nRequired for 3 research nodes:\n- Perplexity: Research Attendee  \n- Perplexity: Research Company Info  \n- Perplexity: Research Competitor  \n\nEach uses:\n- **Perplexity Auth (Bearer Token)**  \n- **Perplexity Account (API Key)**  \n\n---\n\n### ✅ Step 4: Connect Your OpenAI API Key  \nUsed by:\n- **Generate Audio Briefing** (OpenAI TTS)\n\nCredential: **OpenAI API**\n\n---\n\n### 💡 Step 5: Final Checks  \nBefore running:\n- Ensure **Cal.com Trigger** has valid Cal.com API credentials.  \n- Verify Perplexity + OpenRouter + OpenAI nodes test successfully.  \n- Make sure Google Sheets is linked and the sheet exists.\n\nOnce all credentials are connected, the workflow will automatically:  \n**research → analyze → generate proposals → create audio → email client + team → log to Google Sheets**.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "23de102d-201e-468c-a8a3-85004a592e80",
          "name": "If My Event",
          "type": "n8n-nodes-base.if",
          "position": [
            -6784,
            -224
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "7ed34d36-ec16-4417-b064-f2a68fd7b6a7",
                  "operator": {
                    "type": "number",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.eventTypeId }}",
                  "rightValue": 3750194
                }
              ]
            }
          },
          "typeVersion": 2.2
        }
      ],
      "active": false,
      "pinData": {
        "Cal.com Trigger": [
          {
            "json": {
              "uid": "kpbAToq7AdGHQ4o2RUE1ik",
              "type": "ai-discovery-call",
              "price": 0,
              "title": "Ai Discovery Call between Sohail Jafri and Sohail Jafri",
              "length": 30,
              "status": "ACCEPTED",
              "endTime": "2025-11-28T15:00:00Z",
              "iCalUID": "kpbAToq7AdGHQ4o2RUE1ik@Cal.com",
              "currency": "usd",
              "location": "integrations:google:meet",
              "metadata": {
                "videoCallUrl": "https://meet.google.com/hcb-kegc-pvy"
              },
              "attendees": [
                {
                  "name": "Sohail Jafri",
                  "email": "thesohailjafri@gmail.com",
                  "language": {
                    "locale": "en"
                  },
                  "lastName": "",
                  "timeZone": "Asia/Calcutta",
                  "firstName": "",
                  "utcOffset": 330,
                  "phoneNumber": "+918356946202"
                }
              ],
              "bookerUrl": "https://cal.com",
              "bookingId": 13226884,
              "createdAt": "2025-11-28T11:10:04.844Z",
              "organizer": {
                "id": 1310377,
                "name": "Sohail Jafri",
                "email": "thesohailjafri@gmail.com",
                "language": {
                  "locale": "en"
                },
                "timeZone": "Asia/Calcutta",
                "username": "thesohailjafri",
                "utcOffset": 330,
                "timeFormat": "h:mma"
              },
              "responses": {
                "name": {
                  "label": "your_name",
                  "value": "Sohail Jafri",
                  "isHidden": false
                },
                "email": {
                  "label": "email_address",
                  "value": "thesohailjafri@gmail.com",
                  "isHidden": false
                },
                "notes": {
                  "label": "additional_notes",
                  "isHidden": true
                },
                "title": {
                  "label": "what_is_this_meeting_about",
                  "value": "We want ai calling solution for us",
                  "isHidden": false
                },
                "guests": {
                  "label": "additional_guests",
                  "value": [],
                  "isHidden": false
                },
                "location": {
                  "label": "location",
                  "value": {
                    "value": "integrations:google:meet",
                    "optionValue": ""
                  },
                  "isHidden": false
                },
                "websiteUrl": {
                  "label": "Your/Company Website URL",
                  "value": "https://www.princepipes.com/",
                  "isHidden": false
                },
                "rescheduleReason": {
                  "label": "reason_for_reschedule",
                  "isHidden": false
                },
                "attendeePhoneNumber": {
                  "label": "phone_number",
                  "value": "+918356946202",
                  "isHidden": false
                }
              },
              "startTime": "2025-11-28T14:30:00Z",
              "appsStatus": [
                {
                  "type": "google_calendar",
                  "errors": [],
                  "appName": "google-calendar",
                  "success": 1,
                  "failures": 0,
                  "warnings": []
                },
                {
                  "type": "conferencing",
                  "errors": [],
                  "appName": "Google Meet",
                  "success": 1,
                  "failures": 0
                }
              ],
              "eventTitle": "Ai Discovery Call",
              "hashedLink": null,
              "description": "Ai Discovery Call with Sohail\n=============================",
              "eventTypeId": 3750194,
              "customInputs": {},
              "iCalSequence": 0,
              "triggerEvent": "BOOKING_CREATED",
              "conferenceData": {
                "createRequest": {
                  "requestId": "8a0ce172-f69a-51b5-8481-93feb73d58e2"
                }
              },
              "schedulingType": null,
              "additionalNotes": "",
              "oneTimePassword": null,
              "eventDescription": "Ai Discovery Call with Sohail\n=============================",
              "seatsPerTimeSlot": null,
              "disableCancelling": false,
              "hideCalendarNotes": false,
              "customReplyToEmail": null,
              "hideOrganizerEmail": false,
              "seatsShowAttendees": true,
              "destinationCalendar": [
                {
                  "id": 418308,
                  "userId": 1310377,
                  "createdAt": "2025-07-07T10:50:48.811Z",
                  "updatedAt": null,
                  "externalId": "thesohailjafri@gmail.com",
                  "eventTypeId": null,
                  "integration": "google_calendar",
                  "credentialId": 682727,
                  "primaryEmail": "thesohailjafri@gmail.com",
                  "delegationCredentialId": null,
                  "domainWideDelegationCredentialId": null
                }
              ],
              "disableRescheduling": false,
              "userFieldsResponses": {
                "websiteUrl": {
                  "label": "Your/Company Website URL",
                  "value": "https://www.princepipes.com/",
                  "isHidden": false
                }
              },
              "requiresConfirmation": false,
              "conferenceCredentialId": 682728,
              "hideCalendarEventDetails": false,
              "seatsShowAvailabilityCount": true
            }
          }
        ]
      },
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "a88bd430-1f7f-4996-b9ad-ff33e55c45c7",
      "connections": {
        "If My Event": {
          "main": [
            [
              {
                "node": "Extract Booking Details",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "ProposalOutput": {
          "ai_outputParser": [
            [
              {
                "node": "Client Proposal Generator",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Recipient List": {
          "main": [
            [
              {
                "node": "Generate Audio Briefing",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Cal.com Trigger": {
          "main": [
            [
              {
                "node": "If My Event",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "If Proposal Good": {
          "main": [
            [
              {
                "node": "Send Client Proposal Email",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Set Meeting Report": {
          "main": [
            [
              {
                "node": "Assemble Email Package",
                "type": "main",
                "index": 2
              }
            ]
          ]
        },
        "Set Research Prompts": {
          "main": [
            [
              {
                "node": "Perplexity: Research Competitor",
                "type": "main",
                "index": 0
              },
              {
                "node": "Perplexity: Research Attendee",
                "type": "main",
                "index": 0
              },
              {
                "node": "Perplexity: Research Company Info",
                "type": "main",
                "index": 0
              },
              {
                "node": "Meeting Goal Analysis",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract Meeting Goals": {
          "main": [
            [
              {
                "node": "Combine Research Results",
                "type": "main",
                "index": 3
              }
            ]
          ]
        },
        "Meeting Goal Analysis": {
          "main": [
            [
              {
                "node": "Extract Meeting Goals",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "OpenRouter Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "Meeting Goal Analysis",
                "type": "ai_languageModel",
                "index": 0
              },
              {
                "node": "Meeting Prep Report Generator",
                "type": "ai_languageModel",
                "index": 0
              },
              {
                "node": "Meeting Brief Email Formatter",
                "type": "ai_languageModel",
                "index": 0
              },
              {
                "node": "Client Proposal Generator",
                "type": "ai_languageModel",
                "index": 0
              },
              {
                "node": "ProposalOutput",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Assemble Email Package": {
          "main": [
            [
              {
                "node": "Recipient List",
                "type": "main",
                "index": 0
              },
              {
                "node": "Save Booking In Sheets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract Booking Details": {
          "main": [
            [
              {
                "node": "Set Research Prompts",
                "type": "main",
                "index": 0
              },
              {
                "node": "Assemble Email Package",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "Generate Audio Briefing": {
          "main": [
            [
              {
                "node": "Prepare Audio Attachment",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Set Meeting Report HTML": {
          "main": [
            [
              {
                "node": "Assemble Email Package",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Combine Research Results": {
          "main": [
            [
              {
                "node": "Consolidate Research Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract Company Research": {
          "main": [
            [
              {
                "node": "Combine Research Results",
                "type": "main",
                "index": 2
              }
            ]
          ]
        },
        "Prepare Audio Attachment": {
          "main": [
            [
              {
                "node": "Send Team Email",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Client Proposal Generator": {
          "main": [
            [
              {
                "node": "If Proposal Good",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Consolidate Research Data": {
          "main": [
            [
              {
                "node": "Meeting Prep Report Generator",
                "type": "main",
                "index": 0
              },
              {
                "node": "Client Proposal Generator",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract Attendee Research": {
          "main": [
            [
              {
                "node": "Combine Research Results",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "Extract Competitor Research": {
          "main": [
            [
              {
                "node": "Combine Research Results",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Meeting Brief Email Formatter": {
          "main": [
            [
              {
                "node": "Set Meeting Report HTML",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Meeting Prep Report Generator": {
          "main": [
            [
              {
                "node": "Meeting Brief Email Formatter",
                "type": "main",
                "index": 0
              },
              {
                "node": "Set Meeting Report",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Perplexity: Research Attendee": {
          "main": [
            [
              {
                "node": "Extract Attendee Research",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Perplexity: Research Competitor": {
          "main": [
            [
              {
                "node": "Extract Competitor Research",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Perplexity: Research Company Info": {
          "main": [
            [
              {
                "node": "Extract Company Research",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    }