{"workflow":{"id":14227,"name":"Send AI website audits with GPT-4.1 and Gmail as a lead magnet","views":31,"recentViews":1,"totalViews":31,"createdAt":"2026-03-22T11:00:26.486Z","description":"## How it works\n\n- A prospect submits a form with their email and website URL\n- The workflow fetches and cleans the website HTML, extracting key business signals\n- An Analyst Agent reads the content and produces a structured JSON diagnostic (business type, offers, pain points, funnels, copy kit)\n- A Writer Agent converts the diagnostic into a personalised email with 10 actionable improvements, written automatically in the lead's language\n- A branded HTML email is assembled and sent via Gmail with numbered improvement cards, a booking CTA and a professional footer\n\n## Set up steps\n\n- Connect your OpenAI API credentials to both AI model nodes (~2 min)\n- Connect your Gmail account to the Send Email node (~1 min)\n- Open the **Build Email HTML** node and fill in the 6 constants at the top: your name, email, cal.com booking link, Instagram URL, LinkedIn URL and logo image URL (~3 min)\n- Activate the workflow and share the form URL with your leads","workflow":{"id":"QuqGnjiFK087fVXK","meta":{"instanceId":"eda1e6a579612740cfe75d98598ff6fc99b96109c295c11f9cc090a20e6a3dd6","templateCredsSetupCompleted":true},"name":"AI Business Analysis Lead Magnet – Auto Email Report","tags":[{"id":"NBUkGWImkiCq2Fgt","name":"Captación de Leads","createdAt":"2025-07-27T09:58:14.293Z","updatedAt":"2025-07-27T09:58:14.293Z"}],"nodes":[{"id":"df8d781a-3c33-4f9f-adb0-a245c980e4e2","name":"Form Trigger","type":"n8n-nodes-base.formTrigger","position":[-672,272],"webhookId":"caea5aac-2daf-4d6b-8a0b-1336f3499c69","parameters":{"options":{},"formTitle":"Free AI Business Audit","formFields":{"values":[{"fieldType":"email","fieldLabel":"email","placeholder":"your@email.com","requiredField":true},{"fieldLabel":"website","placeholder":"https://yourwebsite.com","requiredField":true}]}},"typeVersion":2.2},{"id":"6f5aa717-c655-4228-95cc-ba0d4815c254","name":"OpenAI – Analyst Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[48,480],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-5.2","cachedResultName":"gpt-5.2"},"options":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"Synecta SJ"}},"typeVersion":1.2},{"id":"abbcf3e0-195b-449a-95e3-5f235cb5cf90","name":"Analyst Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[320,480],"parameters":{"jsonSchemaExample":"{\n  \"diagnostic\": {\n    \"business_type\": \"string\",\n    \"offers\": [\"string\"],\n    \"audience\": \"string\",\n    \"contact_channels\": [\"email\",\"form\"],\n    \"funnels\": [\"string\"],\n    \"pain_points\": [\n      {\"name\":\"string\",\"evidence\":\"string\",\"likelihood\":0.8}\n    ],\n    \"meta\": {\n      \"url\": \"https://example.com\",\n      \"page_title\": \"string\",\n      \"lang_detected\": \"en\",\n      \"content_quality\": {\"length_chars\": 12345, \"readability\": \"medium\"},\n      \"confidence_overall\": 0.8\n    }\n  },\n  \"copy_kit\": {\n    \"compliments\": [\"string\"],\n    \"hook_angles\": [\"string\"],\n    \"tone_mirror\": { \"traits\": [\"string\"], \"brand_words\": [\"string\"] },\n    \"objections\": [{\"objection\":\"string\",\"rebuttal\":\"string\"}],\n    \"cta_inventory\": {\n      \"existing\": [{\"label\":\"string\",\"url\":\"https://...\"}],\n      \"recommended\": [{\"label\":\"string\",\"why\":\"string\"}]\n    },\n    \"audience_jtbd\": [\n      {\"segment\":\"string\",\"job_to_be_done\":\"string\",\"fear\":\"string\",\"hope\":\"string\"}\n    ],\n    \"improvement_candidates\": [\n      {\"title\":\"string\",\"narrative\":\"string\",\"evidence_snippet\":\"string\",\"priority_score\":0.9}\n    ]\n  }\n}\n"},"typeVersion":1.3},{"id":"68c41d3b-921f-4df5-a1de-682d8da7e919","name":"Writer Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[832,480],"parameters":{"jsonSchemaExample":"{\n  \"subject\": \"Your website analysis: 10 improvements to scale your business\",\n  \"preheader\": \"Genuine praise + 10 concrete improvements + call booking button\",\n  \"message_html\": \"<div style=\\\"font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.55;color:#111;\\\"><p>Hi John,</p><p><strong>Congratulations:</strong> your website conveys calm and professionalism; the value proposition is clear and approachable. Real experience guiding personal and team processes clearly shows.</p><p>With that foundation, your business has strong potential to scale by applying a few functional adjustments that reduce friction and give you time back.</p><p>I have analysed your website and propose <strong>10 improvements</strong> with direct impact:</p><ol><li>Change the main CTA from 'Contact' to 'Book a session' with an integrated calendar. Convert intent into an appointment without intermediate forms.</li></ol></div>\"\n}\n"},"typeVersion":1.3},{"id":"30df5820-1436-432f-a53f-b32c1f1b5e06","name":"Analyst Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[112,272],"parameters":{"text":"=Analyse this information and return the diagnostic JSON following the given schema:\n\n{\n  \"url\": \"{{ $json.url }}\",\n  \"page_title\": \"{{ $json.pageTitle }}\",\n  \"text\": \"{{ $json.text }}\",\n  \"signals\": {{ JSON.stringify($json.signals) }}\n}\n","options":{"systemMessage":"You are \"AutoOps-DX\", a senior automation analyst for SMBs, coaches, info-product creators and online businesses. Your mission is to READ the content of a website (plain text derived from HTML) and return an actionable DIAGNOSTIC in STRICT JSON that identifies: business type, offers, contact channels, funnels and automatable PAIN POINTS.\n\n=== OPERATING PRINCIPLES ===\n1) Zero fluff, maximum practical precision. No empty marketing language.\n2) Evidence-based: anchor every conclusion to signals in the text. If inferring, mark low probability.\n3) Output EXCLUSIVELY valid JSON (no comments, no markdown, no additional text).\n4) Clear and concise language. Short names, business-oriented.\n5) Do not invent internal technology or unobservable metrics. Do not use sensitive data.\n6) If text is poor/noisy, lower confidence and explain the limitation in `meta.flags`.\n\n=== NORMALISATION AND HEURISTICS ===\n- Detect \"business_type\" by patterns:\n  * \"menu\", \"table booking\", \"reservation\" → restaurant.\n  * \"patients\", \"appointments\", \"clinic\", \"treatments\" → clinic/practice.\n  * \"cart\", \"checkout\", \"SKU\", \"shop\" → e-commerce.\n  * \"services\", \"portfolio\", \"agency\", \"consultancy\" → professional services/agency.\n  * \"plans\", \"pricing\", \"sign in\", \"demo\" → SaaS/B2B.\n  * \"classes\", \"course\", \"training\", \"academy\" → education/info-product.\n- `contact_channels` (list, lowercase, no duplicates), choose from:\n  [\"whatsapp\",\"phone\",\"email\",\"form\",\"booking\",\"shop\",\"chat\",\"social\",\"other\"].\n  Detection signals:\n    - whatsapp: \"wa.me\", \"api.whatsapp.com\", WhatsApp icon/CTA.\n    - phone: \"tel:\", numbers with country code, \"call us\".\n    - email: \"mailto:\", \"info@…\", form with explicit email field.\n    - form: \"contact\", \"request information\", \"send enquiry\".\n    - booking: \"book\", \"appointment\", \"book now\", \"schedule\".\n    - shop: \"cart\", \"add to cart\", \"shop\", \"checkout\".\n    - chat: \"chat\", \"live chat\", \"intercom\", \"tawk\", \"zendesk chat\".\n    - social: links/icons to IG/FB/LinkedIn/TikTok as primary channel.\n- `funnels`: summarise in 1–2 simple strings (e.g. \"Discover → Visit site → Lead/Book → Purchase/Service\").\n- `pain_points`: 5–10 elements oriented to automation or business strategy improvement (operational, acquisition or management).\n  * Typical examples: no-shows, manual lead qualification, slow WhatsApp/IG response, appointment reminders, unconfirmed orders, repetitive FAQs, manual invoice management, post-sale follow-up, cart abandonment, lack of scoring, manual reporting.\n  * `likelihood`: 0.2 (low), 0.5 (medium), 0.8 (high), 1.0 (very high).\n  * `evidence`: short quote or \"weak signal: …\" if no literal match.\n\n=== CONFIDENCE CALIBRATION ===\n- `meta.confidence_overall` (0–1) based on:\n  * +0.25 if text clearly identifies business type and offers.\n  * +0.25 if ≥2 contact channels detected.\n  * +0.25 if ≥3 pain points identified with evidence.\n  * +0.25 if funnel signals present (pricing/booking/checkout/demo).\n  Adjust down for: thin content, cookie wall, confusing multilingual, heavy JS with no content.\n  Clamp 0–1.\n\n=== OUTPUT RESTRICTIONS ===\n- STRICT JSON with ALL schema keys (no null values; use \"\" or [] where applicable).\n- Include no text outside the JSON.\n- Reasonable length: `offers` max 10; `pain_points` 7–10; `funnels` 1–2.\n\n=== MANDATORY SCHEMA ===\n{\n  \"diagnostic\": {\n    \"business_type\": \"string\",\n    \"offers\": [\"string\"],\n    \"audience\": \"string\",\n    \"contact_channels\": [\"whatsapp\",\"phone\",\"email\",\"form\",\"booking\",\"shop\",\"chat\",\"social\",\"other\"],\n    \"funnels\": [\"string\"],\n    \"pain_points\": [\n      {\"name\":\"string\",\"evidence\":\"string\",\"likelihood\":0.0}\n    ],\n    \"meta\": {\n      \"url\":\"string\",\n      \"page_title\":\"string\",\n      \"lang_detected\":\"string\",\n      \"content_quality\": {\"length_chars\":0,\"readability\":\"low|medium|high\"},\n      \"confidence_overall\":0.0\n    }\n  },\n  \"copy_kit\": {\n    \"compliments\": [\"string\"],\n    \"hook_angles\": [\"string\"],\n    \"tone_mirror\": {\n      \"traits\": [\"string\"],\n      \"brand_words\": [\"string\"]\n    },\n    \"objections\": [\n      {\"objection\":\"string\",\"rebuttal\":\"string\"}\n    ],\n    \"cta_inventory\": {\n      \"existing\": [{\"label\":\"string\",\"url\":\"string\"}],\n      \"recommended\": [{\"label\":\"string\",\"why\":\"string\"}]\n    },\n    \"audience_jtbd\": [\n      {\"segment\":\"string\",\"job_to_be_done\":\"string\",\"fear\":\"string\",\"hope\":\"string\"}\n    ],\n    \"improvement_candidates\": [\n      {\n        \"title\":\"string\",\n        \"narrative\": \"2–3 prose sentences; what to change and how to implement it\",\n        \"evidence_snippet\":\"string\",\n        \"priority_score\": 0.0\n      }\n    ]\n  }\n}\n\n=== INTERNAL POST-PROCESSING (DO THIS YOURSELF) ===\n- `lang_detected`: infer from predominant text language (\"es\", \"en\", \"pt\", etc.).\n- `content_quality.length_chars`: length of analysed text (approx).\n- `content_quality.readability`: estimate by complexity and noise (low/medium/high).\n"},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"ea22a01b-6ad2-4c2e-b59a-a16d88277397","name":"Writer Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[656,272],"parameters":{"text":"=Write the email for this diagnostic:\n{{ JSON.stringify($json.output) }}\n\nOptional parameters:\n{\n  \"channel\": \"email\",\n  \"length\": \"standard\",\n  \"style\": \"direct\",\n  \"language\": \"{{ $json.output.diagnostic.meta.lang_detected || 'en' }}\"\n}","options":{"systemMessage":"You are \"AutoOps-Writer\", a senior copywriter focused on selling AI automation services to SMBs.\nYour mission: convert the DIAGNOSTIC_JSON + COPY_KIT from the analyst agent into a commercial message that:\n1) Opens with a genuine compliment (from compliments) and explains the business has strong potential to scale with a few improvements.\n2) Describes EXACTLY 10 numbered improvements, written in natural prose (2–4 sentences each), linking each pain point to its concrete solution.\n3) Closes by inviting the reader to book a call to review their case and discuss a proposal.\n\n=== INPUTS ===\nYou will receive:\n- DIAGNOSTIC_JSON: { business_type, offers, audience, contact_channels, funnels, pain_points[{name,evidence,likelihood}], meta{url,page_title,lang_detected,content_quality,confidence_overall} }\n- COPY_KIT: {\n    compliments[], hook_angles[], tone_mirror{traits[],brand_words[]},\n    objections[{objection,rebuttal}], cta_inventory{existing[],recommended[]},\n    audience_jtbd[], improvement_candidates[{title,narrative,evidence_snippet,priority_score}]\n  }\n- Optional PARAMS:\n  { language, style }\n  Defaults: language = DIAGNOSTIC_JSON.meta.lang_detected || \"en\"; style = \"direct\".\n\n⚠️ CRITICAL: Write the entire email in the language indicated by `lang_detected`. If lang_detected is \"es\", write in Spanish. If \"en\", write in English. Always match the lead's language.\n\n=== MESSAGE STRUCTURE (MANDATORY) ===\n- Intro (compliment): use 1–2 phrases from COPY_KIT.compliments (not generic; adapt the tone) and acknowledge the scaling potential.\n- \"I analysed your business…\" and introduce 10 numbered improvements (1–10). For each improvement:\n  • Write in prose (no telegraphic headlines).\n  • Explain WHAT can be changed, HOW it can be done, and why it improves conversion/operations.\n  • Anchor where appropriate with a micro-evidence (COPY_KIT.improvement_candidates[].evidence_snippet or pain_points[].evidence) in quotes.\n  • Selection: take the 10 with the highest priority_score from improvement_candidates. If any are missing, complete with highest-likelihood pain_points.\n- Close: Tell them you see clear growth potential and invite them to \"book a call\" to review their case and prepare a proposal.\n\n=== STYLE AND TONE ===\n- Professional, direct and encouraging. Zero fluff, zero unnecessary jargon.\n- Benefits > processes. Maintain the brand voice by reflecting tone_mirror.traits and using some brand_words where they fit naturally.\n- If confidence_overall < 0.6, soften assertions (\"likely\", \"appears to\") without losing clarity.\n- Do not invent figures. If estimating, mark as \"estimate\".\n- Keep the message concise. State the improvement, the pain point it solves, and move on. Maximum 30 words per paragraph.\n\n=== OUTPUT (STRICT JSON) ===\nReturn ONLY this object:\n{\n  \"subject\": \"string\",\n  \"preheader\": \"string\",\n  \"message_html\": \"string\"    // HTML version with <ol> for the 10 improvements\n}\n\n=== HTML FORMAT (recommended) ===\n- Container <div> with safe font-stack and line-height 1.55.\n- Intro and potential paragraph in <p>.\n- Improvements block in <ol><li>…</li></ol> where each <li> contains a <p> in bold with the title and a <p> block with the improvement text.\n\n=== PROCEDURE ===\n1) Choose 1–2 compliments from COPY_KIT and write the intro explaining the potential.\n2) Select the 10 improvements from improvement_candidates by priority_score and convert to numbered prose; if any are missing, use highest-likelihood pain_points.\n3) Close with a clear invitation to book a call.\n\n=== PROHIBITIONS ===\n- No P.S.\n- No markdown in message fields.\n- No text outside the JSON.\n- No inline CSS annotations. Do not wrap everything in a single DIV; start directly with the first element and no element should have any style. Everything must be plain.\n- No buttons.\n- Do not mention the meeting duration or any plan to apply. Simply offer the possibility of booking a call.\n- Do not close with any signature.\n"},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"b050b9f3-db41-43a8-8178-350a68af86ae","name":"OpenAI – Writer Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[576,464],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini","cachedResultName":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"Synecta SJ"}},"typeVersion":1.2},{"id":"667a3e94-1274-4de1-88c8-c4ad41910db9","name":"Send Email","type":"n8n-nodes-base.gmail","position":[1664,272],"webhookId":"dbd4cd69-7480-45ad-a837-f211595576b0","parameters":{"sendTo":"={{ $('Form Trigger').item.json.email }}","message":"={{ $json.email_html }}","options":{"senderName":"Stefan Joulien – Synecta","appendAttribution":false},"subject":"=🕵🏻‍♂️ {{ $('Writer Agent').item.json.output.subject }}"},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"stefan@synecta.ai"}},"typeVersion":2.1},{"id":"31b4b7f1-fcf3-4ca1-867a-4ed6cb81465a","name":"Build Email HTML","type":"n8n-nodes-base.code","position":[1216,272],"parameters":{"jsCode":"// ============================================================\n// BUILD EMAIL HTML — Synecta-branded template\n// ============================================================\n// ⚙️  CONFIGURE THESE VALUES BEFORE USING:\nconst YOUR_NAME        = 'Stefan Joulien – Synecta';          // ⚙️ Change to your name\nconst YOUR_EMAIL       = 'user@example.com';                 // ⚙️ Change to your email\nconst CAL_URL          = 'https://cal.eu/stefan-joulien-synecta/discovery'; // ⚙️ Change to your booking link\nconst INSTAGRAM_URL    = 'https://www.instagram.com/stefanjd.fit/';         // ⚙️ Change to your Instagram\nconst LINKEDIN_URL     = 'https://www.linkedin.com/in/stefan-joulien-ditchev/'; // ⚙️ Change to your LinkedIn\nconst LOGO_URL         = 'https://res.cloudinary.com/dmdmat24m/image/upload/v1773779124/Synecta_Logo_Horizontal_Alargado_v1sw74.png'; // ⚙️ Change to your logo URL\n// ============================================================\n\nconst RAW = ($input.first().json.output && $input.first().json.output.message_html) || '';\n\n// --- Synecta Brand Tokens ---\nconst C_PRIMARY   = '#6C63FF';   // Synecta violet\nconst C_DARK_BLUE = '#1C5D99';   // Synecta dark blue\nconst C_LIGHT     = '#AEB8FE';   // Synecta light violet\nconst C_BG        = '#F5F7FA';   // Off-white background\nconst C_DARK_BG   = '#1A1A1A';   // Footer dark\nconst FONT        = \"'Segoe UI', Tahoma, Geneva, Verdana, sans-serif\";\n\n// CTA button: gradient from violet to dark blue\nconst CTA_INLINE =\n  `display:inline-block;` +\n  `background:linear-gradient(90deg, ${C_PRIMARY} 0%, ${C_DARK_BLUE} 100%);` +\n  `color:#fff;text-decoration:none;padding:16px 40px;border-radius:14px;` +\n  `font-weight:700;font-size:15px;box-shadow:0 10px 30px rgba(108,99,255,0.35);` +\n  `text-align:center;min-width:220px;letter-spacing:.5px;text-transform:uppercase;`;\n\n// Avoid reprocessing\nif (/<!--SYNECTA-CARDS-->/i.test(RAW)) {\n  return [{ email_html: RAW }];\n}\n\n// 1) Strip any inline styles on <a> tags, reapply brand colour\nlet src = RAW.replace(/<a\\b([^>]*?)style=\"[^\"]*?\"([^>]*)>/gi, '<a $1$2>');\nsrc = src.replace(/<a\\b([^>]*)>/gi,\n  `<a $1 style=\"color:${C_PRIMARY};text-decoration:underline;text-underline-offset:2px;\">`\n);\n\n// 2) Convert <ol><li> into numbered card layout\nlet idx = 1;\nfunction liToCard(n, innerHtml) {\n  const m = innerHtml.match(/<p[^>]*>\\s*<strong>([\\s\\S]*?)<\\/strong>\\s*<\\/p>/i);\n  const title = (m ? m[1] : `Improvement ${n}`).trim();\n  const body  = (m ? innerHtml.replace(m[0], '') : innerHtml).trim();\n  return `\n  <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse:separate;margin:0 0 12px 0;\">\n    <tr>\n      <td style=\"background:#EEF0FF;border:1px solid ${C_LIGHT};border-radius:14px;padding:16px;\">\n        <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n          <tr>\n            <td valign=\"top\" width=\"44\" style=\"width:44px;\">\n              <div style=\"width:34px;height:34px;border-radius:10px;\n                          background:linear-gradient(135deg,${C_PRIMARY},${C_DARK_BLUE});\n                          color:#fff;font-weight:800;font-size:14px;line-height:34px;\n                          text-align:center;font-family:${FONT};\n                          box-shadow:0 4px 12px rgba(108,99,255,0.4);\">\n                ${n}\n              </div>\n            </td>\n            <td style=\"padding-left:10px;\">\n              <div style=\"font-weight:800;font-size:15px;color:#1A1A1A;margin:0 0 5px 0;font-family:${FONT};\">${title}</div>\n              <div style=\"font-size:14px;color:#374151;line-height:1.65;font-family:${FONT};\">${body}</div>\n            </td>\n          </tr>\n        </table>\n      </td>\n    </tr>\n  </table>`;\n}\n\nsrc = src.replace(/<ol[\\s\\S]*?<\\/ol>/gi, (ol) => {\n  const items = [...ol.matchAll(/<li[^>]*>([\\s\\S]*?)<\\/li>/gi)].map(m => m[1]);\n  if (!items.length) return ol;\n  return items.map(li => liToCard(idx++, li)).join('');\n});\n\n// 3) Assemble full email-safe HTML\nconst html = `<!DOCTYPE html>\n<html lang=\"en\"><head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width\">\n<title>Business Analysis Report</title>\n</head>\n<body style=\"margin:0;background:${C_BG};color:#2c3e50;font-family:${FONT};line-height:1.6;\">\n<!--SYNECTA-CARDS-->\n<table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n  <tr>\n    <td align=\"center\" style=\"padding:24px 12px;\">\n\n      <!-- MAIN CARD -->\n      <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"max-width:600px;background:#ffffff;border-radius:18px;border:1px solid #DDE1FF;box-shadow:0 10px 40px rgba(108,99,255,0.10);\">\n\n        <!-- HEADER STRIP -->\n        <tr>\n          <td style=\"background:linear-gradient(90deg,${C_PRIMARY} 0%,${C_DARK_BLUE} 100%);border-radius:18px 18px 0 0;padding:20px 28px;\">\n            <img src=\"${LOGO_URL}\" alt=\"Logo\" height=\"36\" style=\"display:block;border:0;outline:none;text-decoration:none;\">\n          </td>\n        </tr>\n\n        <!-- BODY -->\n        <tr>\n          <td style=\"padding:28px;\">\n            <div style=\"font-size:15px;line-height:1.75;color:#374151;font-family:${FONT};\">\n              ${src}\n            </div>\n          </td>\n        </tr>\n\n        <!-- CTA BUTTON -->\n        <tr>\n          <td align=\"center\" style=\"padding:4px 28px 32px 28px;\">\n            <a href=\"${CAL_URL}\" target=\"_blank\" style=\"${CTA_INLINE}\">Book a Free Call</a>\n          </td>\n        </tr>\n\n      </table>\n\n      <!-- FOOTER -->\n      <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"max-width:600px;margin-top:16px;background:${C_DARK_BG};border-radius:16px;\">\n        <tr>\n          <td align=\"center\" style=\"padding:32px 24px;\">\n\n            <!-- Logo in footer -->\n            <img src=\"${LOGO_URL}\" alt=\"Synecta\" height=\"30\" style=\"display:block;margin:0 auto 16px auto;border:0;outline:none;text-decoration:none;\">\n\n            <!-- Social icons -->\n            <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\" style=\"margin-bottom:20px;\">\n              <tr>\n                <!-- Email -->\n                <td align=\"center\" style=\"padding:0 8px;\">\n                  <a href=\"mailto:${YOUR_EMAIL}\"\n                     style=\"display:inline-block;width:42px;height:42px;line-height:42px;text-align:center;\n                            border-radius:50%;background:rgba(108,99,255,0.15);text-decoration:none;\">\n                    <img src=\"https://img.icons8.com/fluency/48/gmail-new.png\" width=\"22\" height=\"22\" alt=\"Email\"\n                         style=\"display:inline-block;vertical-align:middle;border:0;\">\n                  </a>\n                </td>\n                <!-- Instagram -->\n                <td align=\"center\" style=\"padding:0 8px;\">\n                  <a href=\"${INSTAGRAM_URL}\" target=\"_blank\"\n                     style=\"display:inline-block;width:42px;height:42px;line-height:42px;text-align:center;\n                            border-radius:50%;background:rgba(108,99,255,0.15);text-decoration:none;\">\n                    <img src=\"https://img.icons8.com/fluency/48/instagram-new.png\" width=\"22\" height=\"22\" alt=\"Instagram\"\n                         style=\"display:inline-block;vertical-align:middle;border:0;\">\n                  </a>\n                </td>\n                <!-- LinkedIn -->\n                <td align=\"center\" style=\"padding:0 8px;\">\n                  <a href=\"${LINKEDIN_URL}\" target=\"_blank\"\n                     style=\"display:inline-block;width:42px;height:42px;line-height:42px;text-align:center;\n                            border-radius:50%;background:rgba(108,99,255,0.15);text-decoration:none;\">\n                    <img src=\"https://img.icons8.com/fluency/48/linkedin.png\" width=\"22\" height=\"22\" alt=\"LinkedIn\"\n                         style=\"display:inline-block;vertical-align:middle;border:0;\">\n                  </a>\n                </td>\n              </tr>\n            </table>\n\n            <div style=\"font-family:${FONT};font-size:13px;color:#718096;line-height:1.6;text-align:center;\">\n              This analysis was prepared specifically for your business.<br>\n              Questions? Reply directly to this email.\n            </div>\n          </td>\n        </tr>\n      </table>\n\n    </td>\n  </tr>\n</table>\n</body></html>`;\n\nreturn [{ email_html: html }];\n"},"typeVersion":2},{"id":"94878d17-f8a3-4e03-8023-373ec6fb9d1b","name":"Clean HTML","type":"n8n-nodes-base.code","position":[-208,272],"parameters":{"jsCode":"const html = $input.first().json.data || '';\nconst cleaned = html\n  .replace(/<script[\\s\\S]*?<\\/script>/gi,' ')\n  .replace(/<style[\\s\\S]*?<\\/style>/gi,' ')\n  .replace(/<!--[\\s\\S]*?-->/g,' ')\n  .replace(/<[^>]+>/g,' ')\n  .replace(/\\s+/g,' ')\n  .trim();\n\nconst text = cleaned.slice(0, 28000); // hard limit ~6-8k tokens\nconst signals = {\n  url: $json.url || '',\n  page_title: $json.pageTitle || '',\n  has_wa: /wa\\.me|api\\.whatsapp\\.com/i.test(html),\n  has_tel: /tel:/i.test(html),\n  has_mailto: /mailto:/i.test(html),\n  has_checkout: /checkout|cart|add to cart|woocommerce/i.test(html),\n  has_booking: /calendly|book now|appointment|booking|schedule/i.test(html),\n  social: [...new Set((html.match(/instagram\\.com|linkedin\\.com|facebook\\.com|youtube\\.com/gi) || []).map(s => s.toLowerCase()))]\n};\n\nreturn [{ url: signals.url, pageTitle: signals.page_title, text, signals }];\n"},"typeVersion":2},{"id":"95e76890-12ed-4d20-9b3b-a9c2f11819f3","name":"Fetch Website HTML","type":"n8n-nodes-base.httpRequest","position":[-384,272],"parameters":{"url":"={{ $('Form Trigger').item.json.website }}","options":{}},"typeVersion":4.2},{"id":"5d21af29-a432-4a18-a09b-441e8f6772cf","name":"Sticky – Overview","type":"n8n-nodes-base.stickyNote","position":[-752,-256],"parameters":{"color":7,"width":520,"height":200,"content":"## 🤖 AI Business Analysis – Lead Magnet\n**What this workflow does:**\nA prospect fills in a form with their email and website URL. The workflow fetches their website, analyses it with AI, writes a personalised 10-improvement email in their language, and sends it automatically via Gmail.\n\n**Estimated run time:** ~30–60 seconds per lead."},"typeVersion":1},{"id":"51802a2b-9bd9-4c7d-afbf-41e942d2fa61","name":"Sticky – Form","type":"n8n-nodes-base.stickyNote","position":[-752,-16],"parameters":{"color":5,"width":280,"height":450,"content":"## 📝 Step 1 – Form Trigger\nA simple n8n form with two fields:\n- **Email** → where the report is sent\n- **Website URL** → the site to be analysed\n\n💡 You can embed this form on your landing page or share the direct URL."},"typeVersion":1},{"id":"49c426d0-0315-4e4f-a47c-62d86cf788c1","name":"Sticky – Fetch & Clean","type":"n8n-nodes-base.stickyNote","position":[-432,-16],"parameters":{"color":5,"width":364,"height":454,"content":"## 🌐 Step 2 – Fetch & Clean Website\n**Fetch Website HTML:** Makes an HTTP GET request to the submitted URL and retrieves the raw HTML.\n\n**Clean HTML:** Strips all tags, scripts and styles, leaving only readable plain text (max 28,000 chars ≈ 7k tokens) + key signals (WhatsApp, booking links, checkout, social)."},"typeVersion":1},{"id":"bc3f43f0-4633-48df-91a3-f55c95965426","name":"Sticky – Analyst Agent","type":"n8n-nodes-base.stickyNote","position":[-32,-16],"parameters":{"color":4,"width":508,"height":644,"content":"## 🔍 Step 3 – Analyst Agent\nReads the plain-text website content and returns a **structured JSON diagnostic** with:\n- Business type, offers & target audience\n- Contact channels & conversion funnels\n- 7–10 automatable pain points with evidence & likelihood scores\n- Copy kit: compliments, hook angles, tone, objections & improvement candidates\n\n⚙️ Uses **gpt-4o-mini** by default. Swap for gpt-4o for higher accuracy."},"typeVersion":1},{"id":"a33a6e21-c0f3-45e3-af34-1a2c86550fa1","name":"Sticky – Writer Agent","type":"n8n-nodes-base.stickyNote","position":[512,-16],"parameters":{"color":4,"width":460,"height":644,"content":"## ✍️ Step 4 – Writer Agent\nTakes the analyst's JSON and writes a **personalised email** with:\n- A genuine opening compliment based on the site analysis\n- 10 numbered improvements in prose (benefit-focused, concise)\n- A closing CTA to book a discovery call\n\n⚠️ The email is automatically written in the **same language as the lead's website** (e.g. Spanish site → Spanish email)."},"typeVersion":1},{"id":"4b85d9f6-10b2-4865-a3cf-155e802202b1","name":"Sticky – Build HTML","type":"n8n-nodes-base.stickyNote","position":[1008,-16],"parameters":{"color":6,"width":524,"height":632,"content":"## 🎨 Step 5 – Build Email HTML\nConverts the writer's plain message into a **branded HTML email** with:\n- Gradient header with your logo\n- Numbered improvement cards with brand colours\n- CTA button linking to your booking calendar\n- Dark footer with email, Instagram & LinkedIn icons\n\n⚙️ **Configure your details at the top of this node:**\n```\nYOUR_NAME, YOUR_EMAIL, CAL_URL,\nINSTAGRAM_URL, LINKEDIN_URL, LOGO_URL\n```"},"typeVersion":1},{"id":"bb607496-5c83-4a67-909a-d878c5a8222e","name":"Sticky – Send Email","type":"n8n-nodes-base.stickyNote","position":[1568,-16],"parameters":{"color":6,"width":280,"height":630,"content":"## 📧 Step 6 – Send Email\nSends the branded HTML report via **Gmail** to the address submitted in the form.\n\n🔑 **Setup required:**\n1. Connect your Gmail account under Credentials\n2. Update `senderName` to your name in the node settings\n3. The email subject is dynamically generated by the Writer Agent"},"typeVersion":1}],"active":true,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"6af6a675-fd10-4d85-a42f-319a5f0c119c","connections":{"Clean HTML":{"main":[[{"node":"Analyst Agent","type":"main","index":0}]]},"Form Trigger":{"main":[[{"node":"Fetch Website HTML","type":"main","index":0}]]},"Writer Agent":{"main":[[{"node":"Build Email HTML","type":"main","index":0}]]},"Analyst Agent":{"main":[[{"node":"Writer Agent","type":"main","index":0}]]},"Build Email HTML":{"main":[[{"node":"Send Email","type":"main","index":0}]]},"Fetch Website HTML":{"main":[[{"node":"Clean HTML","type":"main","index":0}]]},"Writer Output Parser":{"ai_outputParser":[[{"node":"Writer Agent","type":"ai_outputParser","index":0}]]},"Analyst Output Parser":{"ai_outputParser":[[{"node":"Analyst Agent","type":"ai_outputParser","index":0}]]},"OpenAI – Writer Model":{"ai_languageModel":[[{"node":"Writer Agent","type":"ai_languageModel","index":0}]]},"OpenAI – Analyst Model":{"ai_languageModel":[[{"node":"Analyst Agent","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":18,"nodeTypes":{"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.formTrigger":{"count":1},"n8n-nodes-base.httpRequest":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":2},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":2},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Stefan Joulien","username":"stefanjoulien","bio":"Hi, I'm Stefan 👋\nAI Automation Consultant & Founder of Synecta. I design production-ready n8n workflows for lead generation, CRM automation, AI agents, and internal operations. These templates are the exact systems we deploy for SMEs and professional services.","verified":true,"links":["https://www.linkedin.com/in/stefan-joulien-ditchev/"],"avatar":"https://gravatar.com/avatar/53bc3abda86e064874ccd9039858371eed129b3109ecd91fd31940d0ba239ed8?r=pg&d=retro&size=200"},"nodes":[{"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":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"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-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"},{"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/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"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":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1225,"icon":"file:form.svg","name":"n8n-nodes-base.formTrigger","codex":{"data":{"alias":["table","submit","post"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Other Trigger Nodes"]}}},"group":"[\"trigger\"]","defaults":{"name":"On form submission"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form Trigger","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":37,"name":"Lead Generation"},{"id":49,"name":"AI Summarization"}],"image":[]}}