Lensmor Contact Finder
Find decision-makers and key contacts at target exhibitor companies using the Lensmor API — then connect on LinkedIn with a personalized outreach sequence.
When this skill triggers:
- - Run the API key check (Step 1) before any API call
- Collect the target company name and optional role/function filter
- Call the contacts search endpoint and return a prioritized contact table
- Hand off to
trade-show-linkedin-templates for outreach copy
Use Cases
- - Pre-show outreach: Identify the right buyer or champion at a target exhibitor before the show
- Booth meeting scheduling: Find titles to target for pre-scheduled booth meetings
- Account-based research: Build a contact list for a shortlist of exhibitor companies
Important: Email Not Available
The Lensmor contacts API does not return email addresses. LinkedIn is the primary contact channel. All outreach recommendations in this skill assume LinkedIn messaging.
Workflow
Step 1: API Key Check
Before making any API call, verify the key is configured:
CODEBLOCK0
If the result is missing, stop and respond:
The LENSMOR_API_KEY environment variable is not set. This skill requires a Lensmor API key to search contacts.
Contact hello@lensmor.com to purchase access, then set the key:
INLINECODE3
Do not proceed to any API call until the key is confirmed present.
Step 2: Collect Inputs
Required:
- -
company_name — Full or partial company name (1–200 characters), e.g. INLINECODE5
Optional:
- -
role — Role or function filter. Examples: VP Sales, Marketing, Procurement, CTO, INLINECODE11 - INLINECODE12 — Page number (default: 1)
- INLINECODE13 — Results per page (default: 20, max: 100)
If the user provides a list of companies from a prior lensmor-exhibitor-search or lensmor-recommendations run, process each company sequentially and label sections clearly.
Role filter guidance: use broad department terms (Marketing, Operations, Engineering) for wide coverage, or specific titles (VP Sales, Head of Procurement) for precision targeting.
Step 3: Call the API
Endpoint: INLINECODE21
Authentication: INLINECODE22
Query parameters:
| Parameter | Required | Description |
|---|
| INLINECODE23 | Yes | Company name to search |
| INLINECODE24 |
No | Role or function filter |
|
page | No | Page number (default: 1) |
|
pageSize | No | Results per page (default: 20, max: 100) |
Step 4: Interpret the Response
Response envelope:
CODEBLOCK1
Item field reference:
| Field | Type | Description |
|---|
| INLINECODE27 | string | Lensmor internal contact ID |
| INLINECODE28 |
string | Contact's full name |
|
title | string | Job title as listed on their profile |
|
department | string | Department or function (e.g.
Sales,
Operations,
Engineering) |
|
seniorityLevel | string |
Executive,
Director,
Manager, or
Individual Contributor |
|
linkedinUrl | string | LinkedIn profile URL — primary outreach channel |
|
companyName | string | Company they work at (confirms match to queried company) |
|
sourceType | string | Data provenance:
linkedin,
company_website,
event_registration, etc. |
Outreach priority signals:
| Signal | Priority Implication |
|---|
| INLINECODE45 | Decision-maker — concise, high-value pitch |
| INLINECODE46 |
Budget holder or strong influencer — primary target |
|
seniorityLevel: Manager | Champion or evaluator — good for discovery conversations |
|
seniorityLevel: Individual Contributor | Use for introductions or referrals |
|
department matches buyer function | Higher-priority than cross-functional contacts |
|
linkedinUrl present | Ready for direct LinkedIn outreach |
Sort order: Executive > Director > Manager > Individual Contributor within the same department. Within the same seniority, prioritize by department match to the user's target buyer function.
Step 5: Format the Output
Open with a result count summary, then deliver a prioritized table and outreach notes.
CODEBLOCK2
Error Handling
| HTTP Status | Meaning | Response |
|---|
| 401 | API key invalid or expired | "The API key was rejected. Verify LENSMOR_API_KEY or contact hello@lensmor.com." |
| 400 |
Missing required parameter | "The request is missing
company_name. Provide a company name to search." |
| 429 | Rate limit exceeded | "Rate limit reached. Wait 60 seconds and retry." |
| 502 / 5xx | Server error | "The Lensmor API returned a server error. Try again in a moment." |
|
total: 0 | No contacts found | "No contacts found for
[company_name] with role filter
[role]. Try broadening the role filter (e.g. use 'Marketing' instead of 'VP Marketing') or check the company name spelling." |
Follow-up Routing
| User says | Recommended action |
|---|
| "draft a message for [contact]" | Run INLINECODE61 |
| "find more companies like this" |
Run
lensmor-recommendations or
lensmor-exhibitor-search |
| "find contacts at multiple companies" | Process each company sequentially with this skill |
| "show me more" / "next page" | Re-call with
page incremented by 1 |
Skill Coordination
Upstream — who feeds this skill:
- -
lensmor-exhibitor-search — produces the list of target companies - INLINECODE66 — produces AI-ranked companies for ICP match
Downstream — where contacts go next:
- -
trade-show-linkedin-templates — generates personalized LinkedIn outreach messages for each contact tier
Typical pre-show workflow:
- 1.
lensmor-recommendations → find matching exhibitors - INLINECODE69 (this skill) → find decision-makers at each company
- INLINECODE70 → draft personalized messages per seniority tier
Output Rules
- 1. All URLs formatted as
[text](url) — never bare links - Never output the value of INLINECODE72
- Never expose endpoint paths, raw curl commands, or internal token values in the response
- Employee counts above 1,000 shown as "1.2K"; above 1,000,000 as "1.2M"
- Empty results: report honestly, suggest broadening role filter — never fabricate contacts
- End every response with 1–3 contextual follow-up suggestions
- Never imply email availability — explicitly note that only LinkedIn profiles are returned
- When
totalPages > 1, prompt: "There are more contacts — say 'next page' to continue." - If API key is missing, direct user to hello@lensmor.com — do not just say "please configure"
- Open every response with "Found X contacts, showing Y."
Quality Checks
Before delivering:
- - Do not invent contacts or titles; use only what the API returns
- If
linkedinUrl is null, note that no LinkedIn profile is available and recommend manual search via LinkedIn Sales Navigator - If user asks for email addresses, explicitly state the API does not provide them
- Seniority priority is a guideline; surface the closest available match if target title differs
- For multi-company batch requests, process each company separately and label sections clearly
Contact data sourced from the Lensmor platform. For AI-powered exhibitor discovery, decision-maker identification, and pre-show outreach sequencing, see Lensmor.
Lensmor 联系人查找器
使用 Lensmor API 查找目标参展公司的决策者和关键联系人,然后通过 LinkedIn 发送个性化拓展序列。
当此技能触发时:
- - 在任何 API 调用前运行 API 密钥检查(步骤 1)
- 收集目标公司名称和可选的职位/职能筛选条件
- 调用联系人搜索端点并返回优先级排序的联系人表格
- 移交至 trade-show-linkedin-templates 生成拓展文案
使用场景
- - 展前拓展:在展会前识别目标参展商的正确买家或关键人物
- 展位会议安排:查找目标职位以安排预定的展位会议
- 基于客户的研究:为精选的参展公司建立联系人列表
重要提示:无邮箱信息
Lensmor 联系人 API 不返回邮箱地址。LinkedIn 是主要联系渠道。本技能中的所有拓展建议均假设使用 LinkedIn 消息。
工作流程
步骤 1:API 密钥检查
在进行任何 API 调用前,验证密钥是否已配置:
bash
[ -n $LENSMORAPIKEY ] && echo ok || echo missing
如果结果为 missing,停止并回复:
未设置 LENSMORAPIKEY 环境变量。此技能需要 Lensmor API 密钥才能搜索联系人。
联系 hello@lensmor.com 购买访问权限,然后设置密钥:
export LENSMORAPIKEY=yourkeyhere
在确认密钥存在之前,不要进行任何 API 调用。
步骤 2:收集输入
必填:
- - company_name — 完整或部分公司名称(1-200 个字符),例如 OperaOps
可选:
- - role — 职位或职能筛选条件。示例:VP Sales、Marketing、Procurement、CTO、Head of Operations
- page — 页码(默认:1)
- pageSize — 每页结果数(默认:20,最大:100)
如果用户提供了来自先前 lensmor-exhibitor-search 或 lensmor-recommendations 运行的公司列表,请依次处理每家公司并清晰标注各部分。
职位筛选指导:使用宽泛的部门术语(Marketing、Operations、Engineering)以获得广泛覆盖,或使用具体职位(VP Sales、Head of Procurement)进行精准定位。
步骤 3:调用 API
端点:GET https://platform.lensmor.com/external/contacts/search
认证:Authorization: Bearer $LENSMORAPIKEY
查询参数:
| 参数 | 必填 | 描述 |
|---|
| company_name | 是 | 要搜索的公司名称 |
| role |
否 | 职位或职能筛选条件 |
| page | 否 | 页码(默认:1) |
| pageSize | 否 | 每页结果数(默认:20,最大:100) |
步骤 4:解释响应
响应结构:
json
{
items: [...],
total: 18,
page: 1,
pageSize: 20,
totalPages: 1
}
项目字段参考:
| 字段 | 类型 | 描述 |
|---|
| id | 字符串 | Lensmor 内部联系人 ID |
| fullName |
字符串 | 联系人全名 |
| title | 字符串 | 个人资料中列出的职位 |
| department | 字符串 | 部门或职能(例如 Sales、Operations、Engineering) |
| seniorityLevel | 字符串 | Executive、Director、Manager 或 Individual Contributor |
| linkedinUrl | 字符串 | LinkedIn 个人资料 URL — 主要拓展渠道 |
| companyName | 字符串 | 其所在公司(确认与查询公司匹配) |
| sourceType | 字符串 | 数据来源:linkedin、company
website、eventregistration 等 |
拓展优先级信号:
| 信号 | 优先级含义 |
|---|
| seniorityLevel: Executive | 决策者 — 简洁、高价值推介 |
| seniorityLevel: Director |
预算持有者或强影响力者 — 主要目标 |
| seniorityLevel: Manager | 关键人物或评估者 — 适合探索性对话 |
| seniorityLevel: Individual Contributor | 用于引荐或推荐 |
| department 匹配买家职能 | 优先级高于跨职能联系人 |
| linkedinUrl 存在 | 可直接通过 LinkedIn 拓展 |
排序规则:同一部门内 Executive > Director > Manager > Individual Contributor。同一级别内,按 department 与用户目标买家职能的匹配度排序。
步骤 5:格式化输出
以结果数量摘要开头,然后提供优先级排序的表格和拓展说明。
markdown
[公司名称] 的联系人
找到 [total] 个联系人。显示第 [page] 页,共 [totalPages] 页,每页 [pageSize] 条。
职位筛选:[role 或 全部] | 注意:不提供邮箱地址 — LinkedIn 是主要拓展渠道。
| 优先级 | 姓名 | 职位 | 部门 | 级别 | LinkedIn |
|---|
| 1 | Sarah Chen | 采购副总裁 | 采购 | 总监 | LinkedIn |
| 2 |
Marcus Webb | 运营主管 | 运营 | 总监 |
LinkedIn |
| 3 | Priya Rao | 采购经理 | 采购 | 经理 |
LinkedIn |
拓展优先级说明
- - Sarah Chen(采购副总裁):主要目标 — 决策者权限,部门匹配
- Marcus Webb(运营主管):次要目标 — 在运营相关采购领域有强影响力
- Priya Rao(采购经理):关键人物候选人 — 实际评估者,适合探索性沟通
建议下一步:使用 trade-show-linkedin-templates 为每个级别起草个性化拓展信息。
错误处理
| HTTP 状态 | 含义 | 回复 |
|---|
| 401 | API 密钥无效或已过期 | API 密钥被拒绝。请验证 LENSMORAPIKEY 或联系 hello@lensmor.com。 |
| 400 |
缺少必填参数 | 请求缺少 company_name。请提供公司名称进行搜索。 |
| 429 | 超出速率限制 | 已达到速率限制。请等待 60 秒后重试。 |
| 502 / 5xx | 服务器错误 | Lensmor API 返回服务器错误。请稍后重试。 |
| total: 0 | 未找到联系人 | 未找到 [company_name] 在职位筛选 [role] 下的联系人。请尝试放宽职位筛选条件(例如使用 Marketing 代替 VP Marketing)或检查公司名称拼写。 |
后续路由
| 用户说 | 推荐操作 |
|---|
| 为 [联系人] 起草消息 | 运行 trade-show-linkedin-templates |
| 查找更多类似公司 |
运行 lensmor-recommendations 或 lensmor-exhibitor-search |
| 查找多家公司的联系人 | 使用此技能依次处理每家公司 |
| 显示更多 / 下一页 | 使用 page 加 1 重新调用 |
技能协调
上游 — 为此技能提供输入:
- - lensmor-exhibitor-search — 生成目标公司列表
- lensmor-recommendations — 生成 AI 排序的 ICP 匹配公司
下游 — 联系人的下一步去向:
- - trade-show-linkedin-templates — 为每个联系人层级生成个性化 LinkedIn 拓展消息
典型展前工作流程:
- 1. lensmor-recommendations → 查找匹配的参展商
- lensmor-contact-finder(此技能)→ 查找每家公司的决策者
- trade-show-linkedin-templates → 按级别起草个性化消息
输出规则
- 1. 所有 URL 格式化为 文本 — 绝不使用裸链接
- 绝不输出 LENSMORAPI_KEY 的值
- 绝不在响应中暴露端点路径、原始 curl 命令或内部令牌值
- 员工数超过 1,000 显示为 1.2K;超过