AutomationFlowsData & Sheets › Discover Decision Makers by Responsibilities (not Titles) with Octave & Airtable

Discover Decision Makers by Responsibilities (not Titles) with Octave & Airtable

ByNalin @nalinkrishnan on n8n.io

Sales development teams, account-based marketing professionals, and RevOps teams who are tired of generic job title filtering that misses the real decision makers. Built for teams that need to find the right people based on actual responsibilities and business context, not just…

Event trigger★★★☆☆ complexity9 nodesAirtableN8N Nodes Octavehq
Data & Sheets Trigger: Event Nodes: 9 Complexity: ★★★☆☆ Added:

This workflow corresponds to n8n.io template #7620 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Discover relevant contacts from target accounts using Octave intelligent prospecting",
  "tags": [],
  "nodes": [
    {
      "id": "sticky-note-main",
      "name": "Sticky Note - Main Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        250,
        -700
      ],
      "parameters": {
        "color": 1,
        "width": 450,
        "height": 500,
        "content": "\ud83c\udfaf INTELLIGENT CONTACT PROSPECTING\n\nFOR: SDR teams, ABM professionals, RevOps who\nneed to find the right people based on actual\nresponsibilities, not just job titles.\n\nSOLVES: Traditional prospecting relies on job title\nmatching but titles vary wildly. You miss the \"Head\nof Platform\" who owns your use case while\nsearching for \"VP of Engineering\".\n\nWORKS:\n1. Manual trigger starts workflow\n2. Read target accounts from Airtable\n3. Octave prospector finds relevant contacts\n4. Contacts exported back to Airtable\n\nSETUP: Airtable credentials + account list,\nOctave prospector agent, contact output table\n\nCUSTOMIZE: Configure prospector personas,\nresponsibilities, org levels. Adapt data sources\n(CRM, spreadsheets). Adjust contact selection\ncriteria and output fields."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-note-trigger",
      "name": "Sticky Note - Trigger Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        40,
        -150
      ],
      "parameters": {
        "color": 2,
        "width": 190,
        "height": 100,
        "content": "\ud83d\ude80 START HERE\nManual trigger to start.\nCan change to schedule."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-note-accounts",
      "name": "Sticky Note - Account Source",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -150
      ],
      "parameters": {
        "color": 4,
        "width": 190,
        "height": 100,
        "content": "\ud83d\udccb ACCOUNT LIST\nReplace with your data source.\nConfigure account table."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-note-prospector",
      "name": "Sticky Note - Prospector Agent",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        440,
        -150
      ],
      "parameters": {
        "color": 3,
        "width": 190,
        "height": 100,
        "content": "\ud83d\udd0d INTELLIGENT PROSPECTOR\nContext-aware contact discovery.\nReplace agent ID & configure."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-note-output",
      "name": "Sticky Note - Contact Output",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -150
      ],
      "parameters": {
        "color": 6,
        "width": 190,
        "height": 100,
        "content": "\ud83d\udcbe CONTACT OUTPUT\nSave discovered contacts.\nConfigure output table."
      },
      "typeVersion": 1
    },
    {
      "id": "ab617c7a-25b1-4716-8389-a5b72aa9e25f",
      "name": "Manual Workflow Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        120,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "0fd99d3c-27c9-4683-9433-369260f575ac",
      "name": "Get Target Accounts",
      "type": "n8n-nodes-base.airtable",
      "position": [
        320,
        0
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "your-airtable-base-id",
          "cachedResultUrl": "https://airtable.com/your-base-url",
          "cachedResultName": "Your Target Account Base"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "your-accounts-table-id",
          "cachedResultUrl": "https://airtable.com/your-table-url",
          "cachedResultName": "Target Accounts List"
        },
        "options": {},
        "operation": "search"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "6a1690fb-f896-4bbd-b433-1f2ff3b12b77",
      "name": "Discover Relevant Contacts",
      "type": "n8n-nodes-octavehq.octave",
      "position": [
        520,
        0
      ],
      "parameters": {
        "agentOId": "your-octave-prospector-agent-id",
        "operation": "runProspector",
        "companyDomain": "={{ $json['Company Domain'] }}"
      },
      "credentials": {
        "octaveApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5a2a0df3-e8cc-4ef7-9072-5b42321deaae",
      "name": "Save Discovered Contacts",
      "type": "n8n-nodes-base.airtable",
      "position": [
        720,
        0
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "your-airtable-base-id",
          "cachedResultUrl": "https://airtable.com/your-base-url",
          "cachedResultName": "Your Target Account Base"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "your-contacts-table-id",
          "cachedResultUrl": "https://airtable.com/your-contacts-table-url",
          "cachedResultName": "Discovered Contacts List"
        },
        "columns": {
          "value": {
            "Job Title": "={{ $json.contacts[0].contact.title }}",
            "Last Name": "={{ $json.contacts[0].contact.lastName }}",
            "First Name": "={{ $json.contacts[0].contact.firstName }}",
            "Company Name": "={{ $json.contacts[0].contact.companyName }}",
            "Company Domain": "={{ $json.contacts[0].contact.companyDomain }}",
            "LinkedIn Profile": "={{ $json.contacts[0].contact.profileUrl }}"
          },
          "schema": [
            {
              "id": "LinkedIn Profile",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "LinkedIn Profile",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "First Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Last Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Domain",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Company Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "Get Target Accounts": {
      "main": [
        [
          {
            "node": "Discover Relevant Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Workflow Trigger": {
      "main": [
        [
          {
            "node": "Get Target Accounts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Discover Relevant Contacts": {
      "main": [
        [
          {
            "node": "Save Discovered Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Sales development teams, account-based marketing professionals, and RevOps teams who are tired of generic job title filtering that misses the real decision makers. Built for teams that need to find the right people based on actual responsibilities and business context, not just…

Source: https://n8n.io/workflows/7620/ — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

How it works

Airtable Trigger, Sendinblue, Airtable +1
Data & Sheets

This workflow automatically pulls SERP rankings, competitor keywords, and related keyword ideas from DataForSEO and stores structured results in Airtable — making SEO tracking and keyword research str

Airtable, HTTP Request
Data & Sheets

d16-Web-Scraper-Data-Flow. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 20 nodes.

HTTP Request, Airtable, Execute Workflow Trigger
Data & Sheets

N8N Workflow Backup Management With Dropbox And Airtable. Uses manualTrigger, splitInBatches, noOp, airtable. Event-driven trigger; 19 nodes.

Airtable, HTTP Request, Move Binary Data +1
Data & Sheets

Dsp agent. Uses telegramTrigger, telegram, noOp, airtable. Event-driven trigger; 19 nodes.

Telegram Trigger, Telegram, Airtable +2