executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
trade-show-fit-scoreRetrieve one event’s Lensmor 0–10 profile fit score and returned dimensions; distinguish API signals from exhibit decisions.
Independent GitHub snapshot · Automated classification · Original documentation governs
Score a specific trade show against your company's profile using the Lensmor API to get a data-backed recommendation on whether to exhibit, attend, or skip.
When this skill triggers:
event_id for the named show if not already providedtrade-show-finder for manual scoring or when Lensmor API access is unavailableAuthorization: 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.page=1, pageSize at most 100). Preserve filters across pages and disclose partial coverage. Do not fetch every page automatically.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.Before making any API call, verify the key is configured:
[ -n "${LENSMOR_API_KEY:-}" ] && echo "ok" || echo "missing"
If the result is missing, stop and respond:
The
LENSMOR_API_KEYenvironment variable is not set. This skill requires a Lensmor API key to generate fit scores. Configure an existing Lensmor API key in the agent environment; see the authentication documentation:export LENSMOR_API_KEY=your_key_here
Do not proceed to any API call until the key is confirmed present.
The fit-score endpoint requires a Lensmor event_id. If the user only has a show name, look it up first:
Endpoint: GET https://platform.lensmor.com/external/events/list?keyword={show+name}
Authentication: Authorization: Bearer $LENSMOR_API_KEY
The response is paginated under items. Pick the id or eventId that matches the show, year, and edition the user intends. Do not use query=: the current API ignores that parameter and returns an unfiltered event list.
If the user already has the event_id, skip directly to Step 3.
Endpoint: POST https://platform.lensmor.com/external/events/fit-score
Authentication: Authorization: Bearer $LENSMOR_API_KEY
Request body:
{
"event_id": "12740"
}
Response structure:
{
"event": {
"id": "12740",
"eventId": "12740",
"name": "MEDICA 2026",
"dateStart": "2026-11-16",
"dateEnd": "2026-11-19",
"city": "Düsseldorf",
"country": "Germany",
"url": "https://www.medica-tradefair.com"
},
"score": 7.8,
"recommendation": "recommended",
"breakdown": {
"profile_match": 7.8,
"matched_exhibitor_density": 4.2,
"event_scale": 1.4
}
}
Response field reference:
| Field | Type | Description |
|---|---|---|
event.id | string | Lensmor event ID |
event.name | string | Official show name |
event.eventId | string | Stable Lensmor event identifier |
event.dateStart / event.dateEnd | string | Show dates in ISO format |
event.city / event.country | string | Show location |
event.url | string | Event website URL when available |
score | number | Overall fit score on the API's 0–10 scale |
recommendation | string | API decision enum: recommended, consider, or not_recommended |
breakdown.profile_match | number | Company-profile match on a 0–10 scale |
breakdown.matched_exhibitor_density | number | Density derived from matched exhibitors, capped at 10 |
breakdown.event_scale | number | Scale derived from exhibitor count, capped at 10 |
Reject a missing, null, non-numeric, or out-of-range score; valid scores are numbers from 0 through 10. Do not convert a missing value to zero. Preserve unavailable breakdown fields as Not available.
## Event Fit Score — [Show Name]
[Show website link] | [dateStart]–[dateEnd] | [city], [country]
| Dimension | Score |
|-----------|-------|
| **Overall Fit** | **[score] / 10** |
| Profile Match | [breakdown.profile_match] |
| Matched Exhibitor Density | [breakdown.matched_exhibitor_density] |
| Event Scale | [breakdown.event_scale] |
**Decision**: [decision band — see table below]
**API Recommendation**: [exact `recommendation` enum]
**Interpretation**: [brief explanation grounded only in the returned score and three breakdown fields]
Exact-zero hard gate: If score == 0, use only this interpretation: The current API result is 0/10; this response does not identify the cause. The only permitted follow-up is independent event research with trade-show-finder. Do not mention profile validation, missing matches, database coverage, support, or possible causes anywhere in the response.
Apply this interpretation to every fit-score result:
| Score Range | Band | Decision |
|---|---|---|
| 7–10 | Recommended | Strong profile signal. Pressure-test execution cost before committing to exhibit. |
| 4–<7 | Consider | Mixed signal. Attend first or validate the weak dimensions before exhibiting. |
| 0–<4 | Not recommended | Low current API signal. Skip exhibiting unless there is a separate strategic reason. |
Breakdown dimension guidance:
profile_match is the primary company-profile signalmatched_exhibitor_density reflects matched exhibitor volume, not verified buyer or attendee densityevent_scale is derived from exhibitor count and does not measure geographic fit, content fit, or expected ROIevent_scale as large or small without a defined comparison baseline. Report the value and the returned event.exhibitorCount separately when helpful.event_scale, use: "The API returned event scale [X]/10 and event exhibitor count [Y]; this response does not define a qualitative size benchmark." Never call the count registered, official, total-market, minimal, or large.| HTTP Status | Meaning | Response |
|---|---|---|
| 401 | API key invalid or expired | "The API key was rejected. Verify LENSMOR_API_KEY or contact hello@lensmor.com." |
| 404 | Event ID not found | "Event ID [id] was not found. Use the events list endpoint to look up the correct ID." |
| 409 | Recommendation dependency is still processing | "Lensmor recommendations are still processing. Retry after the profile recommendation job completes." |
| 429 | Rate limit exceeded | Report the rate-limit response; follow the bounded request-handling rules above |
| 502 / 5xx | Server error | "The Lensmor API returned a server error. Try again in a moment." |
This skill calls the Lensmor API for a data-driven score on a single named event. Use trade-show-finder for:
The two skills are complementary: trade-show-finder helps you build the shortlist; trade-show-fit-score gives you a data-backed score on a specific candidate.
| Score outcome | Recommended next action |
|---|---|
| Score ≥ 7 | Run trade-show-lead-recommender and verify that recommendation metadata is populated |
| Score ≥ 7, budget pending | Run trade-show-budget-planner |
| Score < 4 | Run trade-show-finder to identify alternatives using independent event research |
| Multiple shows to compare | Score each via this skill, then rank by score field |
[text](url) — never bare linksLENSMOR_API_KEYtrade-show-findertotalPages > 1 in events list lookup, confirm the correct event before scoringevent.exhibitorCount as the count in the Lensmor event record, not an official or registered-exhibitor totalBefore delivering:
event_id resolves to the correct show, year, and edition — do not use an ID from a prior yearbreakdown is missing or partial, note which dimensions were unavailablerecommendation field is empty, present the numeric score alone and apply the interpretation guide