Systems Lab

Agent skill

trade-show-lead-recommender

Retrieve event exhibitor recommendations from Lensmor, separating populated ranking evidence from unranked fallback records.

activeNeeds a keyActs undeclared1,033 words

Filed under ABM and paid.

From LensmorOfficial/trade-show-skills · 15 skill entries · 48 · pushed 2026-10-08

What it does when it runs

Retrieve event exhibitor recommendations from Lensmor, separating populated ranking evidence from unranked fallback records.

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
  • LENSMOR_API_KEY
Hosts it reaches
  • api.lensmor.com
  • platform.lensmor.com
  • www.lensmor.com
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shell

Ask about trade-show-lead-recommender

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/trade-show-skills.git /tmp/trade-show-skills
git -C /tmp/trade-show-skills sparse-checkout set "trade-show-lead-recommender"
mkdir -p ~/.claude/skills/trade-show-lead-recommender
cp -R "/tmp/trade-show-skills/trade-show-lead-recommender/." ~/.claude/skills/trade-show-lead-recommender/

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.

Before you install: this skill will not complete its job on a bare agent. It needs LENSMOR_API_KEY, which you have to obtain separately.

Reproduced in full from LensmorOfficial/trade-show-skills/blob/9a0c2f7966085984c142c7049e371522c2054dd2/trade-show-lead-recommender/SKILL.md, which is licensed MIT (skill frontmatter). 1,033 words, 15 headings.

Lensmor Exhibitor Recommendations

Retrieve event-scoped exhibitor recommendations from Lensmor. The endpoint may return either populated recommendation metadata or an unranked event-exhibitor fallback. Never call fallback rows AI-ranked.

Example Requests

  • Who should we target at this show?
  • 推荐参展商
  • Ausstellerempfehlungen für mein ICP
  • おすすめ出展社を教えて
  • recomienda expositores por ICP

Request Handling

  • Every Lensmor request, including event lookup and pagination, must send Authorization: Bearer $LENSMOR_API_KEY. Send the key only to https://platform.lensmor.com; never include it in URLs, output, or requests to company/event websites.
  • Use a 10-second connection timeout and 30-second request timeout. Inspect the HTTP status before interpreting JSON; a non-2xx response, malformed JSON, or missing required response fields is a failed request, not an empty result or a zero score.
  • Start with one page (page=1, pageSize at most 100). Preserve filters across pages and disclose partial coverage. Do not fetch every page automatically.
  • For a read-only GET, allow at most one retry after a 429 or temporary 5xx, respecting Retry-After; if the delay is unavailable or impractical, report the failure and stop. Do not retry a POST automatically. A timeout may leave its outcome unknown, especially for a charged search.
  • If event lookup returns multiple editions, ask for the intended year/edition before continuing. Use the resolved event ID, never a sample ID from this document.

Workflow

Step 1: API Key Check

[ -n "${LENSMOR_API_KEY:-}" ] && echo "ok" || echo "missing"

If missing, stop and direct the user to obtain a Lensmor API key. Never print its value.

Step 2: Resolve the Event

If only a show name is available, call:

GET https://platform.lensmor.com/external/events/list?keyword={show+name}

Authenticate the event lookup as well as the recommendation request. Every Lensmor API call in this workflow must send Authorization: Bearer $LENSMOR_API_KEY; never call the event lookup without the header.

curl --connect-timeout 10 --max-time 30 --fail-with-body -sS "https://platform.lensmor.com/external/events/list?keyword=MEDICA%202026" \
  -H "Authorization: Bearer $LENSMOR_API_KEY"

Use the matching items[].id or items[].eventId. Confirm the year and edition before continuing. Do not use query= because it is not a supported event filter.

Step 3: Select Filters

The recommendations endpoint accepts:

