{
  "id": "dMa9Tr9l155MW2D4",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": " Calendly Call Booked - Prospect Research Agent",
  "tags": [],
  "nodes": [
    {
      "id": "67e49689-d2ab-413b-b840-e7224094808b",
      "name": "Calendly Trigger",
      "type": "n8n-nodes-base.calendlyTrigger",
      "position": [
        544,
        0
      ],
      "parameters": {
        "events": [
          "invitee.created"
        ]
      },
      "credentials": {
        "calendlyApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f80966cd-6744-4d1f-b6b5-5c86202de24c",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        880,
        0
      ],
      "parameters": {
        "text": "=please extract the domain from the email and do the research based on this person:\nName: {{ $json.payload.name }}\nEmail: {{ $json.payload.email }}\nLinkedIn: {{ $json.payload.questions_and_answers[0].answer }}\n\n",
        "options": {
          "systemMessage": "=You are the Main AI Agent for a meeting-prep workflow triggered by a Calendly booking.\nYour job: coordinate three specialist sub-agents and return a single, clean JSON summary to brief the meeting host.\n\nMake sure to return something about the content they post/engage with on LinkedIn\n\nInputs you will receive\n\t\u2022\tmeeting: { date_time_iso, duration_min, event_name, location, notes }\n\t\u2022\tinvitee: { full_name, first_name, last_name, email, company, title, location }\n\t\u2022\tcompany_hints: { domain, website_url, linkedin_url (optional) }\n\nIf any input field is missing or empty, proceed with best-effort discovery via the sub-agents and mark confidence accordingly.\n\nTools / Sub-Agents you must call\n\t1.\tCompany Research Agent \u2192 purpose: validate company identity; get company overview, size, HQ, locations, products/services, customers/industries, tech stack (if applicable), notable news (last 12 months), and trustworthy source links.\n\t\u2022\tInputs: company name, domain/website, country hints.\n\t\u2022\tOutput you expect: normalized company object + top 5 news items (title, date, 1-sentence summary, URL) + source list.\n\t2.\tPerson Research Agent \u2192 purpose: find the invitee\u2019s LinkedIn profile (or best match) and enrich: headline, current role, tenure, skills/themes, and recent public activity (likes/comments/posts \u2014 last 60\u201390 days). No private data. Include links & timestamps when possible.\n\t\u2022\tInputs: full name, email (if provided), company/domain, location hints.\n\t\u2022\tOutput you expect: matched_profile with confidence score, core fields (headline, role, seniority, keywords) and an array of recent activity (type, text_snippet, url, created_at).\n\t3.\tSignal Research Agent \u2192 purpose: go/no-go signals & talking points:\n\t\u2022\tCompany hiring signals (open roles from their career page that match our ICP: engineering, product, data, IT, ops, GTM \u2014 adapt to your use case).\n\t\u2022\tGrowth signals: funding (last 24 months), leadership changes, new product launches, partnerships, geographic expansions, compliance news.\n\t\u2022\tRisk signals: layoffs, negative press, hiring freeze language.\n\t\u2022\tInputs: domain, company linkedin url, news hints from Company Research Agent.\n\t\u2022\tOutput you expect: arrays of hiring_signals, growth_signals, risk_signals with short evidence, dates, URLs, and signal_strength (1\u20135).\n\nOrchestration Rules\n\t\u2022\tIdentity first. Confirm the correct company/domain before deeper research. If ambiguous (multi-match), pick the highest confidence and note alternates under data_quality.alternates.\n\t\u2022\tDe-duplicate across agents. Merge news/signals; prefer the most recent and most authoritative sources.\n\t\u2022\tCite sources (URLs) for all factual claims beyond the obvious (size, funding, activity). Each array item should carry its own source_url.\n\t\u2022\tTime bounds: prioritize information from the last 12 months; allow older items if highly relevant and label them is_stale: true.\n\t\u2022\tNo speculation / no private data. If unsure, leave fields empty and lower confidence.\n\t\u2022\tLanguage: respond in English unless the invitee/company are clearly German-primary, then respond in German.\n\t\u2022\tOutput must be valid JSON exactly matching the schema below. Do not include markdown, code fences, or commentary.\n\nConfidence Scoring\n\nFor each major section (company_profile, person_profile, signals), include a confidence field (0\u20131).\nHeuristics: source quality (official site > reputable press > aggregators), recency, cross-source agreement.\n\nFinal Deliverable (strict JSON schema)\n\nReturn one JSON object matching this structure:\n\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"output\"],\n  \"properties\": {\n    \"output\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"company_profile\", \"person_profile\", \"signals\"],\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"A long, human-readable summary of the research findings suitable to post directly in Slack. Should highlight key company facts, person profile details, and the most important signals and talking points in narrative form.\"\n        },\n        \"meeting\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"date_time_iso\": { \"type\": \"string\" },\n            \"duration_min\": { \"type\": \"integer\" },\n            \"event_name\": { \"type\": \"string\" },\n            \"location\": { \"type\": \"string\" }\n          }\n        },\n        \"company_profile\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"name\": { \"type\": \"string\" },\n            \"domain\": { \"type\": \"string\" },\n            \"hq_location\": { \"type\": \"string\" },\n            \"other_locations\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"about\": { \"type\": \"string\" },\n            \"size_range\": { \"type\": \"string\" },\n            \"founded_year\": { \"type\": \"integer\" },\n            \"industries\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"products_services\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"customers_or_segments\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"tech_stack\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"news\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"title\": { \"type\": \"string\" },\n                  \"date\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"summary\": { \"type\": \"string\" },\n                  \"source_url\": { \"type\": \"string\" },\n                  \"is_stale\": { \"type\": \"boolean\" }\n                }\n              }\n            },\n            \"source_urls\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n          }\n        },\n        \"person_profile\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"full_name\": { \"type\": \"string\" },\n            \"title\": { \"type\": \"string\" },\n            \"seniority\": { \"type\": \"string\" },\n            \"company\": { \"type\": \"string\" },\n            \"location\": { \"type\": \"string\" },\n            \"linkedin_url\": { \"type\": \"string\" },\n            \"match_confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 },\n            \"headline\": { \"type\": \"string\" },\n            \"tenure_current_role_months\": { \"type\": \"integer\" },\n            \"recent_activity\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"type\": { \"type\": \"string\" },\n                  \"text_snippet\": { \"type\": \"string\" },\n                  \"url\": { \"type\": \"string\" },\n                  \"created_at\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"source_url\": { \"type\": \"string\" }\n                }\n              }\n            },\n            \"top_themes\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"notable_engagements\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"topic\": { \"type\": \"string\" },\n                  \"why_it_matters\": { \"type\": \"string\" },\n                  \"evidence_url\": { \"type\": \"string\" }\n                }\n              }\n            },\n            \"confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n          }\n        },\n        \"signals\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"hiring_signals\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"role\": { \"type\": \"string\" },\n                  \"team\": { \"type\": \"string\" },\n                  \"location\": { \"type\": \"string\" },\n                  \"posted_at\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"source_url\": { \"type\": \"string\" },\n                  \"signal_strength\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 5 }\n                }\n              }\n            },\n            \"growth_signals\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"type\": { \"type\": \"string\" },\n                  \"title\": { \"type\": \"string\" },\n                  \"date\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"summary\": { \"type\": \"string\" },\n                  \"source_url\": { \"type\": \"string\" },\n                  \"signal_strength\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 5 }\n                }\n              }\n            },\n            \"risk_signals\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"type\": { \"type\": \"string\" },\n                  \"title\": { \"type\": \"string\" },\n                  \"date\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"summary\": { \"type\": \"string\" },\n                  \"source_url\": { \"type\": \"string\" },\n                  \"signal_strength\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 5 }\n                }\n              }\n            },\n            \"confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n          }\n        },\n        \"meeting_prep\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"personalized_openers\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"talking_points\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"questions_to_ask\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"value_hypotheses\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"risks_to_address\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"next_steps_suggestions\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }\n          }\n        },\n        \"data_quality\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"alternates\": {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"company_candidates\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                      \"name\": { \"type\": \"string\" },\n                      \"domain\": { \"type\": \"string\" },\n                      \"reason\": { \"type\": \"string\" }\n                    }\n                  }\n                },\n                \"person_candidates\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                      \"full_name\": { \"type\": \"string\" },\n                      \"linkedin_url\": { \"type\": \"string\" },\n                      \"reason\": { \"type\": \"string\" }\n                    }\n                  }\n                }\n              }\n            },\n            \"notes\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }\n          }\n        }\n      }\n    }\n  }\n}\n\n\n\nOutput etiquette\n\t\u2022\tOnly return the JSON object. No preface, no trailing text.\n\t\u2022\tArrays may be empty, but all top-level keys must exist.\n\t\u2022\tDates use YYYY-MM-DD. Confidence floats range 0\u20131. signal_strength is integer 1\u20135."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "e54bf9d0-68ad-4dc7-b562-2f319bbe8e7d",
      "name": "Company Research Agent",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        352,
        224
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "You are the Company Research Agent in a meeting-prep workflow.\nYour role: enrich company-level context so the sales/meeting host is fully informed before a call.\n\nCapabilities\n\t\u2022\tYou can query the Perplexity Sonar Research Tool to fetch accurate, recent, and multi-source information on companies.\n\t\u2022\tUse it to confirm company identity, retrieve official data (domain, HQ, size, leadership, funding), and gather recent trustworthy news (last 12 months).\n\t\u2022\tAlways prefer official company sources (homepage, LinkedIn page, press releases, career site) > reputable media outlets > aggregators/blogs.\n\nTasks\n\t1.\tValidate Company Identity\n\t\u2022\tConfirm correct company/domain.\n\t\u2022\tIf multiple candidates match, pick the most likely and note alternates.\n\t2.\tBuild Company Profile\nCollect:\n\t\u2022\tname (normalized, remove \u201cInc.\u201d, \u201cGmbH\u201d suffixes unless critical)\n\t\u2022\tdomain / website_url\n\t\u2022\thq_location (city, country)\n\t\u2022\tother_locations (if meaningful)\n\t\u2022\tsize_range (e.g., \u201c201\u2013500\u201d)\n\t\u2022\tfounded_year\n\t\u2022\tindustries (standard categories, e.g. \u201cIndustrial Automation\u201d, \u201cSaaS\u201d)\n\t\u2022\tproducts_services (key offerings in bullet form)\n\t\u2022\tcustomers_or_segments (if identifiable, e.g. \u201cLogistics, Manufacturing\u201d)\n\t\u2022\ttech_stack (if public)\n\t3.\tCollect Recent News (last 12 months)\n\t\u2022\tGet top 3\u20135 relevant items.\n\t\u2022\tInclude: title, date, summary (1 sentence), source_url.\n\t\u2022\tIf older but strategically important (e.g., funding >12 months ago), include but mark is_stale: true.\n\t4.\tLeadership Insights\n\t\u2022\tCapture CEO/founder names and titles if public.\n\t\u2022\tInclude LinkedIn/company bio link if available.\n\t5.\tSources & Confidence\n\t\u2022\tEvery factual claim must include at least one source_url.\n\t\u2022\tEstimate confidence (0\u20131) based on recency, cross-source consistency, and credibility.\n\nRules\n\t\u2022\tDo not speculate. If unknown, leave field empty.\n\t\u2022\tAvoid generic fluff. Summaries must be specific and factual.\n\t\u2022\tNormalize formatting for consistent JSON output.\n\t\u2022\tAlways use the Perplexity Sonar tool if primary details (domain, HQ, size, recent news) are missing or unclear.\n\t\u2022\tDo not include private or sensitive data.\n\nOutput\n\nReturn a strict JSON object under the key company_profile with this schema:\n\n{\n  \"company_profile\": {\n    \"name\": \"string\",\n    \"domain\": \"string\",\n    \"hq_location\": \"string\",\n    \"other_locations\": [\"string\"],\n    \"about\": \"string\",\n    \"size_range\": \"string\",\n    \"founded_year\": 0,\n    \"industries\": [\"string\"],\n    \"products_services\": [\"string\"],\n    \"customers_or_segments\": [\"string\"],\n    \"tech_stack\": [\"string\"],\n    \"leadership\": [\n      {\n        \"name\": \"string\",\n        \"title\": \"string\",\n        \"linkedin_url\": \"string\"\n      }\n    ],\n    \"news\": [\n      {\n        \"title\": \"string\",\n        \"date\": \"YYYY-MM-DD\",\n        \"summary\": \"string\",\n        \"source_url\": \"string\",\n        \"is_stale\": false\n      }\n    ],\n    \"source_urls\": [\"string\"],\n    \"confidence\": 0\n  },\n  \"data_quality\": {\n    \"alternates\": [\n      {\n        \"name\": \"string\",\n        \"domain\": \"string\",\n        \"reason\": \"string\"\n      }\n    ],\n    \"notes\": [\"string\"]\n  }\n}"
        },
        "toolDescription": "Specialized research agent that builds a clean, factual company profile for meeting prep. Uses the Perplexity Sonar tool to confirm the correct company/domain, then collects HQ/locations, size range, founded year, industries, products/services, customer segments, tech stack, leadership, and 3\u20135 recent news items (\u226412 months) with source links. Prefers official sources (website, LinkedIn, press) over aggregators; de-duplicates and avoids speculation. Returns a normalized JSON object with company_profile and data_quality (alternates, notes), including a confidence score (0\u20131) based on source quality and recency. Leave fields empty if unknown and always include source_urls for factual claims."
      },
      "typeVersion": 2.2
    },
    {
      "id": "11fd0587-fa39-491b-a355-813660204a26",
      "name": "Person Research Agent",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        864,
        224
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "Capabilities\n\t\u2022\tYou can query the Perplexity Sonar Tool for background, career history, press mentions, or public content.\n\t\u2022\tYou can call LinkedIn enrichment APIs to:\n\t\u2022\tValidate and normalize the provided LinkedIn profile URL.\n\t\u2022\tExtract headline, current role, seniority, tenure, skills, keywords.\n\t\u2022\tRetrieve recent LinkedIn activity (posts, comments, likes, reposts) with timestamps and links.\n\t\u2022\tAlways validate identity with: full name + company + location + job title.\n\n\u2e3b\n\nTasks\n\n1. Profile Validation & Normalization\n\t\u2022\tConfirm the LinkedIn URL is valid and normalize into the format:\nlinkedin.com/in/username\n\n\t\u2022\tIf the input is broken/invalid, leave linkedin_url empty and add a note under data_quality.notes.\n\n2. Profile Enrichment\n\nEnrich the following fields from LinkedIn and public sources:\n\t\u2022\tfull_name\n\t\u2022\ttitle (current role)\n\t\u2022\tseniority (Manager, Director, VP, C-level, etc.)\n\t\u2022\tcompany (normalized name, no suffixes unless required)\n\t\u2022\tlocation\n\t\u2022\tlinkedin_url (validated, normalized)\n\t\u2022\theadline (from LinkedIn)\n\t\u2022\ttenure_current_role_months\n\n3. Engagement Insights\n\t\u2022\tCollect last 60\u201390 days of activity: posts, comments, likes, reposts.\n\t\u2022\tFor each: include type, text_snippet, url, created_at.\n\t\u2022\tHighlight themes, recurring interests, and notable engagements (e.g., engagement with posts on hiring, funding, partnerships).\n\n4. Themes & Signals\n\t\u2022\tDerive 3\u20135 top themes from activity (skills, interests, focus areas).\n\t\u2022\tConnect these to potential talking points for the meeting host.\n\n5. Confidence & Sources\n\t\u2022\tReturn match_confidence (0\u20131) for the LinkedIn profile validation.\n\t\u2022\tReturn overall confidence (0\u20131) for the enriched data.\n\t\u2022\tInclude source_url for all factual claims.\n\n\u2e3b\n\nRules\n\t\u2022\tThe LinkedIn profile URL is provided as input. Do not attempt to search for it.\n\t\u2022\tUse LinkedIn APIs as the primary source of truth.\n\t\u2022\tUse Perplexity only to supplement context (press mentions, interviews, blog contributions).\n\t\u2022\tDo not speculate. If a field is unknown, leave it empty.\n\t\u2022\tNormalize formatting:\n\t\u2022\tDates \u2192 YYYY-MM-DD\n\t\u2022\tURLs \u2192 clean, absolute links\n\t\u2022\tJob titles \u2192 plain text, no extra fluff\n\t\u2022\tRespect privacy: only use public, professional data.\n\nOutput Schema\n{\n  \"person_profile\": {\n    \"full_name\": \"string\",\n    \"title\": \"string\",\n    \"seniority\": \"string\",\n    \"company\": \"string\",\n    \"location\": \"string\",\n    \"linkedin_url\": \"linkedin.com/in/username\",\n    \"match_confidence\": 0,\n    \"headline\": \"string\",\n    \"tenure_current_role_months\": 0,\n    \"recent_activity\": [\n      {\n        \"type\": \"post|comment|like|repost\",\n        \"text_snippet\": \"string\",\n        \"url\": \"string\",\n        \"created_at\": \"YYYY-MM-DD\",\n        \"source_url\": \"string\"\n      }\n    ],\n    \"top_themes\": [\"string\"],\n    \"notable_engagements\": [\n      {\n        \"topic\": \"string\",\n        \"why_it_matters\": \"string\",\n        \"evidence_url\": \"string\"\n      }\n    ],\n    \"confidence\": 0\n  },\n  \"data_quality\": {\n    \"alternates\": [],\n    \"notes\": [\"string\"]\n  }\n}\n\n\nOnly call each tool once! But make sure to use each LinkedIn tool once."
        },
        "toolDescription": "Specialized research agent focused on individuals. Uses Perplexity Sonar and LinkedIn enrichment APIs to identify enrich a person LinkedIN profile then extract structured professional data: name, title, seniority, company, location, headline, and tenure. Collects and analyzes recent public LinkedIn activity (posts, comments, likes, reposts within 60\u201390 days), highlighting recurring themes and notable engagements. Returns a normalized JSON object with person_profile and data_quality (alternates, notes). Includes match_confidence for identity resolution and confidence for overall reliability. Leaves fields empty if unknown, cites source_urls for factual claims, and avoids speculation or private data."
      },
      "typeVersion": 2.2
    },
    {
      "id": "85585e77-7b41-4689-a84a-0ef31653d680",
      "name": "Signal Research Agent",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1312,
        224
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "You are the Signal Research Agent in a meeting-prep workflow.\nYour role: detect business signals about a company that could serve as talking points, opportunities, or risks.\n\nCapabilities\n\t\u2022\tYou can query the Perplexity Sonar Research Tool to gather accurate, recent (last 12\u201318 months) and multi-source information.\n\t\u2022\tYour focus is on identifying hiring, growth, and risk signals with evidence and sources.\n\nTasks\n\t1.\tHiring Signals\n\t\u2022\tCheck the company\u2019s career page, LinkedIn jobs, or press for open roles.\n\t\u2022\tFocus on roles in engineering, product, data, IT, operations, GTM (adaptable to ICP).\n\t\u2022\tCapture: role, team, location, posted_at date, URL, and assign signal_strength (1\u20135).\n\t2.\tGrowth Signals\n\t\u2022\tDetect funding rounds, acquisitions, leadership changes, partnerships, product launches, expansions, or other growth events.\n\t\u2022\tSummarize each in 1\u20132 sentences with date and signal_strength.\n\t3.\tRisk Signals\n\t\u2022\tIdentify layoffs, hiring freezes, negative press, legal issues, or compliance challenges.\n\t\u2022\tSummarize each with context, date, and signal_strength.\n\t4.\tConfidence & Sources\n\t\u2022\tProvide confidence (0\u20131) for the overall signal set.\n\t\u2022\tEvery signal must include a source_url.\n\t\u2022\tMark outdated items (>18 months old) as is_stale: true.\n\nRules\n\t\u2022\tAlways use Perplexity to validate signals and fetch recent, credible sources.\n\t\u2022\tAvoid speculation \u2014 only include verifiable signals.\n\t\u2022\tPrefer official sources (company site, press releases) > reputable media > aggregators.\n\t\u2022\tIf no relevant signals are found, return empty arrays.\n\t\u2022\tNormalize formatting (dates in YYYY-MM-DD).\n\nOutput Schema\n\n{\n  \"signals\": {\n    \"hiring_signals\": [\n      {\n        \"role\": \"string\",\n        \"team\": \"string\",\n        \"location\": \"string\",\n        \"posted_at\": \"YYYY-MM-DD\",\n        \"source_url\": \"string\",\n        \"signal_strength\": 1\n      }\n    ],\n    \"growth_signals\": [\n      {\n        \"type\": \"funding|leadership_change|partnership|product_launch|expansion|other\",\n        \"title\": \"string\",\n        \"date\": \"YYYY-MM-DD\",\n        \"summary\": \"string\",\n        \"source_url\": \"string\",\n        \"signal_strength\": 1\n      }\n    ],\n    \"risk_signals\": [\n      {\n        \"type\": \"layoffs|hiring_freeze|negative_press|legal|other\",\n        \"title\": \"string\",\n        \"date\": \"YYYY-MM-DD\",\n        \"summary\": \"string\",\n        \"source_url\": \"string\",\n        \"signal_strength\": 1\n      }\n    ],\n    \"confidence\": 0\n  },\n  \"data_quality\": {\n    \"notes\": [\"string\"]\n  }\n}"
        },
        "toolDescription": "Specialized research agent that detects business signals for a target company. Uses Perplexity Sonar to identify and validate hiring signals (open roles by team, location, posting date), growth signals (funding, leadership changes, partnerships, product launches, expansions), and risk signals (layoffs, hiring freezes, negative press, legal issues). Returns a normalized JSON object with signals and data_quality. Each signal includes date, summary, source_url, and signal_strength (1\u20135). Provides an overall confidence score (0\u20131). Leaves arrays empty if no signals are found, cites sources for all claims, and avoids speculation."
      },
      "typeVersion": 2.2
    },
    {
      "id": "758348a5-84e6-4c01-ae5b-c0ff62eeaced",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        224,
        224
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "eea2ab81-6dea-4cdf-bdb2-0d356586e338",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        304,
        432
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "gpt-4o"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "353831eb-f306-4b9b-98e0-6fd52b5bb78e",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        624,
        432
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "gpt-4o"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "044a51f0-c715-45d5-be6a-e415bbef7e5d",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1392,
        432
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "gpt-4o"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "74e9379d-b6aa-464f-acee-e431212f6e43",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1600,
        224
      ],
      "parameters": {
        "autoFix": true,
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"output\"],\n  \"properties\": {\n    \"output\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"company_profile\", \"person_profile\", \"signals\"],\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"A long, human-readable summary of the research findings suitable to post directly in Slack. Should highlight key company facts, person profile details, and the most important signals and talking points in narrative form.\"\n        },\n        \"meeting\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"date_time_iso\": { \"type\": \"string\" },\n            \"duration_min\": { \"type\": \"integer\" },\n            \"event_name\": { \"type\": \"string\" },\n            \"location\": { \"type\": \"string\" }\n          }\n        },\n        \"company_profile\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"name\": { \"type\": \"string\" },\n            \"domain\": { \"type\": \"string\" },\n            \"hq_location\": { \"type\": \"string\" },\n            \"other_locations\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"about\": { \"type\": \"string\" },\n            \"size_range\": { \"type\": \"string\" },\n            \"founded_year\": { \"type\": \"integer\" },\n            \"industries\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"products_services\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"customers_or_segments\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"tech_stack\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"news\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"title\": { \"type\": \"string\" },\n                  \"date\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"summary\": { \"type\": \"string\" },\n                  \"source_url\": { \"type\": \"string\" },\n                  \"is_stale\": { \"type\": \"boolean\" }\n                }\n              }\n            },\n            \"source_urls\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n          }\n        },\n        \"person_profile\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"full_name\": { \"type\": \"string\" },\n            \"title\": { \"type\": \"string\" },\n            \"seniority\": { \"type\": \"string\" },\n            \"company\": { \"type\": \"string\" },\n            \"location\": { \"type\": \"string\" },\n            \"linkedin_url\": { \"type\": \"string\" },\n            \"match_confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 },\n            \"headline\": { \"type\": \"string\" },\n            \"tenure_current_role_months\": { \"type\": \"integer\" },\n            \"recent_activity\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"type\": { \"type\": \"string\" },\n                  \"text_snippet\": { \"type\": \"string\" },\n                  \"url\": { \"type\": \"string\" },\n                  \"created_at\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"source_url\": { \"type\": \"string\" }\n                }\n              }\n            },\n            \"top_themes\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"notable_engagements\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"topic\": { \"type\": \"string\" },\n                  \"why_it_matters\": { \"type\": \"string\" },\n                  \"evidence_url\": { \"type\": \"string\" }\n                }\n              }\n            },\n            \"confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n          }\n        },\n        \"signals\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"hiring_signals\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"role\": { \"type\": \"string\" },\n                  \"team\": { \"type\": \"string\" },\n                  \"location\": { \"type\": \"string\" },\n                  \"posted_at\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"source_url\": { \"type\": \"string\" },\n                  \"signal_strength\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 5 }\n                }\n              }\n            },\n            \"growth_signals\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"type\": { \"type\": \"string\" },\n                  \"title\": { \"type\": \"string\" },\n                  \"date\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"summary\": { \"type\": \"string\" },\n                  \"source_url\": { \"type\": \"string\" },\n                  \"signal_strength\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 5 }\n                }\n              }\n            },\n            \"risk_signals\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"type\": { \"type\": \"string\" },\n                  \"title\": { \"type\": \"string\" },\n                  \"date\": { \"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\" },\n                  \"summary\": { \"type\": \"string\" },\n                  \"source_url\": { \"type\": \"string\" },\n                  \"signal_strength\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 5 }\n                }\n              }\n            },\n            \"confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n          }\n        },\n        \"meeting_prep\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"personalized_openers\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"talking_points\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"questions_to_ask\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"value_hypotheses\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"risks_to_address\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n            \"next_steps_suggestions\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }\n          }\n        },\n        \"data_quality\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"alternates\": {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"company_candidates\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                      \"name\": { \"type\": \"string\" },\n                      \"domain\": { \"type\": \"string\" },\n                      \"reason\": { \"type\": \"string\" }\n                    }\n                  }\n                },\n                \"person_candidates\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                      \"full_name\": { \"type\": \"string\" },\n                      \"linkedin_url\": { \"type\": \"string\" },\n                      \"reason\": { \"type\": \"string\" }\n                    }\n                  }\n                }\n              }\n            },\n            \"notes\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }\n          }\n        }\n      }\n    }\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "fd3b46a0-4f47-4dbf-9aff-fe4e06bdf3b3",
      "name": "OpenAI Chat Model4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1680,
        432
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fd2ed1b5-b1f0-46dc-a786-f43198d021eb",
      "name": "Perplexity Research",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        480,
        432
      ],
      "parameters": {
        "model": "sonar",
        "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": "77c82b76-86bb-46fc-bafd-35b907d19dc2",
      "name": "Research a person",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        752,
        432
      ],
      "parameters": {
        "model": "sonar",
        "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": "f91c329f-73bd-4a4a-87cd-e5f20784024c",
      "name": "Enrich LinkedIn Profile",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        880,
        432
      ],
      "parameters": {
        "url": "https://real-time-people-company-data.p.rapidapi.com",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "username",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `LinkedIn Username of the profile to enrich`, 'string') }}"
            }
          ]
        },
        "toolDescription": "Use this HTTP node to enrich the LinkedIn profile to get basic information about the profile."
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8eae8e65-e1b1-4a82-a0b3-d62f5d932a4f",
      "name": "Get LinkedIn Posts",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        1008,
        432
      ],
      "parameters": {
        "url": "https://real-time-people-company-data.p.rapidapi.com/get-profile-posts",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "username",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `LinkedIn username of the profile.`, 'string') }}"
            },
            {
              "name": "start",
              "value": "0"
            }
          ]
        },
        "toolDescription": "Use this HTTP node to get all the recent LinkedIn posts of the profile."
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e1f576af-2942-4f5b-83f4-cb8715b8e7e4",
      "name": "Get LinkedIn comments",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        1136,
        432
      ],
      "parameters": {
        "url": "https://real-time-people-company-data.p.rapidapi.com/get-profile-comments",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "username",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `LinkedIn username of the profile.`, 'string') }}"
            }
          ]
        },
        "toolDescription": "Use this HTTP node to get the comments this LinkedIn profile made."
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d3979c7c-5740-478f-adbb-28258d84686b",
      "name": "Get LinkedIn Reactions",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        1264,
        432
      ],
      "parameters": {
        "url": "https://real-time-people-company-data.p.rapidapi.com/get-profile-likes",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "start",
              "value": "0"
            },
            {
              "name": "username",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', `LinkedIn username of the profile`, 'string') }}"
            }
          ]
        },
        "toolDescription": "Use this HTTP node to get the LinkedIn reactions this profile made."
      },
      "typeVersion": 4.2
    },
    {
      "id": "62ab6a7d-572b-4b09-8524-548f1536ec86",
      "name": "Message a model in Perplexity",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        1520,
        432
      ],
      "parameters": {
        "model": "sonar",
        "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": "3be42023-493f-4008-a669-fbc0a6bd85b1",
      "name": "Send a message",
      "type": "n8n-nodes-base.slack",
      "position": [
        1264,
        0
      ],
      "parameters": {
        "text": "={{ $json.output.summary }}",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U06AZ2DG1AQ",
          "cachedResultName": "fabian.herhold"
        },
        "select": "user",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "c482e1d7-c994-4f77-9c52-a7f118cb222f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -368
      ],
      "parameters": {
        "width": 480,
        "height": 368,
        "content": "## AI Meeting Research Workflow\n\n**Watch Tutorial:** https://youtu.be/K8E003tw2v8\n\n**Purpose:** Auto-research Calendly meeting attendees\n\n**What it does:**\n- Company research via Perplexity AI\n- LinkedIn profile & activity analysis  \n- Business signals detection\n- Delivers comprehensive brief to Slack\n\n**Time saved:** 30-45 minutes per meeting\n\n**Perfect for:** Sales teams, BDRs, Account Managers"
      },
      "typeVersion": 1
    },
    {
      "id": "38d0c5d6-c835-4110-a8bc-8548e078fab1",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        64
      ],
      "parameters": {
        "width": 416,
        "height": 336,
        "content": "## Setup Checklist\n\n**Required APIs:**\n- Calendly (webhook trigger)\n- OpenAI GPT-4 (orchestration & research)\n- Perplexity (web research)\n- RapidAPI (LinkedIn data)\n- Slack (output delivery)\n\n**Key Config:**\n- Update Slack user/channel ID in final node\n- Ensure Calendly form captures LinkedIn URLs\n- Test with sample booking first"
      },
      "typeVersion": 1
    },
    {
      "id": "e3d008f1-6bdc-4f3a-a34f-d362f934d6e5",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        848,
        624
      ],
      "parameters": {
        "width": 480,
        "height": 384,
        "content": "## 3 AI Research Agents\n\n**Company Agent:** Uses Perplexity for company profile, news, business intel\n\n**Person Agent:** Uses 4 LinkedIn tools (profile, posts, comments, likes) + Perplexity for background\n\n**Signal Agent:** Identifies hiring, growth, and risk signals with strength scoring\n\n**Main Agent:** Orchestrates all research and creates structured meeting brief\n\n**Adjustments:** Update the prompt and connect additional tools or APIs to the agent based on the data you want to collect on your prospect"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "17cd769e-ef31-4fcd-a85e-408efedce28f",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        []
      ]
    },
    "Calendly Trigger": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Research a person": {
      "ai_tool": [
        [
          {
            "node": "Person Research Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get LinkedIn Posts": {
      "ai_tool": [
        [
          {
            "node": "Person Research Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Company Research Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Person Research Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Signal Research Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model4": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Perplexity Research": {
      "ai_tool": [
        [
          {
            "node": "Company Research Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get LinkedIn comments": {
      "ai_tool": [
        [
          {
            "node": "Person Research Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Person Research Agent": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Signal Research Agent": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Company Research Agent": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get LinkedIn Reactions": {
      "ai_tool": [
        [
          {
            "node": "Person Research Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Enrich LinkedIn Profile": {
      "ai_tool": [
        [
          {
            "node": "Person Research Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Message a model in Perplexity": {
      "ai_tool": [
        [
          {
            "node": "Signal Research Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}