# From a trade show CSV to a call queue.

Claude Code sets up the list, score and rules. The list looks up mobile numbers for good fits and hands qualified contacts on – to n8n in the example. Change the threshold to see who reaches the call queue.

https://listplus.ai/en/gtm-workflows/claude-code-lead-scoring-n8n

## Inputs and connections

A trade show CSV, ICP criteria and a shared CRM reference list. The example scores industry, company size and buying role.

Enable Set up for the connection, grant the appropriate list permissions, share the CRM reference list and configure an n8n webhook pipeline.

## Steps

1. **Set up the campaign list** (Claude Code · by call). Enable Set up for the connection. Ask the agent to create “Trade show leads” with the required fields and a Qualified status.
2. **Score and check each contact** (ListPlus · runs automatically). Apparel earns 40 points. A company of 201+ and a buying role each earn 30. Check contact data and CRM matches before selecting eligible new contacts for paid lookups.
3. **Approve the lookup rule once** (Your team · manual in ListPlus). Review the estimate for the selected contacts, then activate the rule. The list looks up missing contact details for each new eligible lead.
4. **Hand off contacts who are ready for a call** (ListPlus · n8n · runs automatically). When an eligible lead has a usable mobile number, the list sets Qualified and sends that row to the existing Sales Call Queue pipeline. A lookup with no result leaves the row in the list.

## Expected sample result

At 80 points Giulia reaches the call queue. Luca is in the CRM, Sofia has open findings and Elena falls below the threshold. At 70 points Elena qualifies too.

## Costs and boundaries

At 80 points the example selects one person for enrichment. The estimate is 5 credits, at most 23 credits ($0.81 on Pro). Changing the score threshold updates the selection and estimate. Destination charges are separate.

ListPlus calculates scores and runs configured rules after setup. External research tasks still need the agent. Confirm webhook receipt in the destination.

## Agent prompt

Create the “Trade show leads” list with status Qualified. Add a fit score for apparel (+40), 201+ employees (+30) and buying roles (+30) and a match against my shared customer list. Add and check my trade show contacts. Estimate missing mobiles and personal LinkedIn profiles only for cleared, new contacts scoring 80 or more. Show expected and maximum credits. Create the lookup rule and activate it after I approve its budget. Once there is a usable mobile number, have the list set Qualified and hand the contact to the existing Sales Call Queue pipeline.

## Tools

`describe_setup`, `create_list`, `add_column`, `add_records`, `check_list`, `enrich_records`, `create_trigger`, `update_trigger`, `query_records`

MCP: https://listplus.ai/mcp
REST: https://listplus.ai/a/v1/{action}
API: https://listplus.ai/a

## Sample calls

These calls use fictional IDs. Use the IDs returned by your workspace.

Create the lookup rule paused. The 25 credits per record are the configured limit for this example. Activate it after approval. An eligible row with a usable mobile number becomes Qualified and goes to the existing pipeline.

