{"workflow":{"id":14762,"name":"Generate UK M&A research, pitch decks and briefs from Slack using Anthropic and Google Docs/Slides","views":0,"recentViews":0,"totalViews":0,"createdAt":"2026-04-05T18:55:06.602Z","description":"# Finance Research Analyst for Boutique M&A Agencies\n\nThis workflow acts as a **junior finance research analyst** for a UK boutique M&A or corporate finance team. It listens for Slack messages, classifies the request, gathers company or market data, and produces structured outputs in Google Docs, Google Slides, Google Sheets, and PostgreSQL.\n\nIt supports three user intents:\n\n- `Research this company X`\n- `Prepare pitch materials for X`\n- `Industry briefing on vertical X`\n\nThe workflow is designed for internal team use. It is not intended to send client-facing materials automatically without human review.\n\n## Why This Template\nThis template shows how a junior research analyst LIVE job and some of the key responsibilities might be automated with help of AI. 120+ junior analyst roles are live in London right now. This template does most of what they do. \n\n## What This Template Does\n\n### 1. Company Research\n\nWhen a user asks to research a company, the workflow:\n\n- searches Companies House for the best UK entity match\n- retrieves company profile, officers, and filing history\n- gathers company and website context using Firecrawl\n- retrieves public market quote data from Alpha Vantage when a ticker is available\n- asks an LLM to synthesize the research into a structured company profile\n- creates a Google Doc with the company profile\n- upserts the company into PostgreSQL\n- stores the generated research as reusable memory\n- updates the client database in Google Sheets\n- replies in the original Slack thread with the output link\n\n### 2. Pitch Materials\n\nWhen a user asks to prepare pitch materials, the workflow:\n\n- loads the stored company record from PostgreSQL\n- pulls the most recent stored research memory\n- asks an LLM to produce compact slide-ready bullet content\n- copies a Google Slides pitch template\n- replaces the template placeholders with generated content\n- creates a Google Doc press release draft\n- updates the pitch deck URL in PostgreSQL\n- updates the client database in Google Sheets\n- replies in the original Slack thread with the deck and document links\n\n### 3. Industry Briefing\n\nWhen a user asks for a sector briefing, the workflow:\n\n- gathers sector web and news context using Firecrawl\n- retrieves ONS macro M&A context\n- asks an LLM to generate a concise one-page industry briefing\n- creates a Google Doc with the briefing\n- replies in the original Slack thread with the document link\n\n## Who This Is For\n\nThis template is built for:\n\n- boutique M&A advisory firms\n- corporate finance teams\n- fundraising advisors\n- internal research analysts supporting pitch and origination work\n\nIt is optimized for UK company research because it relies on Companies House as the authoritative company registry.\n\n\n## Prerequisites\n\nBefore using this template, you need:\n\n- an n8n instance\n- a Slack app configured for message triggers and posting replies\n- a Google account with Drive, Docs, Slides, and Sheets access (Free)\n- a PostgreSQL database (Free self hosted or use supabase)\n- an OpenRouter credential for the LLM calls (Models used= haiku4.5, Sonnet 4.5)\n- a Companies House API key configured as Basic Auth (Free)\n- a Firecrawl API key configured as HTTP Header Auth (Free)\n- API key for Alpha Vantage (free)\n- fixed ONS URL for macro M&A context\n\n## Required n8n Credentials\n\nCreate or connect the following credentials in n8n before testing:\n\n- `Slack Trigger` credential for incoming Slack events\n- `Slack` credential for posting replies\n- `OpenRouter API`\n- `Companies House Basic Auth`\n- `Firecrawl Header Auth`\n- `Google Drive OAuth2`\n- `Google Docs OAuth2`\n- `Google Slides OAuth2`\n- `Google Sheets OAuth2`\n- `Postgres`\n\n## Required External Assets\n\n### 1. Google Drive Root Folder\n\nThe workflow creates subfolders under a given root folder:\n\n- research outputs\n- pitch outputs\n- briefing outputs\n\nCurrent root folder used in the workflow:\n\n- Modify this to your own folder: `https://drive.google.com/drive/u/0/folders/1GH-YouAAImKugZ11IbqA6Ouw8B9U17-I`\n\n### 2. Google Sheets Client Database\n\nThe workflow writes to this spreadsheet:\n\n- Modify this to your own google sheet: `https://docs.google.com/spreadsheets/d/1yJ-UKOEUqIruCv-IBA33oN4taQTB1TA8M4a6D2iSiOU/edit?gid=0#gid=0`\n\nRequired sheet name:\n\n- `Sheet1`\n\nRequired columns:\n\n- `company_name`\n- `sector`\n- `companies_house_number`\n- `market_cap`\n- `last_researched`\n- `profile_doc_url`\n- `pitch_deck_url`\n\nBest practice:\n\n- make `companies_house_number` unique if possible\n- keep column names exactly as shown above\n\n### 3. Google Slides Pitch Template\n\nThe workflow copies this Slides template:\n\n- `1zQv_cbafHzd4JNsr711Rm0558O6W_S1SODc-u6tVS0k`\n\nRequired placeholders in text boxes:\n\n- `{company_name}`\n- `{sector}`\n- `{profile_summary}`\n- `{financials}`\n- `{opportunity_summary}`\n- `{comps_note}`\n\n## Input Examples\n\nUse messages like these in Slack:\n\n- `Research Monzo, fintech`\n- `Prepare pitch for Wise`\n- `Industry briefing UK fintech`\n\n## Outputs\n\n### Research Intent\n\nOutputs:\n\n- Google Doc company profile\n- PostgreSQL company record update\n- PostgreSQL research memory insert\n- Google Sheets client DB update\n- Slack thread reply with doc link\n\n### Pitch Intent\n\nOutputs:\n\n- copied and populated Google Slides deck\n- Google Doc press release draft\n- PostgreSQL pitch deck URL update\n- Google Sheets client DB update\n- Slack thread reply with deck and doc links\n\n### Brief Intent\n\nOutputs:\n\n- Google Doc industry briefing\n- Slack thread reply with doc link\n\n## Database Expectations\n\nThis template expects PostgreSQL tables to exist for:\n\n- company records\n- research memory\n\nAt minimum, your database must support the queries used by the workflow for:\n\n- upserting company records\n- loading a company record by `company_name`\n- storing research memory\n- retrieving the latest research memory for pitch generation\n- updating `pitch_deck_url`\n\n\n## Limitations\n\n- UK company research is strongest because the workflow depends on Companies House. \n- private companies will not have public market quote data\n- public-company quote data comes from Alpha Vantage `GLOBAL_QUOTE`, which is not a true market-cap endpoint\n- the workflow does not create dynamic charts in Google Slides.\n- the workflow does not replace human judgment on valuation, comps, or client-facing strategy\n\n\n\n\n\n\n","workflow":{"id":"DdoucNGUKuzKpOCh","meta":{"instanceId":"ad4cf9d9d757e95f34b80cd1a8a81b8f3b1c0f185c6c59d44ff2f1d53e8c917d","templateCredsSetupCompleted":true},"name":"Finance Research Analyst v5 - Production","tags":[{"id":"JaNCWi5XTaMmf9J9","name":"AI Employee","createdAt":"2026-04-03T11:53:13.004Z","updatedAt":"2026-04-03T11:53:13.004Z"}],"nodes":[{"id":"9cf91144-5158-4ae3-af6c-ad1dce27c26c","name":"Valid Slack Message?","type":"n8n-nodes-base.if","position":[-3168,1888],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"no-bot-id","operator":{"type":"string","operation":"notExists","singleValue":true},"leftValue":"={{ $json.bot_id }}","rightValue":""},{"id":"has-text","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.text }}","rightValue":""},{"id":"is-message","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.type }}","rightValue":"message"}]}},"typeVersion":2.2},{"id":"2d46e584-601a-4778-a11a-1c110173039d","name":"Prepare Slack Context","type":"n8n-nodes-base.code","position":[-2944,1888],"parameters":{"jsCode":"const text = ($json.text || '').trim();\nreturn [{ json: {\n  raw_text: text,\n  channel: $json.channel,\n  message_ts: $json.ts,\n  thread_ts: $json.thread_ts || $json.ts,\n  user: $json.user,\n  slack_event: $json,\n} }];"},"typeVersion":2},{"id":"2d4d8426-4e76-4a36-8dad-be131044aece","name":"Build Intent Request","type":"n8n-nodes-base.code","position":[-2720,1888],"parameters":{"jsCode":"const body = {\n  model: 'anthropic/claude-haiku-4.5',\n  temperature: 0,\n  messages: [\n    {\n      role: 'system',\n      content: [\n        'You route requests for a UK boutique M&A finance research analyst.',\n        'Return raw JSON only.',\n        'Use intent values: research, pitch, brief, unknown.',\n        'Extract only what is present or safely inferable from the message text.',\n        'Do not claim to know Companies House numbers or websites yet.',\n        'For pitch requests, capture the company_name.',\n        'For brief requests, capture the sector.',\n        'Ensure sector, ticker  and company_url are derived on your own if not provided'\n      ].join(' '),\n    },\n    {\n      role: 'user',\n      content: $json.raw_text,\n    },\n  ],\n  response_format: {\n    type: 'json_schema',\n    json_schema: {\n      name: 'finance_research_intent',\n      strict: true,\n      schema: {\n        type: 'object',\n        additionalProperties: false,\n        properties: {\n          intent: { type: 'string', enum: ['research', 'pitch', 'brief', 'unknown'] },\n          company_name: { type: ['string', 'null'] },\n          sector: { type: ['string', 'null'] },\n          ticker: { type: ['string', 'null'] },\n          company_url: { type: ['string', 'null'] },\n          confidence: { type: ['number', 'null'] },\n          reasoning_note: { type: ['string', 'null'] }\n        },\n        required: ['intent', 'company_name', 'sector', 'ticker', 'company_url', 'confidence', 'reasoning_note']\n      }\n    }\n  }\n};\nreturn [{ json: { ...$json, openrouter_body: body } }];"},"typeVersion":2},{"id":"9bf6a6d3-73bd-4b67-8e17-6f7cb2bcb1ed","name":"Intent Classifier","type":"n8n-nodes-base.httpRequest","position":[-2496,1888],"parameters":{"url":"https://openrouter.ai/api/v1/chat/completions","method":"POST","options":{},"jsonBody":"={{$json.openrouter_body}}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"openRouterApi"},"credentials":{"openRouterApi":{"id":"Q2yB3Koan477YSJP","name":"OpenRouter account 2"}},"typeVersion":4.4},{"id":"d1779c3b-9f06-4212-afaf-97615fe5c61d","name":"Parse Intent","type":"n8n-nodes-base.code","position":[-2272,1888],"parameters":{"jsCode":"function parseJson(text) {\n  if (!text) return {};\n  const cleaned = String(text).trim().replace(/^```json\\s*/i, '').replace(/^```/, '').replace(/```$/, '').trim();\n  const first = cleaned.indexOf('{');\n  const last = cleaned.lastIndexOf('}');\n  const candidate = first >= 0 && last >= first ? cleaned.slice(first, last + 1) : cleaned;\n  return JSON.parse(candidate);\n}\nconst content = $json.choices?.[0]?.message?.content || '{}';\nconst parsed = parseJson(content);\nreturn [{ json: {\n  raw_text: $('Prepare Slack Context').item.json.raw_text,\n  channel: $('Prepare Slack Context').item.json.channel,\n  thread_ts: $('Prepare Slack Context').item.json.thread_ts,\n  user: $('Prepare Slack Context').item.json.user,\n  intent: parsed.intent || 'unknown',\n  company_name: parsed.company_name || '',\n  sector: parsed.sector || '',\n  ticker: parsed.ticker || '',\n  company_url: parsed.company_url || '',\n  confidence: parsed.confidence ?? null,\n  reasoning_note: parsed.reasoning_note || '',\n} }];"},"typeVersion":2},{"id":"64fa037a-374d-4206-9b6f-e0331154ea8c","name":"Intent Switch","type":"n8n-nodes-base.switch","position":[-2048,1856],"parameters":{"rules":{"values":[{"outputKey":"research","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"research"}]},"renameOutput":true},{"outputKey":"pitch","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"pitch"}]},"renameOutput":true},{"outputKey":"brief","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"brief"}]},"renameOutput":true},{"outputKey":"unknown","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"unknown"}]},"renameOutput":true}]},"options":{}},"typeVersion":3.4},{"id":"093d6f60-4315-4d8a-97ea-fb5b658d633f","name":"Unknown Intent Response","type":"n8n-nodes-base.code","position":[2896,1552],"parameters":{"jsCode":"return [{ json: {\n  channel: $json.channel,\n  thread_ts: $json.thread_ts,\n  reply_text: 'I could not route that request. Try one of: `Research Monzo, fintech`, `Prepare pitch for Monzo`, or `Industry briefing UK fintech`.'\n} }];"},"typeVersion":2},{"id":"060863ca-27ea-4610-b0d5-d1407572c863","name":"Has Research Inputs?","type":"n8n-nodes-base.if","position":[-1824,976],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.company_name }}","rightValue":""}]}},"typeVersion":2.2},{"id":"6c0b00e4-5501-4443-8d97-72d131722d48","name":"Research Missing Input Response","type":"n8n-nodes-base.code","position":[2880,1296],"parameters":{"jsCode":"return [{ json: {\n  channel: $json.channel,\n  thread_ts: $json.thread_ts,\n  reply_text: 'Research requests need a company name. Example: `Research Revolut, fintech`.'\n} }];"},"typeVersion":2},{"id":"e22e21d1-6b30-47df-ac1b-712c94cb5853","name":"Companies House Search","type":"n8n-nodes-base.httpRequest","position":[-1600,592],"parameters":{"url":"=https://api.company-information.service.gov.uk/search/companies?q={{ encodeURIComponent($json.company_name) }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpBasicAuth"},"credentials":{"httpBasicAuth":{"id":"ViPpJgBVpkFjATHW","name":"Companies House Basic Auth"}},"typeVersion":4.4},{"id":"f89d57fe-141b-4ce1-a235-e753d64a4b69","name":"Pick Best Company Match","type":"n8n-nodes-base.code","position":[-1376,592],"parameters":{"jsCode":"const input = $('Has Research Inputs?').item.json;\nconst target = (input.company_name || '').toLowerCase().trim();\nconst items = Array.isArray($json.items) ? $json.items : [];\nconst ranked = items\n  .filter((item) => item.company_number)\n  .map((item) => {\n    const title = String(item.title || '').toLowerCase();\n    let score = 0;\n    if (item.company_status === 'active') score += 5;\n    if (title === target) score += 20;\n    if (title.startsWith(target)) score += 10;\n    if (title.includes(target)) score += 5;\n    if (item.address_snippet && String(item.address_snippet).toLowerCase().includes('united kingdom')) score += 1;\n    return { item, score };\n  })\n  .sort((a, b) => b.score - a.score);\nconst best = ranked[0]?.item || null;\nreturn [{ json: {\n  ...input,\n  match_found: Boolean(best),\n  company_number: best?.company_number || '',\n  matched_title: best?.title || '',\n  matched_company_status: best?.company_status || '',\n  matched_address: best?.address_snippet || '',\n} }];"},"typeVersion":2},{"id":"0b293fb2-bbe2-46e3-9345-080b15d5bb4b","name":"Company Match Found?","type":"n8n-nodes-base.if","position":[-1152,592],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.match_found }}","rightValue":true}]}},"typeVersion":2.2},{"id":"71e8da5c-696f-4a57-913a-6f6abe126de1","name":"Company Not Found Response","type":"n8n-nodes-base.code","position":[2880,592],"parameters":{"jsCode":"return [{ json: {\n  channel: $json.channel,\n  thread_ts: $json.thread_ts,\n  reply_text: `Companies House could not find a reliable UK company match for *${$json.company_name}*. Check spelling or provide the registered company name.`\n} }];"},"typeVersion":2},{"id":"9698c1d5-2c0b-414e-b076-5ab3fa636c76","name":"Companies House Profile","type":"n8n-nodes-base.httpRequest","position":[-928,64],"parameters":{"url":"=https://api.company-information.service.gov.uk/company/{{ $json.company_number }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpBasicAuth"},"credentials":{"httpBasicAuth":{"id":"ViPpJgBVpkFjATHW","name":"Companies House Basic Auth"}},"typeVersion":4.4},{"id":"7e62dba8-cd88-4a31-89f8-867a08482fe7","name":"Wrap Profile","type":"n8n-nodes-base.code","position":[-704,64],"parameters":{"jsCode":"return [{ json: { source: 'profile', data: $json } }];"},"typeVersion":2},{"id":"733811d2-c4eb-4ab9-9529-b0be02d31ab1","name":"Companies House Officers","type":"n8n-nodes-base.httpRequest","position":[-928,256],"parameters":{"url":"=https://api.company-information.service.gov.uk/company/{{ $json.company_number }}/officers","options":{},"authentication":"genericCredentialType","genericAuthType":"httpBasicAuth"},"credentials":{"httpBasicAuth":{"id":"ViPpJgBVpkFjATHW","name":"Companies House Basic Auth"}},"typeVersion":4.4},{"id":"dcb05c0f-2b09-4a40-bb70-70e75aec88c4","name":"Wrap Officers","type":"n8n-nodes-base.code","position":[-704,256],"parameters":{"jsCode":"return [{ json: { source: 'officers', data: $json } }];"},"typeVersion":2},{"id":"2037a207-6dba-48af-bd42-7935ccd25756","name":"Companies House Filings","type":"n8n-nodes-base.httpRequest","position":[-896,448],"parameters":{"url":"=https://api.company-information.service.gov.uk/company/{{ $json.company_number }}/filing-history","options":{},"authentication":"genericCredentialType","genericAuthType":"httpBasicAuth"},"credentials":{"httpBasicAuth":{"id":"ViPpJgBVpkFjATHW","name":"Companies House Basic Auth"}},"typeVersion":4.4},{"id":"db395818-104e-4c9b-957b-7d9fdc9e6f41","name":"Wrap Filings","type":"n8n-nodes-base.code","position":[-720,448],"parameters":{"jsCode":"return [{ json: { source: 'filings', data: $json } }];"},"typeVersion":2},{"id":"0b5bf1ad-a904-4385-a6ae-1dae8c2a26a2","name":"Company News","type":"n8n-nodes-base.httpRequest","position":[-912,768],"parameters":{"url":"https://api.firecrawl.dev/v2/search","method":"POST","options":{},"jsonBody":"={{({ query: `${$json.company_name} ${$json.sector || \"\"} recent company news funding acquisitions`, sources: [\"web\", \"news\"], limit: 8, scrapeOptions: { onlyMainContent: true, formats: [\"markdown\"] } })}}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"urj4Vd8dSTNDkDwW","name":"Firecrawl Header auth"}},"typeVersion":4.4},{"id":"2d1842f6-1754-4590-b92d-04f8f26e44c8","name":"Wrap Research News","type":"n8n-nodes-base.code","position":[-624,800],"parameters":{"jsCode":"return [{ json: { source: 'news', data: $json } }];"},"typeVersion":2},{"id":"0aaf7ac9-a471-4be4-adc3-b1b5b8b99bf9","name":"Website Search","type":"n8n-nodes-base.httpRequest","position":[-880,608],"parameters":{"url":"https://api.firecrawl.dev/v2/search","method":"POST","options":{},"jsonBody":"={{({ query: $json.company_url ? `${$json.company_name} ${$json.company_url}` : `${$json.company_name} official website`, sources: [\"web\"], limit: 5, scrapeOptions: { onlyMainContent: true, formats: [\"markdown\"] } })}}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"urj4Vd8dSTNDkDwW","name":"Firecrawl Header auth"}},"typeVersion":4.4},{"id":"e0fbbc58-53e4-48c0-87ed-1338e3685ca9","name":"Wrap Website","type":"n8n-nodes-base.code","position":[-640,624],"parameters":{"jsCode":"return [{ json: { source: 'website', data: $json } }];"},"typeVersion":2},{"id":"fbe54b18-432c-4f6c-9fcb-23855fc8bf98","name":"Has Ticker?","type":"n8n-nodes-base.if","position":[-1312,896],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.ticker }}","rightValue":""}]}},"typeVersion":2.2},{"id":"ed0af8bf-7a2c-499a-b89c-6be804a25b90","name":"Alpha Vantage Overview","type":"n8n-nodes-base.httpRequest","position":[-912,928],"parameters":{"url":"=https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol={{ encodeURIComponent($json.ticker) }}&apikey=KEYHERE","options":{}},"typeVersion":4.4},{"id":"401249fc-1b4c-4ae8-8d04-58a4b9d39f32","name":"Wrap Alpha Vantage","type":"n8n-nodes-base.code","position":[-624,960],"parameters":{"jsCode":"return [{ json: { source: 'alphavantage', data: $json } }];"},"typeVersion":2},{"id":"746753eb-a9e6-407a-9189-c347941a9231","name":"No Market Data Placeholder","type":"n8n-nodes-base.code","position":[-80,992],"parameters":{"jsCode":"return [{ json: { source: 'alphavantage', data: { skipped: true, reason: 'No public ticker supplied or inferred.' } } }];"},"typeVersion":2},{"id":"4344ed39-de97-4bd3-92c4-94e60e9415a7","name":"Merge Research 1","type":"n8n-nodes-base.merge","position":[-480,144],"parameters":{},"typeVersion":3.2},{"id":"5f5a5dd5-9dfa-4dcf-89ea-a1fb572d34b5","name":"Merge Research 2","type":"n8n-nodes-base.merge","position":[-256,240],"parameters":{},"typeVersion":3.2},{"id":"e72d8b28-ac7d-446c-9559-a03449845f7e","name":"Merge Research 3","type":"n8n-nodes-base.merge","position":[-32,240],"parameters":{},"typeVersion":3.2},{"id":"0dee524d-0092-4cc7-af2e-985091c7ddb3","name":"Merge Research 4","type":"n8n-nodes-base.merge","position":[192,240],"parameters":{},"typeVersion":3.2},{"id":"b50e0fcd-15c8-478c-91a8-94c20ea6ebe8","name":"Merge Research 5","type":"n8n-nodes-base.merge","position":[416,400],"parameters":{},"typeVersion":3.2},{"id":"86b7b978-04db-4bd3-810b-480e62455c07","name":"Build Research Bundle","type":"n8n-nodes-base.code","position":[640,400],"parameters":{"jsCode":"const routed = $('Pick Best Company Match').item.json;\nconst bundle = {\n  channel: routed.channel,\n  thread_ts: routed.thread_ts,\n  raw_text: routed.raw_text,\n  company_name: routed.company_name,\n  sector: routed.sector,\n  ticker: routed.ticker,\n  company_url: routed.company_url,\n  company_number: routed.company_number,\n  matched_title: routed.matched_title,\n  sources: {},\n  warnings: [],\n};\nfor (const item of $input.all()) {\n  const source = item.json.source;\n  if (source) bundle.sources[source] = item.json.data;\n}\nif (bundle.sources.alphavantage?.skipped) bundle.warnings.push(bundle.sources.alphavantage.reason);\nconst websiteHit = Array.isArray(bundle.sources.website?.data) ? bundle.sources.website.data[0] : bundle.sources.website?.data?.[0];\nconst websiteUrl = websiteHit?.url || websiteHit?.metadata?.sourceURL || bundle.company_url || '';\nconst marketCapRaw = bundle.sources.alphavantage?.MarketCapitalization || bundle.sources.alphavantage?.['Global Quote']?.['05. price'] || '';\nbundle.market_cap = marketCapRaw && marketCapRaw !== 'None' ? marketCapRaw : '';\nbundle.website_url = websiteUrl;\nreturn [{ json: bundle }];"},"typeVersion":2},{"id":"587e96ce-3c50-407c-8fc9-1c6f109ba499","name":"Build Research Prompt","type":"n8n-nodes-base.code","position":[864,400],"parameters":{"jsCode":"const body = {\n  model: 'anthropic/claude-sonnet-4.5',\n  temperature: 0.2,\n  messages: [\n    {\n      role: 'system',\n      content: [\n        'You are a junior finance research analyst for a UK boutique M&A advisory.',\n        'Use only the supplied source data.',\n        'If a field is missing, say it is unavailable rather than inventing it.',\n        'Return raw JSON only.'\n      ].join(' '),\n    },\n    {\n      role: 'user',\n      content: `Create a company research pack for ${$json.company_name} in sector ${$json.sector || 'unknown'} using this source bundle:\\n${JSON.stringify($json)}`,\n    },\n  ],\n  response_format: {\n    type: 'json_schema',\n    json_schema: {\n      name: 'finance_research_output',\n      strict: true,\n      schema: {\n        type: 'object',\n        additionalProperties: false,\n        properties: {\n          profile_markdown: { type: 'string' },\n          slack_summary: { type: 'string' },\n          market_cap_summary: { type: 'string' },\n          risks_summary: { type: 'string' }\n        },\n        required: ['profile_markdown', 'slack_summary', 'market_cap_summary', 'risks_summary']\n      }\n    }\n  }\n};\nreturn [{ json: { ...$json, openrouter_body: body } }];"},"typeVersion":2},{"id":"a56a308a-f7bf-414c-a648-26c94fba8ccd","name":"Research AI","type":"n8n-nodes-base.httpRequest","position":[1088,400],"parameters":{"url":"https://openrouter.ai/api/v1/chat/completions","method":"POST","options":{},"jsonBody":"={{$json.openrouter_body}}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"openRouterApi"},"credentials":{"openRouterApi":{"id":"Q2yB3Koan477YSJP","name":"OpenRouter account 2"}},"typeVersion":4.4},{"id":"7f8a449b-1d98-4df3-abc2-aa1d145cf146","name":"Parse Research Output","type":"n8n-nodes-base.code","position":[1312,400],"parameters":{"jsCode":"function parseJson(text) {\n  const cleaned = String(text || '').trim().replace(/^```json\\s*/i, '').replace(/^```/, '').replace(/```$/, '').trim();\n  const first = cleaned.indexOf('{');\n  const last = cleaned.lastIndexOf('}');\n  const candidate = first >= 0 && last >= first ? cleaned.slice(first, last + 1) : cleaned;\n  return JSON.parse(candidate);\n}\nconst content = $json.choices?.[0]?.message?.content || '{}';\nconst parsed = parseJson(content);\nreturn [{ json: {\n  ...$('Build Research Prompt').item.json,\n  profile_markdown: parsed.profile_markdown,\n  slack_summary: parsed.slack_summary,\n  market_cap_summary: parsed.market_cap_summary,\n  risks_summary: parsed.risks_summary,\n} }];"},"typeVersion":2},{"id":"597e20a0-0628-4a4c-923d-6ede7669fe0c","name":"Create Research Folder","type":"n8n-nodes-base.googleDrive","position":[1536,400],"parameters":{"name":"={{$json.company_name.replace(/[\\\\/:*?\"<>|]/g, '-') + ' - research - ' + $now.toFormat('yyyy-LL-dd')}}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"url","value":"=https://drive.google.com/drive/u/0/folders/1GH-YouAAImKugZ11IbqA6Ouw8B9U17-I"},"resource":"folder"},"credentials":{"googleDriveOAuth2Api":{"id":"9ln1JcwPvcRrrwvR","name":"Google Drive account"}},"typeVersion":3},{"id":"662c9eb5-a21b-4d56-98fd-c508cb82cfa2","name":"Create Profile Doc","type":"n8n-nodes-base.googleDocs","position":[1760,400],"parameters":{"title":"={{$node[\"Parse Research Output\"].json.company_name}} Company Profile","folderId":"={{$json.id}}"},"credentials":{"googleDocsOAuth2Api":{"id":"knx3By2RN42co3AV","name":"Google Docs account"}},"typeVersion":2},{"id":"26a8430d-4b11-4af8-a1d4-28c456e23ccd","name":"Update Profile Doc","type":"n8n-nodes-base.googleDocs","position":[1984,400],"parameters":{"actionsUi":{"actionFields":[{"text":"={{$node[\"Parse Research Output\"].json.profile_markdown}}","action":"insert"}]},"operation":"update","documentURL":"={{ $json.id }}"},"credentials":{"googleDocsOAuth2Api":{"id":"knx3By2RN42co3AV","name":"Google Docs account"}},"typeVersion":2},{"id":"7c808348-0c4f-468c-98c7-227cdddf254d","name":"Upsert Company Record","type":"n8n-nodes-base.postgres","position":[2208,400],"parameters":{"query":"\nINSERT INTO aiemp_research_analyst_companies (\n  company_name,\n  sector,\n  companies_house_number,\n  registered_address,\n  incorporation_date,\n  sic_codes,\n  directors,\n  market_cap,\n  stock_ticker,\n  website_url,\n  profile_doc_url,\n  last_researched_at\n)\nVALUES (\n  '{{ $node[\"Parse Research Output\"].json.company_name.replace(/'/g, \"''\") }}',\n  '{{ ($node[\"Parse Research Output\"].json.sector || '').replace(/'/g, \"''\") }}',\n  '{{ $node[\"Parse Research Output\"].json.company_number.replace(/'/g, \"''\") }}',\n  '{{ JSON.stringify($node[\"Build Research Bundle\"].json.sources.profile?.registered_office_address || {}).replace(/'/g, \"''\") }}',\n  {{ $node[\"Build Research Bundle\"].json.sources.profile?.date_of_creation ? \"'\" + $node[\"Build Research Bundle\"].json.sources.profile.date_of_creation + \"'\" : 'NULL' }},\n  ARRAY[{{ (($node[\"Build Research Bundle\"].json.sources.profile?.sic_codes || []).map((code) => \"'\" + String(code).replace(/'/g, \"''\") + \"'\").join(',')) || '' }}],\n  '{{ JSON.stringify(($node[\"Build Research Bundle\"].json.sources.officers?.items || []).slice(0, 8).map((officer) => ({ name: officer.name, role: officer.officer_role, appointed_on: officer.appointed_on }))).replace(/'/g, \"''\") }}'::jsonb,\n  {{ $node[\"Build Research Bundle\"].json.market_cap ? $node[\"Build Research Bundle\"].json.market_cap : 'NULL' }},\n  {{ $node[\"Parse Research Output\"].json.ticker ? \"'\" + $node[\"Parse Research Output\"].json.ticker.replace(/'/g, \"''\") + \"'\" : 'NULL' }},\n  {{ $node[\"Build Research Bundle\"].json.website_url ? \"'\" + $node[\"Build Research Bundle\"].json.website_url.replace(/'/g, \"''\") + \"'\" : 'NULL' }},\n  '{{ (\"https://docs.google.com/document/d/\" + $node[\"Create Profile Doc\"].json.id + \"/edit\").replace(/'/g, \"''\") }}',\n  NOW()\n)\nON CONFLICT (companies_house_number) DO UPDATE SET\n  company_name = EXCLUDED.company_name,\n  sector = EXCLUDED.sector,\n  registered_address = EXCLUDED.registered_address,\n  incorporation_date = EXCLUDED.incorporation_date,\n  sic_codes = EXCLUDED.sic_codes,\n  directors = EXCLUDED.directors,\n  market_cap = EXCLUDED.market_cap,\n  stock_ticker = EXCLUDED.stock_ticker,\n  website_url = EXCLUDED.website_url,\n  profile_doc_url = EXCLUDED.profile_doc_url,\n  last_researched_at = NOW();\nSELECT id, company_name, sector, companies_house_number, profile_doc_url, pitch_deck_url\nFROM aiemp_research_analyst_companies\nWHERE companies_house_number = '{{ $node[\"Parse Research Output\"].json.company_number.replace(/'/g, \"''\") }}'\nLIMIT 1;\n","options":{},"operation":"executeQuery"},"credentials":{"postgres":{"id":"AKFOYTz01r0Jff39","name":"Mini Postgres - Earnwithai_dev"}},"typeVersion":2.6},{"id":"c4c8e333-b238-4fdd-89a2-648aafdeb909","name":"Save Research Memory","type":"n8n-nodes-base.postgres","position":[2432,400],"parameters":{"query":"\nINSERT INTO aiemp_research_analyst_research_memory (company_id, intent, content_text, embedding)\nVALUES (\n  '{{ $node[\"Upsert Company Record\"].json.id }}',\n  'research',\n  '{{ $node[\"Parse Research Output\"].json.profile_markdown.replace(/'/g, \"''\") }}',\n  NULL\n);\nSELECT '{{ $node[\"Upsert Company Record\"].json.id }}' AS company_id;\n","options":{},"operation":"executeQuery"},"credentials":{"postgres":{"id":"AKFOYTz01r0Jff39","name":"Mini Postgres - Earnwithai_dev"}},"typeVersion":2.6},{"id":"d5351e91-031f-4477-bedc-5374816a3c15","name":"Update Client DB Research","type":"n8n-nodes-base.googleSheets","position":[2656,400],"parameters":{"columns":{"value":{"sector":"={{$node[\"Parse Research Output\"].json.sector}}","market_cap":"={{$node[\"Build Research Bundle\"].json.market_cap || \"\"}}","company_name":"={{$node[\"Parse Research Output\"].json.company_name}}","pitch_deck_url":"={{$node[\"Upsert Company Record\"].json.pitch_deck_url || \"\"}}","last_researched":"={{$now.toISO()}}","profile_doc_url":"={{\"https://docs.google.com/document/d/\" + $node[\"Create Profile Doc\"].json.id + \"/edit\"}}","companies_house_number":"={{$node[\"Parse Research Output\"].json.company_number}}"},"schema":[{"id":"company_name","type":"string","display":true,"required":false,"displayName":"company_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"sector","type":"string","display":true,"required":false,"displayName":"sector","defaultMatch":false,"canBeUsedToMatch":true},{"id":"companies_house_number","type":"string","display":true,"required":false,"displayName":"companies_house_number","defaultMatch":true,"canBeUsedToMatch":true},{"id":"market_cap","type":"string","display":true,"required":false,"displayName":"market_cap","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_researched","type":"string","display":true,"required":false,"displayName":"last_researched","defaultMatch":false,"canBeUsedToMatch":true},{"id":"profile_doc_url","type":"string","display":true,"required":false,"displayName":"profile_doc_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"pitch_deck_url","type":"string","display":true,"required":false,"displayName":"pitch_deck_url","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["companies_house_number"]},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Sheet1"},"documentId":{"__rl":true,"mode":"url","value":"=https://docs.google.com/spreadsheets/d/1yJ-UKOEUqIruCv-IBA33oN4taQTB1TA8M4a6D2iSiOU/edit?gid=0#gid=0"}},"credentials":{"googleSheetsOAuth2Api":{"id":"O9ZdfCoO0JpdNfBS","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"2cbd75bd-4b69-4da2-bc4f-354fb6890b02","name":"Research Response","type":"n8n-nodes-base.code","position":[2880,400],"parameters":{"jsCode":"const docUrl = `https://docs.google.com/document/d/${$('Create Profile Doc').first().json.id}/edit`;\nreturn [{ json: {\n  channel: $('Parse Research Output').first().json.channel,\n  thread_ts: $('Parse Research Output').first().json.thread_ts,\n  reply_text: `Research complete for *${$('Parse Research Output').first().json.company_name}*\\n\\n${$('Parse Research Output').first().json.slack_summary}\\n\\nProfile doc: ${docUrl}`\n} }];"},"typeVersion":2},{"id":"93e31fc7-fff6-4cd9-85fe-c999006bbc29","name":"Has Pitch Company?","type":"n8n-nodes-base.if","position":[-480,1968],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.company_name }}","rightValue":""}]}},"typeVersion":2.2},{"id":"2486f00c-8c80-4494-84b5-d622ff20eabb","name":"Pitch Missing Input Response","type":"n8n-nodes-base.code","position":[2880,2176],"parameters":{"jsCode":"return [{ json: {\n  channel: $json.channel,\n  thread_ts: $json.thread_ts,\n  reply_text: 'Pitch requests need a company name. Example: `Prepare pitch for Revolut`.'\n} }];"},"typeVersion":2},{"id":"ee986493-5763-4050-91ca-29b84c8edb8b","name":"Load Company Record","type":"n8n-nodes-base.postgres","position":[-256,1872],"parameters":{"query":"\nSELECT * FROM (\n  SELECT\n    c.id,\n    c.company_name,\n    c.sector,\n    c.companies_house_number,\n    c.profile_doc_url,\n    c.pitch_deck_url,\n    c.website_url,\n    c.stock_ticker,\n    c.last_researched_at\n  FROM aiemp_research_analyst_companies c\n  WHERE lower(c.company_name) = lower('{{ $json.company_name.replace(/'/g, \"''\") }}')\n  ORDER BY c.created_at DESC\n  LIMIT 1\n) found\nUNION ALL\nSELECT\n  NULL::uuid,\n  NULL::text,\n  NULL::text,\n  NULL::text,\n  NULL::text,\n  NULL::text,\n  NULL::text,\n  NULL::text,\n  NULL::timestamptz\nWHERE NOT EXISTS (\n  SELECT 1 FROM aiemp_research_analyst_companies c\n  WHERE lower(c.company_name) = lower('{{ $json.company_name.replace(/'/g, \"''\") }}')\n);\n","options":{},"operation":"executeQuery"},"credentials":{"postgres":{"id":"AKFOYTz01r0Jff39","name":"Mini Postgres - Earnwithai_dev"}},"typeVersion":2.6},{"id":"58d18b5b-538c-4e26-8d01-1efab45587c7","name":"Has Prior Research?","type":"n8n-nodes-base.if","position":[-32,1872],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.id }}","rightValue":""}]}},"typeVersion":2.2},{"id":"d521abb4-616d-451c-8669-34ab4f06d938","name":"Pitch Missing Research Response","type":"n8n-nodes-base.code","position":[640,1776],"parameters":{"jsCode":"return [{ json: {\n  channel: $('Parse Intent').item.json.channel,\n  thread_ts: $('Parse Intent').item.json.thread_ts,\n  reply_text: `No stored research exists for *${$('Parse Intent').item.json.company_name}*. Run a research request first.`\n} }];"},"typeVersion":2},{"id":"6b8693aa-e5fd-4381-94f2-b3703a383a61","name":"Load Research Memory","type":"n8n-nodes-base.postgres","position":[192,1936],"parameters":{"query":"\nSELECT * FROM (\n  SELECT rm.content_text, rm.created_at\n  FROM aiemp_research_analyst_research_memory rm\n  WHERE rm.company_id = '{{ $node[\"Load Company Record\"].json.id }}'\n    AND rm.intent = 'research'\n  ORDER BY rm.created_at DESC\n  LIMIT 1\n) found\nUNION ALL\nSELECT NULL::text, NULL::timestamptz\nWHERE NOT EXISTS (\n  SELECT 1\n  FROM aiemp_research_analyst_research_memory rm\n  WHERE rm.company_id = '{{ $node[\"Load Company Record\"].json.id }}'\n    AND rm.intent = 'research'\n);\n","options":{},"operation":"executeQuery"},"credentials":{"postgres":{"id":"AKFOYTz01r0Jff39","name":"Mini Postgres - Earnwithai_dev"}},"typeVersion":2.6},{"id":"e67a1161-1a48-4782-8c28-df474380cad8","name":"Has Research Memory?","type":"n8n-nodes-base.if","position":[416,1936],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.content_text }}","rightValue":""}]}},"typeVersion":2.2},{"id":"6555fbbf-de55-4ad6-a959-6a1a06953bc5","name":"Create Pitch Folder","type":"n8n-nodes-base.googleDrive","position":[640,1984],"parameters":{"name":"={{$node['Load Company Record'].json.company_name.replace(/[\\\\/:*?\"<>|]/g, '-') + ' - pitch - ' + $now.toFormat('yyyy-LL-dd')}}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"url","value":"=https://drive.google.com/drive/u/0/folders/1GH-YouAAImKugZ11IbqA6Ouw8B9U17-I"},"resource":"folder"},"credentials":{"googleDriveOAuth2Api":{"id":"9ln1JcwPvcRrrwvR","name":"Google Drive account"}},"typeVersion":3},{"id":"73cecdcf-4341-4199-9d85-8369d058df27","name":"Build Pitch Prompt","type":"n8n-nodes-base.code","position":[864,1984],"parameters":{"jsCode":"const company = $('Load Company Record').item.json;\nconst memory = $('Load Research Memory').item.json.content_text;\nconst body = {\n  model: 'anthropic/claude-haiku-4.5',\n  temperature: 0.2,\n  messages: [\n    {\n      role: 'system',\n      content: [\n        'You prepare pitch materials for a boutique corporate finance team.',\n        'Free-tier mode only: do not invent deal comps, valuation multiples, or proprietary transaction data.',\n        'If comps are unavailable, say so plainly.',\n        'All slide content must be short, presentation-ready, and formatted as concise bullet points.',\n        'Do not write narrative paragraphs for slide fields.',\n        'For profile_summary, financials, opportunity_summary, and comps_note, return 3 to 5 bullets max per field.',\n        'Keep each bullet to one short line where possible.',\n        'If the template contains charts, leave chart content implied by the bullets rather than describing charts in prose.',\n        'Return raw JSON only.'\n      ].join(' '),\n    },\n    {\n      role: 'user',\n      content: `Create pitch materials for ${company.company_name}. Stored research:\\n${memory}\\n\\nImportant: the deck is copied into a slide template. Keep the slide text compact so it fits neatly into text boxes. Use bullet points, not paragraphs.` ,\n    },\n  ],\n  response_format: {\n    type: 'json_schema',\n    json_schema: {\n      name: 'finance_pitch_output',\n      strict: true,\n      schema: {\n        type: 'object',\n        additionalProperties: false,\n        properties: {\n          profile_summary: { type: 'string' },\n          financials: { type: 'string' },\n          opportunity_summary: { type: 'string' },\n          comps_note: { type: 'string' },\n          press_release_markdown: { type: 'string' },\n          slack_summary: { type: 'string' }\n        },\n        required: ['profile_summary', 'financials', 'opportunity_summary', 'comps_note', 'press_release_markdown', 'slack_summary']\n      }\n    }\n  }\n};\nreturn [{ json: {\n  channel: $('Parse Intent').item.json.channel,\n  thread_ts: $('Parse Intent').item.json.thread_ts,\n  company_name: company.company_name,\n  sector: company.sector,\n  openrouter_body: body,\n} }];"},"typeVersion":2},{"id":"23ec349a-0a7e-4a8c-86af-07fbd651e9ca","name":"Pitch AI","type":"n8n-nodes-base.httpRequest","position":[1088,1984],"parameters":{"url":"https://openrouter.ai/api/v1/chat/completions","method":"POST","options":{},"jsonBody":"={{$json.openrouter_body}}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"openRouterApi"},"credentials":{"openRouterApi":{"id":"Q2yB3Koan477YSJP","name":"OpenRouter account 2"}},"typeVersion":4.4},{"id":"e9a5bba7-06a6-4076-b3e3-092f6d095cfa","name":"Parse Pitch Output","type":"n8n-nodes-base.code","position":[1312,1984],"parameters":{"jsCode":"function parseJson(text) {\n  const cleaned = String(text || '').trim().replace(/^```json\\s*/i, '').replace(/^```/, '').replace(/```$/, '').trim();\n  const first = cleaned.indexOf('{');\n  const last = cleaned.lastIndexOf('}');\n  const candidate = first >= 0 && last >= first ? cleaned.slice(first, last + 1) : cleaned;\n  return JSON.parse(candidate);\n}\nconst content = $json.choices?.[0]?.message?.content || '{}';\nconst parsed = parseJson(content);\nreturn [{ json: {\n  ...$('Build Pitch Prompt').item.json,\n  profile_summary: parsed.profile_summary,\n  financials: parsed.financials,\n  opportunity_summary: parsed.opportunity_summary,\n  comps_note: parsed.comps_note,\n  press_release_markdown: parsed.press_release_markdown,\n  slack_summary: parsed.slack_summary,\n} }];"},"typeVersion":2},{"id":"4375166b-caa0-46ff-8dce-3468f2144bdd","name":"Copy Slides Template","type":"n8n-nodes-base.googleDrive","position":[1536,1984],"parameters":{"name":"={{$node[\"Parse Pitch Output\"].json.company_name}} Pitch Deck","fileId":{"__rl":true,"mode":"id","value":"1zQv_cbafHzd4JNsr711Rm0558O6W_S1SODc-u6tVS0k"},"driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"id","value":"={{$node[\"Create Pitch Folder\"].json.id}}"},"operation":"copy","sameFolder":false},"credentials":{"googleDriveOAuth2Api":{"id":"9ln1JcwPvcRrrwvR","name":"Google Drive account"}},"typeVersion":3},{"id":"65b78c5e-1785-46e8-af6f-2fe0bb703209","name":"Create Custom Presentation","type":"n8n-nodes-base.googleSlides","position":[1760,1984],"parameters":{"textUi":{"textValues":[{"text":"{company_name}","replaceText":"={{$node[\"Parse Pitch Output\"].json.company_name}}"},{"text":"{sector}","replaceText":"={{$node[\"Parse Pitch Output\"].json.sector || \"\"}}"},{"text":"{profile_summary}","replaceText":"={{$node[\"Parse Pitch Output\"].json.profile_summary}}"},{"text":"{financials}","replaceText":"={{$node[\"Parse Pitch Output\"].json.financials}}"},{"text":"{opportunity_summary}","replaceText":"={{$node[\"Parse Pitch Output\"].json.opportunity_summary}}"},{"text":"{comps_note}","replaceText":"={{$node[\"Parse Pitch Output\"].json.comps_note}}"}]},"options":{},"operation":"replaceText","presentationId":"={{$json.id}}"},"credentials":{"googleSlidesOAuth2Api":{"id":"NoDJIFBK9jx5oXRe","name":"Google Slides account"}},"typeVersion":2},{"id":"a3861a20-dc3c-4e7f-863e-4e906ba07535","name":"Create Press Release Doc","type":"n8n-nodes-base.googleDocs","position":[1984,1984],"parameters":{"title":"={{$node[\"Parse Pitch Output\"].json.company_name}} Press Release Draft","folderId":"={{$node[\"Create Pitch Folder\"].json.id}}"},"credentials":{"googleDocsOAuth2Api":{"id":"knx3By2RN42co3AV","name":"Google Docs account"}},"typeVersion":2},{"id":"4c54db00-6ed1-4588-9cdc-5040fbacbc87","name":"Update Press Release Doc","type":"n8n-nodes-base.googleDocs","position":[2208,1984],"parameters":{"actionsUi":{"actionFields":[{"text":"={{$node[\"Parse Pitch Output\"].json.press_release_markdown}}","action":"insert"}]},"operation":"update","documentURL":"={{$json.id}}"},"credentials":{"googleDocsOAuth2Api":{"id":"knx3By2RN42co3AV","name":"Google Docs account"}},"typeVersion":2},{"id":"d62fbbdd-2198-4854-ad1f-db083e94ad6e","name":"Update Pitch Assets","type":"n8n-nodes-base.postgres","position":[2432,1984],"parameters":{"query":"\nUPDATE aiemp_research_analyst_companies\nSET pitch_deck_url = '{{ (\"https://docs.google.com/presentation/d/\" + $node[\"Copy Slides Template\"].json.id + \"/edit\").replace(/'/g, \"''\") }}'\nWHERE id = '{{ $node[\"Load Company Record\"].json.id }}';\nSELECT id, company_name, sector, companies_house_number, profile_doc_url, pitch_deck_url\nFROM aiemp_research_analyst_companies\nWHERE id = '{{ $node[\"Load Company Record\"].json.id }}'\nLIMIT 1;\n","options":{},"operation":"executeQuery"},"credentials":{"postgres":{"id":"AKFOYTz01r0Jff39","name":"Mini Postgres - Earnwithai_dev"}},"typeVersion":2.6},{"id":"45ad1354-cba8-408f-a2a7-6d9cb743350c","name":"Update Client DB Pitch","type":"n8n-nodes-base.googleSheets","position":[2656,1984],"parameters":{"columns":{"value":{"sector":"={{$node[\"Load Company Record\"].json.sector || \"\"}}","market_cap":"","company_name":"={{$node[\"Load Company Record\"].json.company_name}}","pitch_deck_url":"={{\"https://docs.google.com/presentation/d/\" + $node[\"Copy Slides Template\"].json.id + \"/edit\"}}","last_researched":"={{$node[\"Load Company Record\"].json.last_researched_at || \"\"}}","profile_doc_url":"={{$node[\"Load Company Record\"].json.profile_doc_url || \"\"}}","companies_house_number":"={{$node[\"Load Company Record\"].json.companies_house_number || \"\"}}"},"schema":[{"id":"company_name","type":"string","display":true,"required":false,"displayName":"company_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"sector","type":"string","display":true,"required":false,"displayName":"sector","defaultMatch":false,"canBeUsedToMatch":true},{"id":"companies_house_number","type":"string","display":true,"required":false,"displayName":"companies_house_number","defaultMatch":true,"canBeUsedToMatch":true},{"id":"market_cap","type":"string","display":true,"required":false,"displayName":"market_cap","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_researched","type":"string","display":true,"required":false,"displayName":"last_researched","defaultMatch":false,"canBeUsedToMatch":true},{"id":"profile_doc_url","type":"string","display":true,"required":false,"displayName":"profile_doc_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"pitch_deck_url","type":"string","display":true,"required":false,"displayName":"pitch_deck_url","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["companies_house_number"]},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Sheet1"},"documentId":{"__rl":true,"mode":"url","value":"=https://docs.google.com/spreadsheets/d/1yJ-UKOEUqIruCv-IBA33oN4taQTB1TA8M4a6D2iSiOU/edit?gid=0#gid=0"}},"credentials":{"googleSheetsOAuth2Api":{"id":"O9ZdfCoO0JpdNfBS","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"bc1c8cab-bb0c-4bf0-b2fb-b58363817b61","name":"Pitch Response","type":"n8n-nodes-base.code","position":[2880,1984],"parameters":{"jsCode":"const deckUrl = `https://docs.google.com/presentation/d/${$('Copy Slides Template').first().json.id}/edit`;\nconst docUrl = `https://docs.google.com/document/d/${$('Create Press Release Doc').first().json.id}/edit`;\nreturn [{ json: {\n  channel: $('Parse Pitch Output').first().json.channel,\n  thread_ts: $('Parse Pitch Output').first().json.thread_ts,\n  reply_text: `Pitch materials ready for *${$('Parse Pitch Output').first().json.company_name}*\\n\\n${$('Parse Pitch Output').first().json.slack_summary}\\n\\nPitch deck: ${deckUrl}\\nPress release draft: ${docUrl}`\n} }];"},"typeVersion":2},{"id":"32982ac8-cf47-4bf5-87b6-9e720f2b7959","name":"Has Brief Sector?","type":"n8n-nodes-base.if","position":[-608,2496],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.sector }}","rightValue":""}]}},"typeVersion":2.2},{"id":"438c6f65-01fa-44cf-a850-69b107fc95d8","name":"Brief Missing Sector Response","type":"n8n-nodes-base.code","position":[2880,2560],"parameters":{"jsCode":"return [{ json: {\n  channel: $json.channel,\n  thread_ts: $json.thread_ts,\n  reply_text: 'Industry briefings need a sector. Example: `Industry briefing UK fintech`.'\n} }];"},"typeVersion":2},{"id":"15612463-3983-470c-9dde-193dd813ebdd","name":"Sector News","type":"n8n-nodes-base.httpRequest","position":[-64,2288],"parameters":{"url":"https://api.firecrawl.dev/v2/search","method":"POST","options":{},"jsonBody":"={{({ query: `${$json.sector} UK mergers acquisitions trends recent news`, sources: [\"web\", \"news\"], limit: 10, scrapeOptions: { onlyMainContent: true, formats: [\"markdown\"] } })}}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"urj4Vd8dSTNDkDwW","name":"Firecrawl Header auth"}},"typeVersion":4.4},{"id":"cfb909fd-3d75-4975-a638-76b246c41cdd","name":"Wrap Sector News","type":"n8n-nodes-base.code","position":[288,2320],"parameters":{"jsCode":"return [{ json: { source: 'news', data: $json } }];"},"typeVersion":2},{"id":"d3e37619-1e6b-48d7-b5c6-95dbb15c8058","name":"ONS M&A Source","type":"n8n-nodes-base.httpRequest","position":[-128,2624],"parameters":{"url":"https://www.ons.gov.uk/businessindustryandtrade/changestobusiness/mergersandacquisitions/bulletins/mergersandacquisitionsinvolvingukcompanies/julytoseptember2024/relateddata","options":{}},"typeVersion":4.4},{"id":"c2f28081-28a0-4262-af9a-22fb808473ff","name":"Wrap ONS M&A","type":"n8n-nodes-base.code","position":[272,2640],"parameters":{"jsCode":"return [{ json: { source: 'ons', data: $json } }];"},"typeVersion":2},{"id":"f2558a5e-85b2-4aea-9898-895c77dd122a","name":"Merge Brief Sources","type":"n8n-nodes-base.merge","position":[544,2368],"parameters":{},"typeVersion":3.2},{"id":"62d1bfdf-927a-402d-a110-107f875c3c43","name":"Build Brief Bundle","type":"n8n-nodes-base.code","position":[1312,2368],"parameters":{"jsCode":"const routed = $('Parse Intent').item.json;\nconst bundle = {\n  channel: routed.channel,\n  thread_ts: routed.thread_ts,\n  sector: routed.sector,\n  raw_text: routed.raw_text,\n  sources: {},\n};\nfor (const item of $input.all()) {\n  if (item.json.source) bundle.sources[item.json.source] = item.json.data;\n}\nreturn [{ json: bundle }];"},"typeVersion":2},{"id":"4b76bf83-c93f-4b8c-a093-9b5bbf27be70","name":"Build Brief Prompt","type":"n8n-nodes-base.code","position":[1536,2368],"parameters":{"jsCode":"const body = {\n  model: 'anthropic/claude-haiku-4.5',\n  temperature: 0.2,\n  messages: [\n    {\n      role: 'system',\n      content: [\n        'You write concise UK corporate finance industry briefings.',\n        'Use only the supplied inputs.',\n        'ONS data is macro M&A context, not sector deal comps.',\n        'Return raw JSON only.'\n      ].join(' '),\n    },\n    {\n      role: 'user',\n      content: `Create a one-page industry briefing for ${$json.sector}. Source bundle:\\n${JSON.stringify($json)}`,\n    },\n  ],\n  response_format: {\n    type: 'json_schema',\n    json_schema: {\n      name: 'finance_brief_output',\n      strict: true,\n      schema: {\n        type: 'object',\n        additionalProperties: false,\n        properties: {\n          brief_markdown: { type: 'string' },\n          slack_summary: { type: 'string' }\n        },\n        required: ['brief_markdown', 'slack_summary']\n      }\n    }\n  }\n};\nreturn [{ json: { ...$json, openrouter_body: body } }];"},"typeVersion":2},{"id":"8062e577-9969-4f07-8240-ce2c9b8f3b20","name":"Brief AI","type":"n8n-nodes-base.httpRequest","position":[1760,2368],"parameters":{"url":"https://openrouter.ai/api/v1/chat/completions","method":"POST","options":{},"jsonBody":"={{$json.openrouter_body}}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"openRouterApi"},"credentials":{"openRouterApi":{"id":"k4ivtlj78UzE5LtO","name":"OpenRouter direct"}},"typeVersion":4.4},{"id":"d4b2d382-38b6-483b-aa6f-40b3acc513a2","name":"Parse Brief Output","type":"n8n-nodes-base.code","position":[1984,2368],"parameters":{"jsCode":"function parseJson(text) {\n  const cleaned = String(text || '').trim().replace(/^```json\\s*/i, '').replace(/^```/, '').replace(/```$/, '').trim();\n  const first = cleaned.indexOf('{');\n  const last = cleaned.lastIndexOf('}');\n  const candidate = first >= 0 && last >= first ? cleaned.slice(first, last + 1) : cleaned;\n  return JSON.parse(candidate);\n}\nconst content = $json.choices?.[0]?.message?.content || '{}';\nconst parsed = parseJson(content);\nreturn [{ json: {\n  ...$('Build Brief Prompt').item.json,\n  brief_markdown: parsed.brief_markdown,\n  slack_summary: parsed.slack_summary,\n} }];"},"typeVersion":2},{"id":"06cdd69b-4319-40a5-a5f3-974fe29132ca","name":"Create Brief Folder","type":"n8n-nodes-base.googleDrive","position":[2208,2368],"parameters":{"name":"={{$json.sector.replace(/[\\\\/:*?\"<>|]/g, '-') + ' - briefing - ' + $now.toFormat('yyyy-LL-dd')}}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"url","value":"=https://drive.google.com/drive/u/0/folders/1GH-YouAAImKugZ11IbqA6Ouw8B9U17-I"},"resource":"folder"},"credentials":{"googleDriveOAuth2Api":{"id":"9ln1JcwPvcRrrwvR","name":"Google Drive account"}},"typeVersion":3},{"id":"a35f1153-15ec-45ac-8003-91c0f3b46cc6","name":"Create Brief Doc","type":"n8n-nodes-base.googleDocs","position":[2432,2368],"parameters":{"title":"={{$node[\"Parse Brief Output\"].json.sector}} Industry Briefing","folderId":"={{$json.id}}"},"credentials":{"googleDocsOAuth2Api":{"id":"knx3By2RN42co3AV","name":"Google Docs account"}},"typeVersion":2},{"id":"d68a4ee4-853d-4f87-a505-952f601f1a16","name":"Update Brief Doc","type":"n8n-nodes-base.googleDocs","position":[2656,2368],"parameters":{"actionsUi":{"actionFields":[{"text":"={{$node[\"Parse Brief Output\"].json.brief_markdown}}","action":"insert"}]},"operation":"update","documentURL":"={{$json.id}}"},"credentials":{"googleDocsOAuth2Api":{"id":"knx3By2RN42co3AV","name":"Google Docs account"}},"typeVersion":2},{"id":"4d6eaac0-1d55-46d6-831d-d0de933de71a","name":"Brief Response","type":"n8n-nodes-base.code","position":[2880,2368],"parameters":{"jsCode":"const docUrl = `https://docs.google.com/document/d/${$('Create Brief Doc').item.json.id}/edit`;\nreturn [{ json: {\n  channel: $('Parse Brief Output').item.json.channel,\n  thread_ts: $('Parse Brief Output').item.json.thread_ts,\n  reply_text: `Industry briefing ready for *${$('Parse Brief Output').item.json.sector}*\\n\\n${$('Parse Brief Output').item.json.slack_summary}\\n\\nBriefing doc: ${docUrl}`\n} }];"},"typeVersion":2},{"id":"ba2da684-d4d9-4173-860d-b6900e47f39e","name":"Send Slack Reply","type":"n8n-nodes-base.slack","maxTries":2,"position":[3104,1776],"webhookId":"1c8ce9a9-ff0e-43e5-b347-72c0cb7b6caf","parameters":{"text":"={{$json.reply_text}}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{$json.channel}}"},"otherOptions":{"mrkdwn":true,"thread_ts":{"replyValues":{"thread_ts":"={{$json.thread_ts}}"}},"includeLinkToWorkflow":false}},"credentials":{"slackApi":{"id":"QXdjuomKz8hWaCEv","name":"Slack account 3"}},"retryOnFail":true,"typeVersion":2.3,"waitBetweenTries":3000},{"id":"2c1174db-4489-4c28-a214-01a6508e06b9","name":"Note - Intake and Routing","type":"n8n-nodes-base.stickyNote","position":[-3536,1536],"parameters":{"color":7,"width":1736,"height":552,"content":"## 1. Intake + Routing\n- Listen for Slack messages in the finance research analyst channel\n- Reject bot / empty events\n- Build a structured prompt for intent classification and provide missing info such as website id\n- Route each request into `research`, `pitch`, `brief`, or unknown"},"typeVersion":1},{"id":"b4525287-b8d7-4170-a63c-8aaaa77e3c0c","name":"Note - Research Flow","type":"n8n-nodes-base.stickyNote","position":[-2000,-144],"parameters":{"color":7,"width":3224,"height":1356,"content":"## 2.1.1 Research Flow\n- Find the best Companies House entity match\n- Pull company profile, officers, filings, web/news context, and market quote\n- Merge the source bundle and ask the model for a research pack\n"},"typeVersion":1},{"id":"60f46c24-b61f-4f0a-bc64-337eb67cf3b2","name":"Note - Pitch Flow","type":"n8n-nodes-base.stickyNote","position":[-688,1632],"parameters":{"color":7,"width":1944,"height":524,"content":"## 2.2.1 Pitch Core  Flow\n- Require prior stored research before building any pitch materials\n- Reuse research memory from Postgres\n- Ask the model for compact slide-ready bullet content, not long narrative text\n"},"typeVersion":1},{"id":"1dc30505-38b6-4f68-90d6-706c11e6eead","name":"Note - Briefing Flow","type":"n8n-nodes-base.stickyNote","position":[-688,2224],"parameters":{"color":7,"width":1916,"height":540,"content":"## 2.3.1 Briefing Flow\n- Require a sector name\n- Gather sector news plus ONS macro M&A context\n- Merge both sources into one briefing bundle\n- Ask the model for a concise one-page sector briefing\n- Create the briefing folder and Google Doc"},"typeVersion":1},{"id":"a402522a-99c9-4750-be75-7e8d41280240","name":"Note - Slack Responses","type":"n8n-nodes-base.stickyNote","position":[3184,1632],"parameters":{"color":7,"width":420,"height":280,"content":"## 3. Slack Replies\n- Every branch ends by building a clean thread reply\n- Research returns the profile doc link\n- Pitch returns the deck and press release links\n- Briefing returns the briefing doc link\n- Unknown or missing-input paths also reply here"},"typeVersion":1},{"id":"c5ee6483-5a6d-4c3e-9877-e38a428e2f5f","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1280,-128],"parameters":{"color":7,"width":2048,"height":1360,"content":"## 2.1.2. Research Storage\n- Create the research folder and Google Doc\n- Save structured memory to Postgres\n- Sheets update nodeiwith all customers"},"typeVersion":1},{"id":"955fdd44-fd4d-43a7-915b-90afc864a5c7","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[1280,1696],"parameters":{"color":7,"width":1766,"height":496,"content":"## 2.2.2 Pitch saving\n Copy the Google Slides template and replace placeholders\n- Create the press release draft in Google Docs\n- Save the deck URL back to Postgres\n- Template charts, if any, are left as template visuals only"},"typeVersion":1},{"id":"91e24305-ba30-4179-a8cf-8601f6cb3768","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-4416,1600],"parameters":{"width":656,"height":1600,"content":"## Finance Research Analyst AI Employee\n\nReal job listing for UK finance M&A analyst and how might automating their role look like. \n\n### How it works\n\n- Slack trigger listens on a specific channel for analyst intents. \n- We cover 3 specific intents - research, pitch deck and industry briefing. AI model classifies this intent and branches to right intent. \n- **Research** (ex. Input Research fintech company revolut)\n --  Fetch UK companies house profile, persons & filings. Free API. \n --  Fetch company news and website information. Firecrawler free.\n --  Fetch Alphavantage if publicly trading company\n -- Merge all data APIs into single package. \n -- AI node to  consolidate research information\n -- Store in google drive and postgreSQL tables. \n -- Respond back to slack thread.\n\n\n- **Pitch** (ex. create pitch deck for revolut)\n --  Pulls pre-existing company \n --  Uses AI to extract key information\n --  Create new deck from existing template\n --  Store in google drive and postgreSQL tables. \n -- Respond back to slack thread.\n\n- **Pitch** (ex. industry briefing for fintech uk)\n --  Pulls ONS M&A information (free site scraping)\n -- Sector news - fire crawler free\n --  Uses AI to extract key information\n --  Store in google drive \n --  Respond back to slack thread.\n\n### How to Setup\n@[youtube](GONk4r8lKIg)\n\n\nResources folder: https://drive.google.com/drive/folders/15xftVTrQLGJN0SjyEQsOM96cWVNuJgDl?usp=sharing\n\n#### Keys Required\n- Openrouter or OpenAI key\n- Firecrawler API\n- Companies house API - Free\n- Google OAuth setup for sheets, docs, drive and slides.\n- Alpha Vantage API - Free\n\n\n### Customisation\n\n- Use telegram or simple form instead of slack- setup is simpler. \n- Use supabase. Can also completely remove if storage is not required, but 'pitch' won't work. \n- Change LLM models to cheaper alternatives such as kimik2.7\n- Expand to using graphs \n- Expand to paid deals datebases"},"typeVersion":1},{"id":"9595aa09-a535-45f6-b05b-680c3aed4067","name":"Slack Trigger Request","type":"n8n-nodes-base.slackTrigger","position":[-3392,1888],"webhookId":"d735dac8-14ac-4955-9a20-abe46f3d00be","parameters":{"options":{},"trigger":["message"],"channelId":{"__rl":true,"mode":"url","value":"https://app.slack.com/client/T087RB3J8SZ/C0AQV67PTGU"}},"credentials":{"slackApi":{"id":"X0Jiywu2TqB8JZYQ","name":"Slack account WH"}},"typeVersion":1},{"id":"b8c9a8b4-cfde-4ad9-8793-04143446b6f4","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1264,2256],"parameters":{"color":7,"width":1744,"height":512,"content":"## 2.3.2 Industry briefing Store\n- Create docs file in google drive.\n- Respond back on slack thread"},"typeVersion":1},{"id":"ac364535-66a9-4380-a55c-cc4cd93b86bd","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1024,320],"parameters":{"color":3,"height":80,"content":"### Beware of AI costs\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","callerPolicy":"workflowsFromSameOwner","timeSavedMode":"fixed","availableInMCP":false,"executionOrder":"v1","executionTimeout":180,"timeSavedPerExecution":6},"versionId":"ccc8ed0f-7b4e-49bf-aa9e-560f0a58d054","connections":{"Brief AI":{"main":[[{"node":"Parse Brief Output","type":"main","index":0}]]},"Pitch AI":{"main":[[{"node":"Parse Pitch Output","type":"main","index":0}]]},"Has Ticker?":{"main":[[{"node":"Alpha Vantage Overview","type":"main","index":0}],[{"node":"No Market Data Placeholder","type":"main","index":0}]]},"Research AI":{"main":[[{"node":"Parse Research Output","type":"main","index":0}]]},"Sector News":{"main":[[{"node":"Wrap Sector News","type":"main","index":0}]]},"Company News":{"main":[[{"node":"Wrap Research News","type":"main","index":0}]]},"Parse Intent":{"main":[[{"node":"Intent Switch","type":"main","index":0}]]},"Wrap Filings":{"main":[[{"node":"Merge Research 2","type":"main","index":1}]]},"Wrap ONS M&A":{"main":[[{"node":"Merge Brief Sources","type":"main","index":1}]]},"Wrap Profile":{"main":[[{"node":"Merge Research 1","type":"main","index":0}]]},"Wrap Website":{"main":[[{"node":"Merge Research 4","type":"main","index":1}]]},"Intent Switch":{"main":[[{"node":"Has Research Inputs?","type":"main","index":0}],[{"node":"Has Pitch Company?","type":"main","index":0}],[{"node":"Has Brief Sector?","type":"main","index":0}],[{"node":"Unknown Intent Response","type":"main","index":0}]]},"Wrap Officers":{"main":[[{"node":"Merge Research 1","type":"main","index":1}]]},"Brief Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]},"ONS M&A Source":{"main":[[{"node":"Wrap ONS M&A","type":"main","index":0}]]},"Pitch Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]},"Website Search":{"main":[[{"node":"Wrap Website","type":"main","index":0}]]},"Create Brief Doc":{"main":[[{"node":"Update Brief Doc","type":"main","index":0}]]},"Merge Research 1":{"main":[[{"node":"Merge Research 2","type":"main","index":0}]]},"Merge Research 2":{"main":[[{"node":"Merge Research 3","type":"main","index":0}]]},"Merge Research 3":{"main":[[{"node":"Merge Research 4","type":"main","index":0}]]},"Merge Research 4":{"main":[[{"node":"Merge Research 5","type":"main","index":0}]]},"Merge Research 5":{"main":[[{"node":"Build Research Bundle","type":"main","index":0}]]},"Update Brief Doc":{"main":[[{"node":"Brief Response","type":"main","index":0}]]},"Wrap Sector News":{"main":[[{"node":"Merge Brief Sources","type":"main","index":0}]]},"Has Brief Sector?":{"main":[[{"node":"Sector News","type":"main","index":0},{"node":"ONS M&A Source","type":"main","index":0}],[{"node":"Brief Missing Sector Response","type":"main","index":0}]]},"Intent Classifier":{"main":[[{"node":"Parse Intent","type":"main","index":0}]]},"Research Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]},"Build Brief Bundle":{"main":[[{"node":"Build Brief Prompt","type":"main","index":0}]]},"Build Brief Prompt":{"main":[[{"node":"Brief AI","type":"main","index":0}]]},"Build Pitch Prompt":{"main":[[{"node":"Pitch AI","type":"main","index":0}]]},"Create Profile Doc":{"main":[[{"node":"Update Profile Doc","type":"main","index":0}]]},"Has Pitch Company?":{"main":[[{"node":"Load Company Record","type":"main","index":0}],[{"node":"Pitch Missing Input Response","type":"main","index":0}]]},"Parse Brief Output":{"main":[[{"node":"Create Brief Folder","type":"main","index":0}]]},"Parse Pitch Output":{"main":[[{"node":"Copy Slides Template","type":"main","index":0}]]},"Update Profile Doc":{"main":[[{"node":"Upsert Company Record","type":"main","index":0}]]},"Wrap Alpha Vantage":{"main":[[{"node":"Merge Research 5","type":"main","index":1}]]},"Wrap Research News":{"main":[[{"node":"Merge Research 3","type":"main","index":1}]]},"Create Brief Folder":{"main":[[{"node":"Create Brief Doc","type":"main","index":0}]]},"Create Pitch Folder":{"main":[[{"node":"Build Pitch Prompt","type":"main","index":0}]]},"Has Prior Research?":{"main":[[{"node":"Load Research Memory","type":"main","index":0}],[{"node":"Pitch Missing Research Response","type":"main","index":0}]]},"Load Company Record":{"main":[[{"node":"Has Prior Research?","type":"main","index":0}]]},"Merge Brief Sources":{"main":[[{"node":"Build Brief Bundle","type":"main","index":0}]]},"Update Pitch Assets":{"main":[[{"node":"Update Client DB Pitch","type":"main","index":0}]]},"Build Intent Request":{"main":[[{"node":"Intent Classifier","type":"main","index":0}]]},"Company Match Found?":{"main":[[{"node":"Companies House Profile","type":"main","index":0},{"node":"Companies House Officers","type":"main","index":0},{"node":"Companies House Filings","type":"main","index":0},{"node":"Company News","type":"main","index":0},{"node":"Website Search","type":"main","index":0},{"node":"Has Ticker?","type":"main","index":0}],[{"node":"Company Not Found Response","type":"main","index":0}]]},"Copy Slides Template":{"main":[[{"node":"Create Custom Presentation","type":"main","index":0}]]},"Has Research Inputs?":{"main":[[{"node":"Companies House Search","type":"main","index":0}],[{"node":"Research Missing Input Response","type":"main","index":0}]]},"Has Research Memory?":{"main":[[{"node":"Create Pitch Folder","type":"main","index":0}],[{"node":"Pitch Missing Research Response","type":"main","index":0}]]},"Load Research Memory":{"main":[[{"node":"Has Research Memory?","type":"main","index":0}]]},"Save Research Memory":{"main":[[{"node":"Update Client DB Research","type":"main","index":0}]]},"Valid Slack Message?":{"main":[[{"node":"Prepare Slack Context","type":"main","index":0}]]},"Build Research Bundle":{"main":[[{"node":"Build Research Prompt","type":"main","index":0}]]},"Build Research Prompt":{"main":[[{"node":"Research AI","type":"main","index":0}]]},"Parse Research Output":{"main":[[{"node":"Create Research Folder","type":"main","index":0}]]},"Prepare Slack Context":{"main":[[{"node":"Build Intent Request","type":"main","index":0}]]},"Slack Trigger Request":{"main":[[{"node":"Valid Slack Message?","type":"main","index":0}]]},"Upsert Company Record":{"main":[[{"node":"Save Research Memory","type":"main","index":0}]]},"Alpha Vantage Overview":{"main":[[{"node":"Wrap Alpha Vantage","type":"main","index":0}]]},"Companies House Search":{"main":[[{"node":"Pick Best Company Match","type":"main","index":0}]]},"Create Research Folder":{"main":[[{"node":"Create Profile Doc","type":"main","index":0}]]},"Update Client DB Pitch":{"main":[[{"node":"Pitch Response","type":"main","index":0}]]},"Companies House Filings":{"main":[[{"node":"Wrap Filings","type":"main","index":0}]]},"Companies House Profile":{"main":[[{"node":"Wrap Profile","type":"main","index":0}]]},"Pick Best Company Match":{"main":[[{"node":"Company Match Found?","type":"main","index":0}]]},"Unknown Intent Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]},"Companies House Officers":{"main":[[{"node":"Wrap Officers","type":"main","index":0}]]},"Create Press Release Doc":{"main":[[{"node":"Update Press Release Doc","type":"main","index":0}]]},"Update Press Release Doc":{"main":[[{"node":"Update Pitch Assets","type":"main","index":0}]]},"Update Client DB Research":{"main":[[{"node":"Research Response","type":"main","index":0}]]},"Company Not Found Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]},"Create Custom Presentation":{"main":[[{"node":"Create Press Release Doc","type":"main","index":0}]]},"No Market Data Placeholder":{"main":[[{"node":"Merge Research 5","type":"main","index":1}]]},"Pitch Missing Input Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]},"Brief Missing Sector Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]},"Pitch Missing Research Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]},"Research Missing Input Response":{"main":[[{"node":"Send Slack Reply","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":88,"nodeTypes":{"n8n-nodes-base.if":{"count":8},"n8n-nodes-base.code":{"count":30},"n8n-nodes-base.merge":{"count":6},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.postgres":{"count":5},"n8n-nodes-base.googleDocs":{"count":6},"n8n-nodes-base.stickyNote":{"count":10},"n8n-nodes-base.googleDrive":{"count":4},"n8n-nodes-base.httpRequest":{"count":13},"n8n-nodes-base.googleSheets":{"count":2},"n8n-nodes-base.googleSlides":{"count":1},"n8n-nodes-base.slackTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Praveena","username":"pankstr","bio":"Obsessed about automations and bringing visual dev to life with power of N8N to solve a range of business problems from simple to complex.\nGet in touch with me with workflows, consulting, tips or general chat on automations or AI. ","verified":true,"links":["pankstr.com"],"avatar":"https://gravatar.com/avatar/1e1f2c138f118f2a6b4ef2b9023523337bfbeab7e01672dbdd05245feb8fa62e?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":30,"icon":"file:postgres.svg","name":"n8n-nodes-base.postgres","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-i-chose-n8n-over-zapier-in-2020/","icon":"😍","label":"Why I chose n8n over Zapier in 2020"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/postgres/"}]},"categories":["Development","Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Postgres"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNzkgODEiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTc3LjM5MSA0Ny45MjJjLS40NjYtMS40MTItMS42ODgtMi4zOTYtMy4yNjgtMi42MzItLjc0NS0uMTExLTEuNTk4LS4wNjQtMi42MDguMTQ0LTEuNzYuMzYzLTMuMDY1LjUwMS00LjAxOC41MjggMy41OTYtNi4wNzIgNi41MjEtMTIuOTk3IDguMjA0LTE5LjUxNSAyLjcyMi0xMC41NCAxLjI2OC0xNS4zNDEtLjQzMi0xNy41MTNDNzAuNzcgMy4xODUgNjQuMjA2LjA5NyA1Ni4yODcuMDAyYy00LjIyNC0uMDUyLTcuOTMzLjc4Mi05Ljg2NyAxLjM4MmEzNyAzNyAwIDAgMC01Ljc3LS41MjhjLTMuODA5LS4wNjEtNy4xNzQuNzctMTAuMDUgMi40NzZhNDYgNDYgMCAwIDAtNy4wOTgtMS43ODJDMTYuNTYxLjQxMSAxMC45NjggMS4yOTkgNi44NzYgNC4xOSAxLjkyMiA3LjY4OS0uMzc1IDEzLjc3LjA1IDIyLjI2MmMuMTM1IDIuNjk2IDEuNjQzIDEwLjkgNC4wMTggMTguNjggMS4zNjUgNC40NzIgMi44MiA4LjE4NSA0LjMyNiAxMS4wMzggMi4xMzUgNC4wNDYgNC40MTkgNi40MjggNi45ODQgNy4yODQgMS40MzguNDc5IDQuMDQ5LjgxNCA2Ljc5Ny0xLjQ3M2E2IDYgMCAwIDAgMS40MjkgMS4yM2MuNzgzLjQ5NCAxLjc0Ljg5NyAyLjY5NiAxLjEzNiAzLjQ0Ni44NjIgNi42NzQuNjQ2IDkuNDI3LS41NjFsLjA0MSAxLjM2Mi4wNiAxLjg5OWMuMTYzIDQuMDY0LjQ0IDcuMjIzIDEuMjU5IDkuNDM0LjA0NS4xMjIuMTA1LjMwNy4xNjkuNTAzLjQwOSAxLjI1MSAxLjA5MiAzLjM0NiAyLjgzIDQuOTg3IDEuOCAxLjY5OSAzLjk3OCAyLjIyIDUuOTcyIDIuMjIgMSAwIDEuOTU1LS4xMzEgMi43OTItLjMxMSAyLjk4NC0uNjM5IDYuMzczLTEuNjE0IDguODI0LTUuMTA0IDIuMzE4LTMuMyAzLjQ0NC04LjI3IDMuNjQ4LTE2LjEwMWwuMDc0LS42MzQuMDQ4LS40MTQuNTQ2LjA0OC4xNDEuMDFjMy4wMzkuMTM4IDYuNzU1LS41MDYgOS4wMzctMS41NjYgMS44MDMtLjgzNyA3LjU4Mi0zLjg4OCA2LjIyMS04LjAwNyIvPjxwYXRoIGZpbGw9IiMzMzY3OTEiIGQ9Ik03Mi4xOTUgNDguNzIzYy05LjAzNiAxLjg2NC05LjY1Ny0xLjE5NS05LjY1Ny0xLjE5NSA5LjU0MS0xNC4xNTcgMTMuNTI5LTMyLjEyNyAxMC4wODctMzYuNTI1QzYzLjIzNS0uOTk0IDQ2Ljk4MSA0LjY4IDQ2LjcxIDQuODI3bC0uMDg3LjAxNmMtMS43ODUtLjM3MS0zLjc4My0uNTkxLTYuMDI5LS42MjgtNC4wODktLjA2Ny03LjE5IDEuMDcyLTkuNTQ0IDIuODU3IDAgMC0yOC45OTUtMTEuOTQ1LTI3LjY0NyAxNS4wMjMuMjg3IDUuNzM3IDguMjIzIDQzLjQxIDE3LjY4OSAzMi4wMzEgMy40Ni00LjE2MSA2LjgwMy03LjY3OSA2LjgwMy03LjY3OSAxLjY2IDEuMTAzIDMuNjQ4IDEuNjY2IDUuNzMyIDEuNDYzbC4xNjItLjEzN2E2LjMgNi4zIDAgMCAwIC4wNjUgMS42MmMtMi40MzkgMi43MjUtMS43MjIgMy4yMDMtNi41OTcgNC4yMDYtNC45MzMgMS4wMTctMi4wMzUgMi44MjYtLjE0MyAzLjI5OSAyLjI5NC41NzQgNy42IDEuMzg2IDExLjE4NS0zLjYzM2wtLjE0My41NzNjLjk1Ni43NjUgMS42MjYgNC45NzggMS41MTQgOC43OTdzLS4xODggNi40NDEuNTY1IDguNDg5IDEuNTAzIDYuNjU2IDcuOTEyIDUuMjgyYzUuMzU1LTEuMTQ4IDguMTMtNC4xMjEgOC41MTYtOS4wODEuMjc0LTMuNTI2Ljg5NC0zLjAwNS45MzMtNi4xNThsLjQ5Ny0xLjQ5M2MuNTczLTQuNzguMDkxLTYuMzIyIDMuMzktNS42MDVsLjgwMi4wN2MyLjQyOC4xMSA1LjYwNi0uMzkxIDcuNDcxLTEuMjU3IDQuMDE2LTEuODY0IDYuMzk4LTQuOTc2IDIuNDM4LTQuMTU4Ii8+PHBhdGggZD0iTTMyLjc0NyAyNC42NmMtLjgxNC0uMTEzLTEuNTUyLS4wMDgtMS45MjUuMjc0YS43LjcgMCAwIDAtLjI5Mi40N2MtLjA0Ny4zMzYuMTg4LjcwNy4zMzMuODk4LjQwOS41NDIgMS4wMDYuOTE1IDEuNTk4Ljk5N2EyIDIgMCAwIDAgLjI1Ni4wMThjLjk4NiAwIDEuODgzLS43NjggMS45NjItMS4zMzUuMDk5LS43MS0uOTMyLTEuMTgzLTEuOTMxLTEuMzIybTI2Ljk3NS4wMjJjLS4wNzgtLjU1Ni0xLjA2OC0uNzE1LTIuMDA3LS41ODRzLTEuODQ4LjU1NC0xLjc3MiAxLjExMmMuMDYxLjQzNC44NDQgMS4xNzQgMS43NzEgMS4xNzRxLjExNyAwIC4yMzctLjAxNmMuNjE5LS4wODYgMS4wNzMtLjQ3OSAxLjI4OC0uNzA1LjMyOS0uMzQ1LjUxOC0uNzMuNDg0LS45OG0xNS40NzcgMjMuODI4Yy0uMzQ1LTEuMDQyLTEuNDUzLTEuMzc3LTMuMjk2LS45OTctNS40NzEgMS4xMjktNy40My4zNDctOC4wNzMtLjEyNyA0LjI1Mi02LjQ3OCA3Ljc1LTE0LjMwOCA5LjYzNy0yMS42MTQuODk0LTMuNDYxIDEuMzg4LTYuNjc1IDEuNDI4LTkuMjk0LjA0NS0yLjg3Ni0uNDQ1LTQuOTg4LTEuNDU1LTYuMjc5LTQuMDcyLTUuMjAzLTEwLjA0OC03Ljk5NC0xNy4yODMtOC4wNy00Ljk3My0uMDU2LTkuMTc1IDEuMjE3LTkuOTkgMS41NzVhMjUgMjUgMCAwIDAtNS42MjItLjcyMmMtMy43MzQtLjA2LTYuOTYxLjgzNC05LjYzMyAyLjY1NWE0MyA0MyAwIDAgMC03LjgyOC0yLjA1MmMtNi4zNDItMS4wMjEtMTEuMzgxLS4yNDgtMTQuOTc4IDIuMy00LjI5MSAzLjA0LTYuMjcyIDguNDc1LTUuODg4IDE2LjE1Mi4xMjkgMi41ODMgMS42MDEgMTAuNTI5IDMuOTIzIDE4LjEzOSAzLjA1NyAxMC4wMTYgNi4zOCAxNS42ODYgOS44NzcgMTYuODUyYTQuNCA0LjQgMCAwIDAgMS40MDIuMjMyYzEuMjc2IDAgMi44MzktLjU3NSA0LjQ2Ni0yLjUzMWExNjEgMTYxIDAgMCAxIDYuMTU2LTYuOTY2IDkuOSA5LjkgMCAwIDAgNC40MjkgMS4xOTFsLjAxLjEyMWMtLjMxLjM2OC0uNTY0LjY5LS43ODEuOTY1LTEuMDcgMS4zNTgtMS4yOTMgMS42NDEtNC43MzggMi4zNTEtLjk4LjIwMi0zLjU4Mi43MzgtMy42MiAyLjU2My0uMDQxIDEuOTkzIDMuMDc2IDIuODMgMy40MzEgMi45MTkgMS4yMzguMzEgMi40My40NjMgMy41NjguNDYzIDIuNzY2IDAgNS4yLS45MDkgNy4xNDUtMi42NjgtLjA2IDcuMTA2LjIzNiAxNC4xMDcgMS4wODkgMTYuMjQxLjY5OSAxLjc0NiAyLjQwNiA2LjAxNCA3Ljc5OCA2LjAxNC43OTEgMCAxLjY2Mi0uMDkyIDIuNjItLjI5NyA1LjYyNy0xLjIwNyA4LjA3MS0zLjY5NCA5LjAxNi05LjE3Ny41MDYtMi45MyAxLjM3NC05LjkyOCAxLjc4Mi0xMy42ODIuODYyLjI2OSAxLjk3MS4zOTIgMy4xNy4zOTIgMi41MDEgMCA1LjM4Ny0uNTMxIDcuMTk3LTEuMzcyIDIuMDMzLS45NDQgNS43MDItMy4yNjEgNS4wMzctNS4yNzR6TTYxLjggMjMuMTQ3Yy0uMDE5IDEuMTA4LS4xNzEgMi4xMTQtLjMzMyAzLjE2NC0uMTc0IDEuMTI5LS4zNTQgMi4yOTctLjM5OSAzLjcxNS0uMDQ1IDEuMzc5LjEyOCAyLjgxNC4yOTQgNC4yLjMzNyAyLjgwMS42ODIgNS42ODUtLjY1NSA4LjUzMWExMSAxMSAwIDAgMS0uNTkyLTEuMjE4Yy0uMTY2LS40MDMtLjUyNy0xLjA1LTEuMDI3LTEuOTQ2LTEuOTQ0LTMuNDg3LTYuNDk3LTExLjY1Mi00LjE2Ny0xNC45ODQuNjk0LS45OTIgMi40NTYtMi4wMTEgNi44NzktMS40NjN6TTU2LjQzOSA0LjM3NGM2LjQ4Mi4xNDMgMTEuNjA5IDIuNTY4IDE1LjI0IDcuMjA3IDIuNzg0IDMuNTU4LS4yODIgMTkuNzQ5LTkuMTU4IDMzLjcxNmwtLjI2OS0uMzM5LS4xMTItLjE0YzIuMjk0LTMuNzg4IDEuODQ1LTcuNTM2IDEuNDQ2LTEwLjg1OS0uMTY0LTEuMzY0LS4zMTktMi42NTItLjI4LTMuODYxLjA0MS0xLjI4My4yMS0yLjM4Mi4zNzQtMy40NDYuMjAyLTEuMzExLjQwNy0yLjY2Ny4zNS00LjI2NWExLjggMS44IDAgMCAwIC4wMzctLjYwMWMtLjE0NC0xLjUzMy0xLjg5NC02LjEyLTUuNDYyLTEwLjI3My0xLjk1MS0yLjI3MS00Ljc5Ny00LjgxMy04LjY4Mi02LjUyN2EyOS4zIDI5LjMgMCAwIDEgNi41MTUtLjYxMnpNMjAuMTY3IDUzLjI5OGMtMS43OTMgMi4xNTUtMy4wMzEgMS43NDItMy40MzggMS42MDctMi42NTMtLjg4NS01LjczLTYuNDkxLTguNDQ0LTE1LjM4Mi0yLjM0OC03LjY5My0zLjcyLTE1LjQyOC0zLjgyOS0xNy41OTctLjM0My02Ljg2IDEuMzItMTEuNjQxIDQuOTQzLTE0LjIxIDUuODk2LTQuMTgxIDE1LjU4OS0xLjY3OSAxOS40ODQtLjQwOWwtLjE3LjE2M2MtNi4zOTEgNi40NTUtNi4yNCAxNy40ODMtNi4yMjQgMTguMTU3YTIyIDIyIDAgMCAwIC4wNTEgMS4xMzVjLjExIDEuODU1LjMxNSA1LjMwNy0uMjMyIDkuMjE3LS41MDggMy42MzMuNjEyIDcuMTg5IDMuMDcyIDkuNzU2cS4zODMuMzk4Ljc5NS43NWExNjQgMTY0IDAgMCAwLTYuMDA4IDYuODE0em02LjgzLTkuMTEzYy0xLjk4My0yLjA2OS0yLjg4NC00Ljk0Ny0yLjQ3MS03Ljg5Ni41NzctNC4xMy4zNjQtNy43MjcuMjUtOS42NTlsLS4wMzktLjY5NGMuOTM0LS44MjggNS4yNjEtMy4xNDYgOC4zNDYtMi40MzkgMS40MDguMzIzIDIuMjY2IDEuMjgxIDIuNjIzIDIuOTMxIDEuODQ2IDguNTM5LjI0NCAxMi4wOTgtMS4wNDMgMTQuOTU3LS4yNjUuNTg5LS41MTYgMS4xNDYtLjczIDEuNzIybC0uMTY2LjQ0NWMtLjQyIDEuMTI2LS44MTEgMi4xNzMtMS4wNTMgMy4xNjctMi4xMDgtLjAwNi00LjE1OS0uOTA3LTUuNzE4LTIuNTM0em0uMzI0IDExLjUxNmE1IDUgMCAwIDEtMS40OTQtLjY0MmMuMjcxLS4xMjguNzU0LS4zMDEgMS41OTEtLjQ3NCA0LjA1Mi0uODM0IDQuNjc4LTEuNDIzIDYuMDQ1LTMuMTU4LjMxMy0uMzk4LjY2OS0uODQ5IDEuMTYtMS4zOTguNzMzLS44MjEgMS4wNjgtLjY4MiAxLjY3Ni0uNDMuNDkzLjIwNC45NzIuODIxIDEuMTY3IDEuNTAxLjA5Mi4zMjEuMTk1LjkzLS4xNDMgMS40MDQtMi44NTUgMy45OTctNy4wMTUgMy45NDYtMTAuMDAzIDMuMTk4em0yMS4yMDcgMTkuNzM1Yy00Ljk1NyAxLjA2Mi02LjcxMy0xLjQ2Ny03Ljg2OS00LjM1OS0uNzQ3LTEuODY3LTEuMTEzLTEwLjI4NS0uODUzLTE5LjU4MmExLjEgMS4xIDAgMCAwLS4wNDgtLjM1NiA1IDUgMCAwIDAtLjEzOS0uNjU3Yy0uMzg3LTEuMzUzLTEuMzMxLTIuNDg0LTIuNDYyLTIuOTUzLS40NS0uMTg2LTEuMjc1LS41MjgtMi4yNjctLjI3NC4yMTItLjg3MS41NzgtMS44NTUuOTc2LTIuOTIxbC4xNjctLjQ0OGMuMTg4LS41MDUuNDIzLTEuMDI5LjY3My0xLjU4MyAxLjM0Ny0yLjk5MiAzLjE5Mi03LjA5MSAxLjE5LTE2LjM1LS43NS0zLjQ2OC0zLjI1NC01LjE2MS03LjA1LTQuNzY4LTIuMjc2LjIzNS00LjM1OCAxLjE1NC01LjM5NiAxLjY4cS0uMzM0LjE2OS0uNjE4LjMyOWMuMjktMy40OTQgMS4zODUtMTAuMDI0IDUuNDgxLTE0LjE1NiAyLjU3OS0yLjYwMSA2LjAxNC0zLjg4NiAxMC4xOTktMy44MTcgOC4yNDYuMTM1IDEzLjUzNCA0LjM2NyAxNi41MTggNy44OTMgMi41NzEgMy4wMzkgMy45NjQgNi4xIDQuNTIgNy43NTEtNC4xNzktLjQyNS03LjAyMi40LTguNDYzIDIuNDYtMy4xMzUgNC40ODEgMS43MTUgMTMuMTc4IDQuMDQ2IDE3LjM1OC40MjcuNzY2Ljc5NiAxLjQyOC45MTIgMS43MDkuNzU5IDEuODM5IDEuNzQyIDMuMDY3IDIuNDU5IDMuOTY0LjIyLjI3NS40MzMuNTQxLjU5Ni43NzQtMS4yNjYuMzY1LTMuNTM5IDEuMjA4LTMuMzMyIDUuNDIyLS4xNjcgMi4xMTUtMS4zNTYgMTIuMDE2LTEuOTU5IDE1LjUxNC0uNzk3IDQuNjIxLTIuNDk3IDYuMzQzLTcuMjc5IDcuMzY4em0yMC42OTMtMjMuNjhjLTEuMjk0LjYwMS0zLjQ2IDEuMDUyLTUuNTE4IDEuMTQ4LTIuMjczLjEwNy0zLjQzLS4yNTUtMy43MDItLjQ3Ny0uMTI4LTIuNjI2Ljg1LTIuOTAxIDEuODg0LTMuMTkxLjE2My0uMDQ2LjMyMS0uMDkuNDc0LS4xNDRhNCA0IDAgMCAwIC4zMTMuMjNjMS44MjcgMS4yMDYgNS4wODUgMS4zMzYgOS42ODUuMzg2bC4wNS0uMDFjLS42Mi41OC0xLjY4MiAxLjM1OS0zLjE4NyAyLjA1OHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Postgres","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":5,"name":"Development"}]},{"id":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":58,"icon":"file:googleDrive.svg","name":"n8n-nodes-base.googleDrive","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Google Drive"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Google Drive","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":478,"icon":"file:googleslides.svg","name":"n8n-nodes-base.googleSlides","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googleslides/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Marketing"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Slides"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii02MCAtNjAgNjMwIDYzMCI+PHBhdGggZmlsbD0iI2Y1YjkxMiIgZD0iTTQ0MC44IDE0MC4yVjQ3OWMwIDE4LjItMTQuOCAzMy0zMyAzM0gxMDIuOWMtMTguMiAwLTMzLTE0LjgtMzMtMzNWMzNjMC0xOC4yIDE0LjgtMzMgMzMtMzNoMTk3LjZ6Ii8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTMyMy42IDIzMy41SDE4OS4xYy0xMi41IDAtMjIuNiAxMC4xLTIyLjYgMjIuNnYxMzQuNWMwIDEyLjUgMTAuMSAyMi42IDIyLjYgMjIuNmgxMzQuNWMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNlYyNTZjMC0xMi40LTEwLjEtMjIuNS0yMi42LTIyLjVtLS43IDEzOS41aC0xMzN2LTkwLjVoMTMzeiIvPjxwYXRoIGQ9Im0zMTkuNiAxMzQuNCAxMjEuMSA5OC4xdi05Mi4yTDM3MiAxMDAuNXoiIG9wYWNpdHk9Ii4xOSIvPjxwYXRoIGZpbGw9IiNmYWRjODciIGQ9Ik00NDEuNCAxNDAuMkgzMzQuMmMtMTguMiAwLTMzLTE0LjgtMzMtMzNWMHoiLz48L3N2Zz4="},"displayName":"Google Slides","typeVersion":2,"nodeCategories":[{"id":27,"name":"Marketing"}]},{"id":495,"icon":"file:googleDocs.svg","name":"n8n-nodes-base.googleDocs","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledocs/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Miscellaneous"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Google Docs"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSItMTggMCA5MCA4MCI+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iLjUiIHk9Ii41Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzU0OGRmNiIgZD0ibTM2IDAgMjIgMjJ2NTNhNC45OSA0Ljk5IDAgMCAxLTUgNUg1YTQuOTkgNC45OSAwIDAgMS01LTVWNWE0Ljk5IDQuOTkgMCAwIDEgNS01eiIvPjxwYXRoIGQ9Ik0xNCA0MGgzMHYzSDE0em0wIDdoMzB2M0gxNHptMCA4aDMwdjNIMTR6bTAgN2gyMXYzSDE0eiIvPjxwYXRoIGZpbGw9IiNhYmQwZmIiIGQ9Im0zNiAwIDIyIDIySDQxYy0yLjc3IDAtNS0yLjQ4LTUtNS4yNXoiLz48cGF0aCBmaWxsPSIjM2U1YmI5IiBkPSJNNDAuNzUgMjIgNTggMjkuMTI1VjIyeiIvPjwvZz48L3N5bWJvbD48L3N2Zz4="},"displayName":"Google Docs","typeVersion":2,"nodeCategories":[{"id":11,"name":"Miscellaneous"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1264,"icon":"file:slack.svg","name":"n8n-nodes-base.slackTrigger","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Slack Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack Trigger","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":47,"name":"AI Chatbot"}],"image":[]}}