Systems Lab

Agent skill

research-people

Find redacted Lensmor contacts by event or company and resolve person candidates for reverse event attendance lookup; hand paid directory access, lookups and contact unlocks to manage-contact-actions.

activeReaches the webInstructions only973 words

Filed under ABM and paid.

From LensmorOfficial/event-to-pipeline · 7 skill entries · 2 · pushed 2026-11-02

What it does when it runs

Find redacted Lensmor contacts by event or company and resolve person candidates for reverse event attendance lookup; hand paid directory access, lookups and contact unlocks to manage-contact-actions.

Automated analysis of the skill and the 2 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
  • platform.lensmor.com
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about research-people

Opens your assistant with this page's recorded context. Check the linked sources before relying on it.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/LensmorOfficial/event-to-pipeline.git /tmp/event-to-pipeline
git -C /tmp/event-to-pipeline sparse-checkout set "skills/research-people"
mkdir -p ~/.claude/skills/research-people
cp -R "/tmp/event-to-pipeline/skills/research-people/." ~/.claude/skills/research-people/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from LensmorOfficial/event-to-pipeline/blob/ced49373c570cd76908d7784033f60cf2f9338a4/skills/research-people/SKILL.md, which is licensed MIT (repository). 973 words, 9 headings.

Lensmor People Research

Evidence and delivery boundaries

Treat tool data as observations within the returned scope. An exact domain resolves a stored domain group, not a legal entity or parent/subsidiary relationship. Differences in headquarters, names or LinkedIn pages require verification; they do not establish that companies are unrelated. A regional job title is a responsibility-review flag, not enough to exclude a person from another market without the user's role criteria. Never generalize industry-wide data coverage from one sample.

For contact fields, use field_availability when returned. NOT_CHECKED, null and redaction mean availability has not been established. contact_unlock_status describes email access only; it says nothing about phone availability. Say "Email/Phone availability has not been checked" unless an authenticated field result supports a stronger statement. Do not promise a value will exist after purchase.

Task fit

Find redacted contact summaries within an event or company. Tool names are logical names; the host assigns the namespace.

Scope and clarification

Reuse resolved scope and user-stated industry, role and seniority without adding departments or adjacent requirements. Actual tool scope status decides whether clarification is needed; do not automatically choose a candidate or year. Preserve exact-match requests. Never broaden after an empty result without permission; follow the contact-research descriptor's explicit scope-control parameters.

Cross-tool steps

For event + company-topic + role research, use research_event_contacts once rather than resolving exhibitors and paging contacts per exhibitor. For simpler directories, use discover_event_contacts when scope is unknown or search_event_contacts when an event is resolved.

For company-first requests, prefer a supplied domain and use resolve_company_contacts for combined resolution and discovery, or search_companies then search_company_contacts when separate resolution is useful. Do not require an event for company-only research.

For a person's attendance history, reuse an already resolved contact or use search_people_for_event_lookup with their name and supplied LinkedIn/company identity. Candidate pages use the daily search allowance but do not consume Credits. Preserve returned grouped identities and clarify ambiguous people before handing the selected handles and filters to manage-contact-actions for the paid query.

For an explicit request to unlock a whole event's remaining contact list, hand off event access rather than quoting emails for visible people. Distinguish the base directory from Visitor access using returned rights, and resume the same filtered list after success.

Free reads and requested pagination need no extra permission or balance check. Reuse returned cursors and honor access windows; do not remove filters to collect more free rows.

Result and handoff

Render contact rows being delivered to the user as a Markdown table. Intermediate searches used to compare or select candidates are analysis inputs, not separate deliverables; do not render or export each search automatically. For a top, priority or selected N request, deliver one final selected table in ranked order, with exactly those rows in its CSV; do not substitute the whole source query or attach intermediate and zero-row CSVs. Every contact table must contain these columns in this order: Name, Job Title, Company Name, Management Level, and LinkedIn URL, labeled in the user's language. These five fields are mandatory even for a single row and even when the user asks for additional fields; append requested extra columns after them. Map them from full_name, title, company_name, management_level, and linkedin_url. Preserve returned order for unranked lists and use an unavailable marker for missing values; never omit a mandatory column.

Apply this mandatory contact-row contract to research_event_contacts, search_event_contacts, discover_event_contacts, search_company_contacts, resolve_company_contacts, and their legacy equivalents.

When search_companies or resolve_company_contacts returns company candidates, render that company list using the exhibitor/company contract: Company Name, Company URL, Industry, Company HQ, Employee Size, and Company LinkedIn URL.

LinkedIn URL is free profile data, not a paid or locked contact field. Show every returned LinkedIn URL without requesting confirmation, quoting Credits, or handing it to an unlock tool. Only email and phone may require their respective field unlocks.

Show returned match confidence and lock status when relevant. Distinguish unavailable coverage from no matches. Never infer or complete redacted emails or phones, or expose handles and internal metadata. When the user requests email/phone pricing, unlocking, recovery or outreach, hand off only the resolved selection to manage-contact-actions; do not expand it or treat a directory request as a contact unlock. For an explicit export to a connected destination, hand off the exact selected event contacts to its trusted export workflow. Company-only contacts without one event are not eligible for that export; do not silently add event scope. This research Skill does not execute external writes or admin operations.

Contact research inputs

When using research_event_contacts, reuse event_handle when resolved; if no resolution has been attempted, use event_keyword and a user-supplied event_year. Never use keyword resolution as a fallback after a non-retryable resolution failure. Preserve the original language in company_topic and role_topic. Set auto_broaden=false and use_web_enrichment=false unless the user explicitly authorizes the respective expansion. Use match_mode=strict for exact requirements and balanced otherwise; use the requested limit up to 50 or the tool default of 20. Do not send unsupported location, seniority, cursor, or pagination fields to this ranked-research tool.

Management level display

Display exactly one Management Level column (管理层级 in Chinese). Prefer management_level; the legacy seniorityLevel field represents that same level. Do not generate an additional Seniority/资历 column, and do not infer a missing management level from title or seniority. For display only, use the product labels: owner → Owner; partner → Partner; c_suite → C-Suite; vp → VP; director → Director; head → Head; manager → Manager; senior → Senior; mid_level → Mid Level; entry → Entry; assistant → Assistant; unspecified → Unspecified. Keep raw enum values unchanged for filters and sorting. Use the existing unavailable marker only in Management Level when its value is missing.

Research mode

Research uses the account's existing access. For invitation drafts, use booth-invitation-writer with the available facts. Purchases and external writes require a separate workflow and explicit user authorization.

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what research-people does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.

Build my GTM engine

Tell us what you want to improve. Fedor reviews the workflow and replies by email when there is a useful fit.

Fedor reviews every request personally. If there is a useful fit, he will reply by email.