```text
describe_setup({})

create_list({
  "name": "Trade show leads",
  "kind": "contacts",
  "statuses": [
    {
      "name": "Qualified"
    }
  ],
  "columns": [
    "first_name",
    "last_name",
    "company_name",
    "job_title",
    "industry",
    "company_size",
    "linkedin_profile_url",
    "mobile_phone"
  ]
})

describe_setup({
  "list_id": "trade_show_leads"
})

add_column({
  "list_id": "trade_show_leads",
  "columns": [
    {
      "kind": "in_list",
      "title": "CRM match",
      "reference_list_id": "hubspot_customers"
    },
    {
      "kind": "score",
      "title": "Fit score",
      "criteria": [
        {
          "label": "Apparel",
          "points": 40,
          "when": {
            "groups": [
              [
                {
                  "field": {
                    "kind": "contentType",
                    "key": "industry"
                  },
                  "op": "isAnyOf",
                  "values": [
                    "Apparel"
                  ]
                }
              ]
            ]
          }
        },
        {
          "label": "201+ employees",
          "points": 30,
          "when": {
            "groups": [
              [
                {
                  "field": {
                    "kind": "contentType",
                    "key": "company_size"
                  },
                  "op": "isAnyOf",
                  "values": [
                    "201-500",
                    "501-1000",
                    "1001-5000",
                    "5001-10000",
                    "10001+"
                  ]
                }
              ]
            ]
          }
        },
        {
          "label": "Buying role",
          "points": 30,
          "when": {
            "groups": [
              [
                {
                  "field": {
                    "kind": "contentType",
                    "key": "job_title"
                  },
                  "op": "isAnyOf",
                  "values": [
                    "Head of Buying",
                    "Buyer"
                  ]
                }
              ]
            ]
          }
        }
      ]
    }
  ]
})

create_trigger({
  "list_id": "trade_show_leads",
  "name": "Ready for a call",
  "on": "match",
  "conditions": {
    "groups": [
      [
        {
          "field": {
            "kind": "column",
            "name": "fit_score"
          },
          "op": "greaterThanOrEqual",
          "values": [
            "80"
          ]
        },
        {
          "field": {
            "kind": "reference",
            "listId": "hubspot_customers"
          },
          "op": "isNotIn"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "linkedin_profile_url"
          },
          "op": "blank"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "mobile_phone"
          },
          "op": "valid"
        }
      ],
      [
        {
          "field": {
            "kind": "column",
            "name": "fit_score"
          },
          "op": "greaterThanOrEqual",
          "values": [
            "80"
          ]
        },
        {
          "field": {
            "kind": "reference",
            "listId": "hubspot_customers"
          },
          "op": "isNotIn"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "linkedin_profile_url"
          },
          "op": "isProfile"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "mobile_phone"
          },
          "op": "valid"
        }
      ]
    ]
  },
  "actions": [
    {
      "kind": "status",
      "status": "Qualified"
    }
  ]
})

create_trigger({
  "list_id": "trade_show_leads",
  "name": "Qualified → n8n",
  "on": "match",
  "conditions": {
    "groups": [
      [
        {
          "field": {
            "kind": "column",
            "name": "fit_score"
          },
          "op": "greaterThanOrEqual",
          "values": [
            "80"
          ]
        },
        {
          "field": {
            "kind": "reference",
            "listId": "hubspot_customers"
          },
          "op": "isNotIn"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "linkedin_profile_url"
          },
          "op": "blank"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "mobile_phone"
          },
          "op": "valid"
        },
        {
          "field": {
            "kind": "status"
          },
          "op": "isAnyOf",
          "values": [
            "Qualified"
          ]
        }
      ],
      [
        {
          "field": {
            "kind": "column",
            "name": "fit_score"
          },
          "op": "greaterThanOrEqual",
          "values": [
            "80"
          ]
        },
        {
          "field": {
            "kind": "reference",
            "listId": "hubspot_customers"
          },
          "op": "isNotIn"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "linkedin_profile_url"
          },
          "op": "isProfile"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "mobile_phone"
          },
          "op": "valid"
        },
        {
          "field": {
            "kind": "status"
          },
          "op": "isAnyOf",
          "values": [
            "Qualified"
          ]
        }
      ]
    ]
  },
  "actions": [
    {
      "kind": "pipeline",
      "pipeline": "Sales Call Queue"
    }
  ]
})

create_trigger({
  "list_id": "trade_show_leads",
  "name": "Find missing contact details",
  "on": "match",
  "activate": false,
  "conditions": {
    "groups": [
      [
        {
          "field": {
            "kind": "column",
            "name": "fit_score"
          },
          "op": "greaterThanOrEqual",
          "values": [
            "80"
          ]
        },
        {
          "field": {
            "kind": "reference",
            "listId": "hubspot_customers"
          },
          "op": "isNotIn"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "linkedin_profile_url"
          },
          "op": "blank"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "mobile_phone"
          },
          "op": "blank"
        }
      ],
      [
        {
          "field": {
            "kind": "column",
            "name": "fit_score"
          },
          "op": "greaterThanOrEqual",
          "values": [
            "80"
          ]
        },
        {
          "field": {
            "kind": "reference",
            "listId": "hubspot_customers"
          },
          "op": "isNotIn"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "linkedin_profile_url"
          },
          "op": "isProfile"
        },
        {
          "field": {
            "kind": "contentType",
            "key": "mobile_phone"
          },
          "op": "blank"
        }
      ]
    ]
  },
  "actions": [
    {
      "kind": "enrich",
      "fields": [
        "mobile_phone",
        "linkedin_profile_url"
      ],
      "fill": "empty_only",
      "budget_per_record": "25"
    }
  ]
})

add_records({
  "list_id": "trade_show_leads",
  "records": [
    {
      "first_name": "Giulia",
      "last_name": "Ferri",
      "company_name": "Moda Vesuvio",
      "job_title": "Buyer",
      "industry": "Apparel",
      "company_size": "201-500"
    },
    {
      "first_name": "Luca",
      "last_name": "Greco",
      "company_name": "Tessile Ionio",
      "job_title": "Buyer",
      "industry": "Apparel",
      "company_size": "201-500"
    },
    {
      "first_name": "Sofia",
      "last_name": "Costa",
      "company_name": "Seta Sicilia",
      "job_title": "Buyer",
      "industry": "Apparel",
      "company_size": "201-500",
      "linkedin_profile_url": "linkedin.com/company/seta-sicilia",
      "mobile_phone": "+39 000 000 0000"
    },
    {
      "first_name": "Elena",
      "last_name": "Rizzo",
      "company_name": "Linea Bari",
      "job_title": "Marketing Manager",
      "industry": "Apparel",
      "company_size": "201-500"
    }
  ]
})

check_list({
  "list_id": "trade_show_leads",
  "categories": [
    "email",
    "phone",
    "linkedin",
    "duplicates"
  ]
})

enrich_records({
  "list_id": "trade_show_leads",
  "record_ids": [
    "giulia"
  ],
  "fields": [
    "mobile_phone",
    "linkedin_profile_url"
  ],
  "estimate": true
})

update_trigger({
  "list_id": "trade_show_leads",
  "trigger_id": "<lookup_rule_id>",
  "status": "active",
  "include_existing": true
})

query_records({
  "list_id": "trade_show_leads",
  "filter": {
    "ar_status": "Qualified"
  },
  "mode": "rows"
})
```
