Keyword Engagement Signal
Thekeyword_engagement signal monitors LinkedIn for posts matching your keywords, extracts the people who liked or commented on those posts, filters them against your Ideal Customer Profile (ICP), and scores each lead 1–3 based on fit and intent.
Unlike
job_change and new_post, you can create multiple keyword_engagement signals — each targeting a different keyword set or ICP. Each signal is identified by a signal_id returned on creation.Create a keyword engagement signal
Request
string
required
Must be
"keyword_engagement".array
required
Seed keywords to monitor on LinkedIn. Minimum 1. The system automatically expands these with semantically related variants on the first run.
object
Ideal Customer Profile filter. If omitted, every engaging lead passes through unfiltered. See the ICP Filter Reference section below for all available fields.
array
Extra email addresses to receive the lead digest. Your registered account email is always included.
string
HMAC secret for signing webhook payloads.
Response
Response
string
Unique identifier for this keyword engagement signal. Save this — you need it for update and delete operations.
string
Always
"keyword_engagement".string
"active" after creation.array
The seed keywords you provided.
object
The ICP configuration, if provided.
ICP filter reference
All fields are optional. If no ICP is provided, every lead passes with a score of 1.0.Hard filters — reject leads that don’t match
array
Accepted location strings (country names, cities, or regions). A lead passes if any value appears in their LinkedIn location.
array
Job titles to exclude. Seniority-aware —
"Intern" excludes "Marketing Intern" but not "VP Sales".array
At least one keyword must appear in the lead’s profile text.
array
Target job titles. Matching is seniority- and function-aware. Leads with confidence below 0.6 are hard-rejected.
array
Restrict to specific seniority bands. Leads with unclassified seniority (
"unknown") always pass.Valid values: "intern" "entry" "ic" "manager" "director" "vp" "c_level" "founder" "unknown"Soft filters — affect score but don’t reject
array
Target company industries. Uses semantic matching —
"Computer Software" matches ["SaaS", "Tech"]. Non-matches lower the ICP score rather than hard-rejecting.array
Target LinkedIn company size bands. Non-matches lower the ICP score. Must match LinkedIn’s exact size band strings:
"" · "2 - 10" · "11 - 50" · "51 - 200" · "201 - 500" · "501 - 1000" · "1001 - 5000" · "5001 - 10000" · "10001+"array
Keywords that reduce or eliminate a lead’s score if found in their profile text.
Lead scoring
Each lead that passes the hard filters is scored on two dimensions: ICP Score (0.0–1.0) — average of all soft-filter scores (industries, company_size, negative_keywords). Leads with no ICP configured receive 1.0.
Signal Score — based on:
- Engagement type: comment = 1.0, like = 0.7
- Recency: decays linearly over 14 days
- Keyword specificity: longer, more specific keywords score higher
composite = 0.5 × icp_score + 0.5 × signal_score
Leads are delivered via email digest and/or webhook after each daily run.