ParameterTypeNotes
event_idstringRequired
locationstring or repeated stringCountry or region filter
searchQuerystringCompany-name or description search
exhibitorNamestring or repeated stringExact account filter
categorystring or repeated stringCategory filter
industrystring or repeated stringIndustry filter
employeesMin, employeesMaxintegerCompany-size range
page, pageSizeintegerPagination; max page size 100

Use repeated parameter names for arrays, for example:

event_id=12740&category=Medical%20Devices&category=Drug%20Delivery&page=1&pageSize=20

Step 4: Call the API

Endpoint: GET https://platform.lensmor.com/external/profile-matching/recommendations/exhibitors

Authentication: Authorization: Bearer $LENSMOR_API_KEY

Step 5: Classify the Response Mode

The response contains items, pagination fields, and may contain:

  • recommendationProcessing
  • show_refresh_hint

Item recommendation fields include:

  • isRecommended
  • recommendationRank
  • matchStatus
  • matchScore
  • matchTier
  • reason

Apply this gate before writing the result:

  1. Processing — if recommendationProcessing is true, say recommendations are still processing. Do not rank the rows.
  2. Ranked recommendations — use this label only when returned items contain meaningful recommendation evidence such as isRecommended: true, a non-null recommendationRank, matchScore, matchTier, or reason.
  3. Unranked fallback — if recommendation fields are null/false across the returned rows, label them event exhibitor records, not AI recommendations. Preserve the API order but do not interpret it as ranking.
  4. If show_refresh_hint is true, report only: The API returned show_refresh_hint=true; this flag does not identify a cause or required action. Do not mention profile updates or prescribe changes unless the API returns that instruction separately.

Useful company fields include companyName, description, website, country, industry, categories, employeeCount, fundingRound, and techStacks.

Step 6: Format the Output

For populated recommendations:

## Exhibitor Recommendations — [Show]

Found [total] records; [N] returned rows contain recommendation evidence.

| Rank | Company | Match | Tier | Why |
|---:|---|---:|---|---|
| [recommendationRank] | [Company](website) | [matchScore] | [matchTier] | [reason] |

For fallback results:

## Event Exhibitors — Recommendation Data Not Available

The API returned [total] event exhibitors, but the current page does not contain populated recommendation scores, ranks, or reasons. The order below is not an ICP ranking.

| Company | Industry | Categories | Employees | Country |
|---|---|---|---:|---|
| [Company](website) | [industry] | [categories] | [employeeCount] | [country] |

[Show refresh hint, if returned]

Error Handling

ConditionResponse behavior
401API key invalid or expired
404Event ID was not found; resolve the current edition again
429Wait for the rate-limit window and retry
total: 0Loosen filters one at a time
Recommendation fields emptyUse the unranked fallback format

Follow-up Routing

  • Populated ranked result → trade-show-contact-finder for the top accounts
  • Fallback result → use trade-show-exhibitor-search for factual filtering; do not prescribe profile changes from fallback state alone
  • Need outreach → booth-invitation-writer
  • Need an event-level go/no-go decision → trade-show-fit-score

Output Rules

  1. Never output LENSMOR_API_KEY or raw authorization headers.
  2. Do not call results AI-ranked unless recommendation metadata is populated.
  3. Do not invent a match reason from category, funding, or tech-stack fields.
  4. If you add your own operational interpretation, label it separately from Lensmor's returned recommendation.
  5. Preserve returned rank and score values exactly; do not fill null fields.
  6. Treat fundingRound and company metadata as potentially stale profile signals.
  7. If there are more pages, offer to continue and retain the active filters.
  8. Format public URLs as Markdown links.
  9. Render null company fields as "Not available" in user-facing tables; never fill them from inference.
  10. Never say recommendation data can be unlocked or enabled by profile changes based only on show_refresh_hint.
  11. When show_refresh_hint is the only signal, do not mention profile updates at all; report the flag and its uncertainty boundary only.
  12. When routing to trade-show-contact-finder, say find relevant contacts; do not promise decision-makers or verified authority.

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 trade-show-lead-recommender 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.