{
  "name": "GZ — LinkedIn Signal Machine",
  "nodes": [
    {
      "id": "f20b8c8f-e00c-4033-a898-2b2371047449",
      "name": "How it works",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -520,
        -420
      ],
      "parameters": {
        "width": 520,
        "height": 560,
        "content": "## LinkedIn Signal Machine (Generative Z template)\nEvery weekday at 7:00, turns the people who engaged with your LinkedIn posts into qualified, personalised outreach.\n\n1. **Phantombuster** exports commenters and likers of the posts you track (the phantom runs on its own schedule in Phantombuster, before 7:00).\n2. People already in the **LinkedIn Signals** tab are skipped.\n3. **Apollo** finds work email, title and company size.\n4. **ICP check** keeps decision makers in companies of the right size.\n5. **Claude** writes a first line from their own comment, or SKIPs spam.\n6. Everyone is logged in the CRM sheet (tab LinkedIn Signals); qualified leads go to **lemlist**.\n7. A summary email lands in your inbox.\n\n**Before activating:** fill Settings (sheet URL, phantomAgentId, lemlistCampaignId, offer, emails), then connect 6 credentials: Phantombuster (header X-Phantombuster-Key), Apollo (header x-api-key), Anthropic (header x-api-key), Google Sheets, lemlist (basic auth, empty user, API key as password) and SMTP. Full guide: the PDF playbook. Test with a manual run first."
      }
    },
    {
      "id": "b522e32e-7436-4693-9988-3c0c19ecbe65",
      "name": "Every weekday 7:00",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 7 * * 1-5"
            }
          ]
        }
      }
    },
    {
      "id": "838bd094-62a3-43b0-bca4-be6da5ee2f77",
      "name": "Settings",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        220,
        0
      ],
      "parameters": {
        "mode": "manual",
        "assignments": {
          "assignments": [
            {
              "id": "1164268a-d4ce-401d-876f-74afedbf6284",
              "name": "cfg.sheetUrl",
              "value": "PASTE_YOUR_GOOGLE_SHEET_URL",
              "type": "string"
            },
            {
              "id": "ba667883-b195-45fe-8957-103892eac8f4",
              "name": "cfg.signalsTab",
              "value": "LinkedIn Signals",
              "type": "string"
            },
            {
              "id": "cb5b439b-2cf5-4dad-9416-1ed71f418468",
              "name": "cfg.phantomAgentId",
              "value": "PASTE_PHANTOM_AGENT_ID",
              "type": "string"
            },
            {
              "id": "d26f1d3f-1960-4064-9673-031500683979",
              "name": "cfg.lemlistCampaignId",
              "value": "PASTE_LEMLIST_CAMPAIGN_ID",
              "type": "string"
            },
            {
              "id": "6dae14a6-2bd5-49f1-acc4-e8fc2a5285ba",
              "name": "cfg.icpTitleRegex",
              "value": "founder|co-founder|ceo|owner|managing director|director|head of|vp|chief|coo|cro|cmo|sales|operations|ops|growth|partner",
              "type": "string"
            },
            {
              "id": "b829348f-1698-447a-be77-9bc47070a219",
              "name": "cfg.minEmployees",
              "value": 5,
              "type": "number"
            },
            {
              "id": "7a8dc187-4e9d-4c71-9af5-e98f627fc1a6",
              "name": "cfg.maxEmployees",
              "value": 500,
              "type": "number"
            },
            {
              "id": "81534639-360e-4e18-bef0-fa78fd691bcc",
              "name": "cfg.maxPerRun",
              "value": 50,
              "type": "number"
            },
            {
              "id": "5f48bc0f-e03d-4959-acee-09adf2bfbe62",
              "name": "cfg.aiUrl",
              "value": "https://api.anthropic.com/v1/messages",
              "type": "string"
            },
            {
              "id": "e31ac33b-7537-4e66-a02b-19295db8310b",
              "name": "cfg.model",
              "value": "claude-haiku-4-5",
              "type": "string"
            },
            {
              "id": "51c56086-4f17-445c-8c3f-29b888eaf85f",
              "name": "cfg.offer",
              "value": "Describe your offer in one sentence: what you do and for whom.",
              "type": "string"
            },
            {
              "id": "c3e9982c-77ff-4c55-8ebf-b98932bcc91c",
              "name": "cfg.ownerEmail",
              "value": "you@yourcompany.com",
              "type": "string"
            },
            {
              "id": "c2740f71-04b3-4148-b3d3-535ffee4b696",
              "name": "cfg.fromEmail",
              "value": "you@yourcompany.com",
              "type": "string"
            },
            {
              "id": "223c73fe-6b78-4b9c-9b52-321926bee2e0",
              "name": "cfg.fromName",
              "value": "Signal Machine",
              "type": "string"
            }
          ]
        }
      }
    },
    {
      "id": "38542efe-e144-4dc8-b4c8-68db99b19a58",
      "name": "Phantombuster – agent info",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        440,
        0
      ],
      "parameters": {
        "url": "=https://api.phantombuster.com/api/v2/agents/fetch?id={{ $('Settings').first().json.cfg.phantomAgentId }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {
          "timeout": 30000
        }
      }
    },
    {
      "id": "1a13b420-6142-4784-908b-bdfaec210cac",
      "name": "Phantombuster – latest results",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        660,
        0
      ],
      "parameters": {
        "url": "=https://phantombuster.s3.amazonaws.com/{{ $json.orgS3Folder }}/{{ $json.s3Folder }}/result.json",
        "options": {
          "timeout": 30000
        }
      }
    },
    {
      "id": "398cfc07-7257-4f23-b795-3afdfe063924",
      "name": "Normalize engagers",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        880,
        0
      ],
      "parameters": {
        "jsCode": "// One item per person, whatever the phantom's column names are.\nconst out = [];\nconst seen = new Set();\nfor (const it of $input.all()) {\n  const rows = Array.isArray(it.json) ? it.json : [it.json];\n  for (const r of rows) {\n    const profileUrl = String(r.profileLink || r.profileUrl || r.linkedinProfileUrl || r.linkedInProfileUrl || '')\n      .split('?')[0].replace(/\\/$/, '');\n    if (!profileUrl || seen.has(profileUrl)) continue;\n    seen.add(profileUrl);\n    const fullName = r.fullName || [r.firstName, r.lastName].filter(Boolean).join(' ');\n    const comment = String(r.comment || r.commentText || r.commentContent || r.text || '').slice(0, 1000);\n    out.push({ json: {\n      profileUrl,\n      fullName,\n      firstName: r.firstName || fullName.split(' ')[0] || '',\n      lastName: r.lastName || fullName.split(' ').slice(1).join(' '),\n      headline: r.occupation || r.headline || r.title || r.job || '',\n      comment,\n      engagement: comment ? 'comment' : 'like',\n      postUrl: r.postUrl || r.query || r.inputUrl || '',\n    }});\n  }\n}\nreturn out;"
      }
    },
    {
      "id": "e27c2de7-7b48-4d22-9ecf-1e41c539e7a5",
      "name": "Read logged signals",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1100,
        0
      ],
      "parameters": {
        "resource": "sheet",
        "operation": "read",
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $('Settings').first().json.cfg.sheetUrl }}"
        },
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Settings').first().json.cfg.signalsTab }}"
        },
        "options": {}
      },
      "executeOnce": true,
      "alwaysOutputData": true
    },
    {
      "id": "54ee3410-997e-4bd8-8c7d-0bfdacabb06d",
      "name": "New engagers only",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1320,
        0
      ],
      "parameters": {
        "jsCode": "// Skip anyone already processed on a previous day (saves Apollo credits).\nconst cfg = $('Settings').first().json.cfg;\nconst done = new Set(\n  $('Read logged signals').all()\n    .map(i => String(i.json.profileUrl || '').replace(/\\/$/, ''))\n    .filter(Boolean)\n);\nreturn $('Normalize engagers').all()\n  .filter(i => !done.has(i.json.profileUrl))\n  .slice(0, Number(cfg.maxPerRun) || 50);"
      }
    },
    {
      "id": "a1e02216-0394-4ed3-8a5b-7133f2423618",
      "name": "Apollo – enrich",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1540,
        0
      ],
      "parameters": {
        "method": "POST",
        "url": "https://api.apollo.io/api/v1/people/match",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ linkedin_url: $json.profileUrl, reveal_personal_emails: false }) }}",
        "options": {
          "timeout": 30000,
          "batching": {
            "batch": {
              "batchSize": 1,
              "batchInterval": 700
            }
          }
        }
      },
      "onError": "continueRegularOutput"
    },
    {
      "id": "e702fa63-b7f6-4564-9f41-1ef8f6780677",
      "name": "ICP check",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1760,
        0
      ],
      "parameters": {
        "jsCode": "// Merge Apollo data with the engager and decide: qualified or rejected.\nconst cfg = $('Settings').first().json.cfg;\nconst titleRe = new RegExp(cfg.icpTitleRegex, 'i');\nconst base = $('New engagers only').all();\nconst today = new Date().toISOString().slice(0, 10);\nreturn $input.all().map((it, i) => {\n  const b = base[i].json;\n  const p = it.json.person || {};\n  const org = p.organization || {};\n  const title = p.title || b.headline || '';\n  const size = Number(org.estimated_num_employees || 0);\n  const email = /@/.test(p.email || '') && !/not_unlocked/.test(p.email) ? p.email : '';\n  let status = 'qualified', reason = '';\n  if (it.json.error) { status = 'rejected'; reason = 'Apollo error'; }\n  else if (!email) { status = 'rejected'; reason = 'no work email'; }\n  else if (!titleRe.test(title)) { status = 'rejected'; reason = 'title outside ICP'; }\n  else if (size && (size < cfg.minEmployees || size > cfg.maxEmployees)) { status = 'rejected'; reason = `company size ${size}`; }\n  return { json: {\n    date: today, profileUrl: b.profileUrl, fullName: b.fullName,\n    firstName: p.first_name || b.firstName, lastName: p.last_name || b.lastName,\n    title, company: org.name || '', companySize: size || '', industry: org.industry || '',\n    email, engagement: b.engagement, comment: b.comment, postUrl: b.postUrl,\n    firstLine: '', status, reason,\n  }};\n});"
      }
    },
    {
      "id": "072714bc-09c0-45bb-b6f1-a7a18e12f949",
      "name": "Qualified?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1980,
        0
      ],
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "e3f32fef-6fce-4a77-94ce-ca30cc4b0e69",
              "leftValue": "={{ $json.status }}",
              "rightValue": "qualified",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      }
    },
    {
      "id": "10714ff1-2900-489b-8e8f-3cd1ee19867d",
      "name": "Log rejected",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        2200,
        220
      ],
      "parameters": {
        "resource": "sheet",
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $('Settings').first().json.cfg.sheetUrl }}"
        },
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Settings').first().json.cfg.signalsTab }}"
        },
        "columns": {
          "mappingMode": "autoMapInputData",
          "value": {},
          "matchingColumns": [
            "profileUrl"
          ],
          "schema": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "cellFormat": "RAW",
          "handlingExtraData": "ignoreIt"
        }
      }
    },
    {
      "id": "e684e07b-9e44-441d-827a-f4dfbd40e685",
      "name": "Build Claude request",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        2200,
        -120
      ],
      "parameters": {
        "jsCode": "const cfg = $('Settings').first().json.cfg;\nconst system = `You write the opening line of a cold email for Generative Z.\nWhat we offer: ${cfg.offer}\nRules:\n- One or two sentences, max 35 words, in the language of the person's comment (English if there is no comment).\n- Reference what the person actually wrote in their comment, in their own words where possible. If they only liked the post, reference the post topic (AI automation) and their role.\n- Then one short bridge to what we do. No flattery, no \"I came across your profile\", no emojis, no exclamation marks, no invented facts or numbers.\n- If the comment is spam, a self-promotion, a job seeker, or unrelated to automation/AI/sales, set skip to true.\nReturn ONLY JSON: {\"skip\": boolean, \"first_line\": string, \"reason\": string}`;\nreturn $input.all().map(it => {\n  const j = it.json;\n  const user = `Name: ${j.fullName}\\nTitle: ${j.title}\\nCompany: ${j.company} (${j.companySize || '?'} employees, ${j.industry || 'unknown industry'})\\nEngagement: ${j.engagement}\\nTheir comment: ${j.comment || '(none, they liked the post)'}`;\n  return { json: { ...j, request: { model: cfg.model, max_tokens: 300, system, messages: [{ role: 'user', content: user }] } } };\n});"
      }
    },
    {
      "id": "3cd0d141-f39f-4803-b522-2a83753e8e39",
      "name": "Claude – first line",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        2420,
        -120
      ],
      "parameters": {
        "method": "POST",
        "url": "={{ $('Settings').first().json.cfg.aiUrl }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "anthropic-version",
              "value": "2023-06-01"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify($json.request) }}",
        "options": {
          "timeout": 60000,
          "batching": {
            "batch": {
              "batchSize": 1,
              "batchInterval": 1000
            }
          }
        }
      },
      "onError": "continueRegularOutput"
    },
    {
      "id": "94c808d8-d4c9-490f-a261-ad6403fddabe",
      "name": "Parse Claude output",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        2640,
        -120
      ],
      "parameters": {
        "jsCode": "const base = $('Build Claude request').all();\nreturn $input.all().map((it, i) => {\n  const b = { ...base[i].json };\n  delete b.request;\n  const txt = (it.json.content || []).map(c => c.text || '').join('');\n  let o = {};\n  try { o = JSON.parse(txt.slice(txt.indexOf('{'), txt.lastIndexOf('}') + 1)); }\n  catch (e) { o = { skip: true, reason: it.json.error ? 'Claude error' : 'AI output not JSON' }; }\n  const line = String(o.first_line || '').trim();\n  const skip = !!o.skip || !line || /came across your profile/i.test(line);\n  return { json: { ...b, firstLine: skip ? '' : line, status: skip ? 'skipped' : 'queued', reason: o.reason || '' } };\n});"
      }
    },
    {
      "id": "f0c8af70-d3cc-4586-9f44-0ccad3b16b7b",
      "name": "Log qualified",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        2860,
        -120
      ],
      "parameters": {
        "resource": "sheet",
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $('Settings').first().json.cfg.sheetUrl }}"
        },
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Settings').first().json.cfg.signalsTab }}"
        },
        "columns": {
          "mappingMode": "autoMapInputData",
          "value": {},
          "matchingColumns": [
            "profileUrl"
          ],
          "schema": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "cellFormat": "RAW",
          "handlingExtraData": "ignoreIt"
        }
      }
    },
    {
      "id": "45ae006b-78fa-43d8-bd2c-e8160a100264",
      "name": "Send to lemlist?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        3080,
        -120
      ],
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "7e035742-6ede-4269-861b-44feefeb952c",
              "leftValue": "={{ $('Parse Claude output').item.json.status }}",
              "rightValue": "queued",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      }
    },
    {
      "id": "4f1bef02-f907-4de4-8fa7-057bf75b466d",
      "name": "lemlist – add to campaign",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        3300,
        -200
      ],
      "parameters": {
        "method": "POST",
        "url": "=https://api.lemlist.com/api/campaigns/{{ $('Settings').first().json.cfg.lemlistCampaignId }}/leads/{{ encodeURIComponent($('Parse Claude output').item.json.email) }}?deduplicate=true",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify((j => ({ firstName: j.firstName, lastName: j.lastName, companyName: j.company, jobTitle: j.title, linkedinUrl: j.profileUrl, icebreaker: j.firstLine, signalComment: j.comment, signalPost: j.postUrl }))($('Parse Claude output').item.json)) }}",
        "options": {
          "timeout": 30000,
          "batching": {
            "batch": {
              "batchSize": 1,
              "batchInterval": 500
            }
          }
        }
      },
      "onError": "continueRegularOutput"
    },
    {
      "id": "d6577dec-af22-4f09-8d7e-3b2e106d6a73",
      "name": "Daily summary",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1540,
        520
      ],
      "parameters": {
        "jsCode": "const cfg = $('Settings').first().json.cfg;\nconst all = name => { try { return $(name).all().map(i => i.json); } catch (e) { return []; } };\nconst engagers = all('Normalize engagers').length;\nconst fresh = all('New engagers only').length;\nconst icp = all('ICP check');\nconst qualified = icp.filter(x => x.status === 'qualified').length;\nconst parsed = all('Parse Claude output');\nconst queued = parsed.filter(x => x.status === 'queued');\nconst lemlistErrors = all('lemlist – add to campaign').filter(x => x.error).length;\nconst esc = s => String(s || '').replace(/[&<>]/g, c => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;' }[c]));\nconst rows = queued.map(q => `<tr><td><a href=\"${q.profileUrl}\">${esc(q.fullName)}</a><br><small>${esc(q.title)} · ${esc(q.company)}</small></td><td><i>${esc(q.comment).slice(0, 160)}</i></td><td>${esc(q.firstLine)}</td></tr>`).join('');\nconst subject = `Signal Machine: ${fresh} new signals, ${qualified} qualified, ${queued.length} added to lemlist`;\nconst html = `<p><b>${engagers}</b> engagers found, <b>${fresh}</b> new today, <b>${qualified}</b> qualified, <b>${queued.length}</b> added to the lemlist campaign${lemlistErrors ? `, <b style=\"color:#c00\">${lemlistErrors} lemlist errors</b>` : ''}.</p>`\n  + (rows ? `<table border=\"1\" cellpadding=\"6\" style=\"border-collapse:collapse;font-family:sans-serif;font-size:13px\"><tr><th>Person</th><th>Their comment</th><th>First line</th></tr>${rows}</table>` : '<p>No new qualified signal today.</p>')\n  + `<p><a href=\"${cfg.sheetUrl}\">Open the CRM sheet</a> (tab ${cfg.signalsTab})</p>`;\nreturn [{ json: { subject, html } }];"
      },
      "executeOnce": true
    },
    {
      "id": "d684b057-4974-4ada-bbaf-cddc92ecea39",
      "name": "Email summary",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [
        1760,
        520
      ],
      "parameters": {
        "fromEmail": "={{ $('Settings').first().json.cfg.fromName }} <{{ $('Settings').first().json.cfg.fromEmail }}>",
        "toEmail": "={{ $('Settings').first().json.cfg.ownerEmail }}",
        "subject": "={{ $json.subject }}",
        "emailFormat": "html",
        "html": "={{ $json.html }}",
        "options": {
          "appendAttribution": false
        }
      }
    }
  ],
  "connections": {
    "Every weekday 7:00": {
      "main": [
        [
          {
            "node": "Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Settings": {
      "main": [
        [
          {
            "node": "Phantombuster – agent info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Phantombuster – agent info": {
      "main": [
        [
          {
            "node": "Phantombuster – latest results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Phantombuster – latest results": {
      "main": [
        [
          {
            "node": "Normalize engagers",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize engagers": {
      "main": [
        [
          {
            "node": "Read logged signals",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read logged signals": {
      "main": [
        [
          {
            "node": "New engagers only",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New engagers only": {
      "main": [
        [
          {
            "node": "Apollo – enrich",
            "type": "main",
            "index": 0
          },
          {
            "node": "Daily summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Apollo – enrich": {
      "main": [
        [
          {
            "node": "ICP check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ICP check": {
      "main": [
        [
          {
            "node": "Qualified?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Qualified?": {
      "main": [
        [
          {
            "node": "Build Claude request",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Claude request": {
      "main": [
        [
          {
            "node": "Claude – first line",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude – first line": {
      "main": [
        [
          {
            "node": "Parse Claude output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Claude output": {
      "main": [
        [
          {
            "node": "Log qualified",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log qualified": {
      "main": [
        [
          {
            "node": "Send to lemlist?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send to lemlist?": {
      "main": [
        [
          {
            "node": "lemlist – add to campaign",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily summary": {
      "main": [
        [
          {
            "node": "Email summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "timezone": "Europe/Madrid",
    "saveManualExecutions": true
  }
}
