{
  "id": "e5KWX2rIVmRWuOD8",
  "meta": {
    "builderVariant": "mcp",
    "aiBuilderAssisted": true
  },
  "name": "LinkedIn Lead Finder & CRM Enricher (Unipile)",
  "tags": [],
  "nodes": [
    {
      "id": "a175e5e4-7f18-40d4-babd-cb6b21d30de8",
      "name": "DailyTrigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1104,
        848
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 8
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "94dc613c-da2b-4229-8fa5-dfe3b8e8775b",
      "name": "SetConfig",
      "type": "n8n-nodes-base.set",
      "position": [
        -864,
        848
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cfg-dsn",
              "name": "unipile_dsn",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Your Unipile DSN, e.g. https://api1.unipile.com:13111 (find it in the Unipile Dashboard)__>"
            },
            {
              "id": "cfg-account",
              "name": "unipile_account_id",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Your Unipile LinkedIn account_id (Dashboard > Accounts, or GET /api/v1/accounts)__>"
            },
            {
              "id": "cfg-api",
              "name": "search_api",
              "type": "string",
              "value": "classic"
            },
            {
              "id": "cfg-category",
              "name": "search_category",
              "type": "string",
              "value": "people"
            },
            {
              "id": "cfg-keywords",
              "name": "search_keywords",
              "type": "string",
              "value": "Head of Growth"
            },
            {
              "id": "cfg-results-per-page",
              "name": "results_per_page",
              "type": "number",
              "value": 25
            },
            {
              "id": "cfg-max-pages",
              "name": "max_pages",
              "type": "number",
              "value": 3
            },
            {
              "id": "cfg-max-enrich",
              "name": "max_profiles_to_enrich",
              "type": "number",
              "value": 30
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "42647d9d-45e9-49c1-b035-b99cb4687e9a",
      "name": "SearchLinkedIn",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "maxTries": 3,
      "position": [
        -560,
        848
      ],
      "parameters": {
        "url": "={{ $json.unipile_dsn }}/api/v1/linkedin/search",
        "method": "POST",
        "options": {
          "timeout": 15000,
          "pagination": {
            "pagination": {
              "parameters": {
                "parameters": [
                  {
                    "name": "cursor",
                    "value": "={{ $response.body.cursor }}"
                  }
                ]
              },
              "maxRequests": "={{ $json.max_pages }}",
              "requestInterval": 1000,
              "limitPagesFetched": true,
              "completeExpression": "={{ !$response.body.cursor || !$response.body.items || $response.body.items.length === 0 }}",
              "paginationCompleteWhen": "other"
            }
          }
        },
        "jsonBody": "={{ { api: $json.search_api, category: $json.search_category, keywords: $json.search_keywords } }}",
        "sendBody": true,
        "sendQuery": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "account_id",
              "value": "={{ $json.unipile_account_id }}"
            },
            {
              "name": "limit",
              "value": "={{ $json.results_per_page }}"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.4,
      "waitBetweenTries": 5000
    },
    {
      "id": "cf378a5e-a77d-45ca-bf99-68c8a2d02f81",
      "name": "ExtractItems",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -336,
        832
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "items"
      },
      "typeVersion": 1
    },
    {
      "id": "310e354b-518f-43f8-8d0d-46298cb66042",
      "name": "RemoveDuplicates",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        -112,
        832
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "id"
      },
      "typeVersion": 1.1
    },
    {
      "id": "7c725099-9ae2-4f1d-98c0-934f761ebda8",
      "name": "CapProfiles",
      "type": "n8n-nodes-base.limit",
      "position": [
        112,
        832
      ],
      "parameters": {
        "maxItems": "={{ $('Search Criteria & Unipile Config').item.json.max_profiles_to_enrich }}"
      },
      "typeVersion": 1
    },
    {
      "id": "fe0b53a1-5fd6-47be-8754-ab79d1c7a541",
      "name": "FetchProfile",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "maxTries": 3,
      "position": [
        624,
        880
      ],
      "parameters": {
        "url": "={{ $('Search Criteria & Unipile Config').item.json.unipile_dsn }}/api/v1/users/{{ $json.id }}",
        "options": {
          "timeout": 15000
        },
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "account_id",
              "value": "={{ $('Search Criteria & Unipile Config').item.json.unipile_account_id }}"
            },
            {
              "name": "linkedin_sections",
              "value": "*"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.4,
      "waitBetweenTries": 5000
    },
    {
      "id": "e8c283d8-0dbe-4525-9c06-e4be4f58e5ec",
      "name": "MapToCRM",
      "type": "n8n-nodes-base.set",
      "position": [
        880,
        864
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "row-name",
              "name": "full_name",
              "type": "string",
              "value": "={{ (($json.first_name || '') + ' ' + ($json.last_name || '')).trim() || $('Extract Search Result Items').item.json.name || '' }}"
            },
            {
              "id": "row-headline",
              "name": "headline",
              "type": "string",
              "value": "={{ $json.headline || $('Extract Search Result Items').item.json.headline || '' }}"
            },
            {
              "id": "row-location",
              "name": "location",
              "type": "string",
              "value": "={{ (typeof $json.location === 'string' ? $json.location : ($json.location?.name || '')) || $('Extract Search Result Items').item.json.location || '' }}"
            },
            {
              "id": "row-title",
              "name": "current_title",
              "type": "string",
              "value": "={{ $json.current_positions?.[0]?.title || $json.current_positions?.[0]?.role || '' }}"
            },
            {
              "id": "row-company",
              "name": "current_company",
              "type": "string",
              "value": "={{ $json.current_positions?.[0]?.company_name || $json.current_positions?.[0]?.company || '' }}"
            },
            {
              "id": "row-url",
              "name": "profile_url",
              "type": "string",
              "value": "={{ $json.public_profile_url || ($json.public_identifier ? 'https://www.linkedin.com/in/' + $json.public_identifier : '') || $('Extract Search Result Items').item.json.profile_url || '' }}"
            },
            {
              "id": "row-pubid",
              "name": "public_identifier",
              "type": "string",
              "value": "={{ $json.public_identifier || $('Extract Search Result Items').item.json.id || '' }}"
            },
            {
              "id": "row-degree",
              "name": "connection_degree",
              "type": "string",
              "value": "={{ $json.network_distance || $('Extract Search Result Items').item.json.network_distance || '' }}"
            },
            {
              "id": "row-email",
              "name": "email",
              "type": "string",
              "value": "={{ $json.contact_info?.emails?.[0] || '' }}"
            },
            {
              "id": "row-summary",
              "name": "summary",
              "type": "string",
              "value": "={{ $json.summary || '' }}"
            },
            {
              "id": "row-keywords",
              "name": "search_keywords",
              "type": "string",
              "value": "={{ $('Search Criteria & Unipile Config').item.json.search_keywords }}"
            },
            {
              "id": "row-enriched",
              "name": "enriched_at",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "d1af0d8a-e8d0-494f-a78d-59ceb74689e9",
      "name": "UpsertLead",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueErrorOutput",
      "position": [
        1136,
        864
      ],
      "parameters": {
        "columns": {
          "value": {
            "email": "={{ $json.email }}",
            "summary": "={{ $json.summary }}",
            "headline": "={{ $json.headline }}",
            "location": "={{ $json.location }}",
            "full_name": "={{ $json.full_name }}",
            "enriched_at": "={{ $json.enriched_at }}",
            "profile_url": "={{ $json.profile_url }}",
            "current_title": "={{ $json.current_title }}",
            "current_company": "={{ $json.current_company }}",
            "search_keywords": "={{ $json.search_keywords }}",
            "connection_degree": "={{ $json.connection_degree }}",
            "public_identifier": "={{ $json.public_identifier }}"
          },
          "schema": [
            {
              "id": "full_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "full_name",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "headline",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "headline",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "location",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "current_title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "current_title",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "current_company",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "current_company",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "profile_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "profile_url",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "public_identifier",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "public_identifier",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "connection_degree",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "connection_degree",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "summary",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "search_keywords",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "search_keywords",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "enriched_at",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "enriched_at",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "public_identifier"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Leads"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "",
          "cachedResultName": "LinkedIn Lead Finder - CRM"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "41b8e4d2-9ae8-44b4-980d-72155c1fe751",
      "name": "WaitRateLimit",
      "type": "n8n-nodes-base.wait",
      "position": [
        1440,
        912
      ],
      "parameters": {
        "amount": 3
      },
      "typeVersion": 1.1
    },
    {
      "id": "c1ac71ce-269f-48b1-a5d5-0b76c7ac554d",
      "name": "LogEnrichError",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1024,
        1328
      ],
      "parameters": {
        "columns": {
          "value": {
            "when": "={{ $now.toISO() }}",
            "stage": "enrichment",
            "profile_id": "={{ $('Extract Search Result Items').item.json.id }}",
            "error_message": "={{ $json.error?.message || $json.message || \"Unknown error\" }}"
          },
          "schema": [
            {
              "id": "when",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "when",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "stage",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "stage",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "profile_id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "profile_id",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "error_message",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "error_message",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Errors"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "",
          "cachedResultName": "LinkedIn Lead Finder - CRM"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "486abe0b-5390-48e0-adc7-b260ed2c4d0b",
      "name": "BatchLoop",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        384,
        864
      ],
      "parameters": {
        "options": {},
        "batchSize": 5
      },
      "typeVersion": 3
    },
    {
      "id": "ebe2f116-02a7-443b-a4f2-c1ab96805c68",
      "name": "LogSearchError",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        720,
        1296
      ],
      "parameters": {
        "columns": {
          "value": {
            "when": "={{ $now.toISO() }}",
            "stage": "search",
            "error_message": "={{ $json.error?.message || $json.message || \"Unknown error\" }}"
          },
          "schema": [
            {
              "id": "when",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "when",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "stage",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "stage",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "error_message",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "error_message",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Errors"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "",
          "cachedResultName": "LinkedIn Lead Finder - CRM"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "1cce53b8-6bfe-408a-b914-2a313248d427",
      "name": "\ud83d\udccb OVERVIEW",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1776,
        576
      ],
      "parameters": {
        "width": 552,
        "height": 1020,
        "content": "## \ud83d\udd17 LinkedIn Lead Finder & CRM Enricher (Unipile)\n**Who is this for?** Sales teams, recruiters, and growth operators who want to automatically build and enrich a prospect list from LinkedIn and sync it into a Google Sheet CRM \u2014 hands-free, every day.\n\n**What it does (high level):** Searches LinkedIn via Unipile's API using keywords you define, fetches full profile details for each match, and upserts every lead into a Google Sheet with 12 enriched fields. Rate-limited and error-safe out of the box.\n\n---\n**\u2699\ufe0f How it works**\n1. The Schedule Trigger fires daily at 08:00 and passes config values (DSN, account ID, keywords) to all downstream nodes.\n2. Unipile's Search API (`POST /api/v1/linkedin/search`) runs a keyword search and auto-paginates via cursor across up to 3 pages (configurable).\n3. Results are split per profile, de-duplicated by LinkedIn ID, and capped at a safe daily enrichment limit.\n4. Each profile is enriched via `GET /api/v1/users/{id}?linkedin_sections=*` \u2014 5 at a time, with a 3-second pause to respect LinkedIn rate limits.\n5. A Set node maps the Unipile response to 12 clean CRM columns and upserts the row into Google Sheets (matched on `public_identifier` \u2014 no duplicates on re-runs).\n6. Any error (search failure or per-profile failure) is caught, retried 3\u00d7, then logged to an Errors tab without stopping the run.\n\n---\n**\ud83d\udee0\ufe0f Setup \u2014 what you need before running**\n- [ ] A [Unipile](https://unipile.com) account with a connected LinkedIn account \u2014 copy your **DSN** and **account_id** from the Dashboard\n- [ ] Create an n8n **Header Auth** credential named `Unipile API Key` \u2192 header name: `X-API-KEY` \u2192 value: your Unipile access token\n- [ ] Create a Google Sheet named `LinkedIn Lead Finder - CRM` with two tabs: **Leads** and **Errors** (columns listed in Section 4 sticky below)\n- [ ] Connect your **Google Sheets OAuth2** credential to all three Google Sheets nodes\n- [ ] Fill in your DSN, account_id, and search keywords in the **\u2699\ufe0f Config** node (Section 1)"
      },
      "typeVersion": 1
    },
    {
      "id": "bb7827d9-4efc-4596-b73f-da62786d0e9b",
      "name": "\ud83d\udfe6 BG Section 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1184,
        688
      ],
      "parameters": {
        "color": 7,
        "width": 524,
        "height": 400,
        "content": "**\u2460 Configure Search & Credentials**\nFill in your Unipile DSN, account_id, keywords, and daily limits in the Config node. Attach credentials to the two HTTP nodes."
      },
      "typeVersion": 1
    },
    {
      "id": "633748f0-3ca2-48f8-a44b-de19c9618d00",
      "name": "\ud83d\udfe6 BG Section 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        688
      ],
      "parameters": {
        "color": 7,
        "width": 928,
        "height": 400,
        "content": "**\u2461 Search LinkedIn & Clean Results**\nSearches via Unipile Search API, paginates, splits items, removes duplicates, and caps to daily limit."
      },
      "typeVersion": 1
    },
    {
      "id": "3295ed66-a13a-4889-a146-161f001a5ec3",
      "name": "\ud83d\udfe6 BG Section 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        688
      ],
      "parameters": {
        "color": 7,
        "width": 1320,
        "height": 400,
        "content": "**\u2462 Enrich Profiles (Rate-Limited Loop)**\nBatches 5 profiles at a time, fetches full LinkedIn profile from Unipile, maps to 12 CRM fields, writes to Google Sheets, waits 3 seconds between batches."
      },
      "typeVersion": 1
    },
    {
      "id": "6baa3369-44a6-4bb3-bc4f-6df3b787804b",
      "name": "\ud83d\udfe6 BG Section 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        1120
      ],
      "parameters": {
        "color": 7,
        "width": 624,
        "height": 412,
        "content": "**\u2463 Error Logging**\nSearch failures \u2192 Log Search Error node. Per-profile failures \u2192 Log Enrichment Error node. Both retry 3\u00d7 before logging. Run never stops."
      },
      "typeVersion": 1
    },
    {
      "id": "4014f811-7f5f-4c3a-afb7-e4f25047c069",
      "name": "\ud83d\udccc Config Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1104,
        1120
      ],
      "parameters": {
        "color": 3,
        "width": 384,
        "height": 380,
        "content": "**\ud83d\udc49 Add your details here:**\n\n`unipile_dsn`\nYour Unipile DSN\ne.g. `https://api1.unipile.com:13111`\n(Dashboard \u2192 Settings)\n\n`unipile_account_id`\nYour LinkedIn account ID\n(Dashboard \u2192 Accounts tab)\n\n`search_keywords`\nChange to your target role/ICP\n\n`max_profiles_to_enrich`\nKeep \u2264 100 per day (LinkedIn limit)"
      },
      "typeVersion": 1
    },
    {
      "id": "5ba62d5e-1226-4e09-81a0-87e51799335c",
      "name": "\ud83d\udccc Credentials Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        1136
      ],
      "parameters": {
        "color": 3,
        "width": 292,
        "height": 276,
        "content": "**\ud83d\udc49 Add your Unipile API Key:**\n\nCreate a **Header Auth** credential:\n- Name: `Unipile API Key`\n- Header name: `X-API-KEY`\n- Value: your Unipile access token\n\nAttach it to:\n\u2705 Search LinkedIn node\n\u2705 Get Full LinkedIn Profile node"
      },
      "typeVersion": 1
    },
    {
      "id": "d94dcf12-a8c0-48dd-bbf9-023ffe8fc85e",
      "name": "\ud83d\udccc Google Sheets Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        1168
      ],
      "parameters": {
        "color": 3,
        "width": 480,
        "height": 348,
        "content": "**\ud83d\udc49 Set up your Google Sheet:**\n\n1. Create a sheet named:\n`LinkedIn Lead Finder - CRM`\n\n2. Add tab **Leads** with columns:\n`full_name` `headline` `location`\n`current_title` `current_company`\n`profile_url` `public_identifier`\n`connection_degree` `email`\n`summary` `search_keywords` `enriched_at`\n\n3. Add tab **Errors** with columns:\n`when` `stage` `profile_id` `error_message`\n\n4. Select your sheet in the **Document** field of all 3 Google Sheets nodes and connect your **Google Sheets OAuth2** credential."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": true,
    "executionOrder": "v1"
  },
  "versionId": "2a08363c-1791-4d61-99b5-4274937f2a8a",
  "nodeGroups": [],
  "connections": {
    "MapToCRM": {
      "main": [
        [
          {
            "node": "UpsertLead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "BatchLoop": {
      "main": [
        [],
        [
          {
            "node": "FetchProfile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SetConfig": {
      "main": [
        [
          {
            "node": "SearchLinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "UpsertLead": {
      "main": [
        [
          {
            "node": "WaitRateLimit",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "LogEnrichError",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CapProfiles": {
      "main": [
        [
          {
            "node": "BatchLoop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DailyTrigger": {
      "main": [
        [
          {
            "node": "SetConfig",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ExtractItems": {
      "main": [
        [
          {
            "node": "RemoveDuplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FetchProfile": {
      "main": [
        [
          {
            "node": "MapToCRM",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "LogEnrichError",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WaitRateLimit": {
      "main": [
        [
          {
            "node": "BatchLoop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LogEnrichError": {
      "main": [
        [
          {
            "node": "WaitRateLimit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SearchLinkedIn": {
      "main": [
        [
          {
            "node": "ExtractItems",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "LogSearchError",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RemoveDuplicates": {
      "main": [
        [
          {
            "node": "CapProfiles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}