| name | poc-analysis |
| description | Runs an end-to-end POC health analysis and posts results to Slack. Use this skill when asked
to analyze, report on, or summarize the status of active POC (proof of concept) pilots.
The skill pulls active deals from the HubSpot "POC Pipeline / Pilot Kicked Off" stage,
fetches per-team usage metrics from Metabase (Usage Overview + User Breakdown tabs),
generates a written analysis of each company's POC health, and posts one Slack message
per company to a specified channel.
|
POC Analysis Skill
Required Environment Variables
HUBSPOT_ACCESS_TOKEN — HubSpot private app token (needs deals read scope)
METABASE_API_KEY — Metabase API key
POC_BOT_SLACK_TOKEN — Slack bot OAuth token (xoxb-...)
SLACK_CHANNEL — Target channel (default: #poc-bot)
Workflow
Step 1: Fetch Data
Run the fetch script to pull all companies and their Metabase metrics:
python3 scripts/fetch_poc_data.py
Dashboard cards, output labels, and parameter bindings are defined in
config/metabase_cards.json (override the path via METABASE_CARDS_CONFIG).
With the default labels, this writes /tmp/poc_data.json containing, per company:
name, team_id, demo_held_date, date_range (demo date → today)
usage_overview: total_primary_metric, users_on_team, active_users, wau, primary_feature_wau, secondary_feature_wau
user_breakdown: users_active_days (aggregate per user), users_daily_activity (per user per day)
See references/metabase_config.md for the full column schemas for these tables.
Step 2: Analyze
Before analyzing, read config/methodology.md for this deployment's primary
metric definition, user tier criteria, and summary framing guidance.
For each company in /tmp/poc_data.json:
Usage Overview (from usage_overview):
- Compute the activation rate and call out the primary metric total prominently
- Trace each weekly trend column week-over-week to identify growth, plateau, or decline
- Note any significant divergence between the general engagement trend and the primary metric trend
User Breakdown — categorize users into tiers (criteria in config/methodology.md):
- Power users: high primary metric, high activity signal
- Mid-tier: moderate primary metric, consistent presence
- Core-only: active
days_active but near-zero primary metric — using the product but not its key value feature; note as a growth opportunity
- Joined but inactive: low
days_active, last_active_day is recent but usage is minimal
- Never used:
last_active_day is null
Daily activity trends (from users_daily_activity):
- Identify users who started strong then fell off
- Identify users who started slow but are ramping
- Note bursty vs. consistent usage patterns
- Highlight if a user's primary metric usage is concentrated vs. broad
Step 3: Write Analysis JSON
Write /tmp/poc_analysis.json — a list of objects, one per company:
[
{
"company": "<Company Name>",
"text": "POC Analysis: <Company Name>",
"blocks": [ ...Slack Block Kit JSON... ]
}
]
Block Kit structure per company (in order):
header block — company name and date range
section with fields — key metrics: team size, active users, activation %, primary metric total, WAU trend, primary-feature WAU trend
divider
section — Power users bullet list
section — Mid-tier users bullet list
section — Engagement snapshot (core-only + inactive + never-used)
section — Summary (1–2 sentence synthesis of notable trends and patterns)
Keep each section block under 3,000 characters. Use *bold* for names and metric values.
Step 4: Post to Slack
python3 scripts/post_to_slack.py
Reads /tmp/poc_analysis.json and posts one top-level message per company to $SLACK_CHANNEL.
Reference
- Metabase dashboard structure, card IDs, and metric definitions:
references/metabase_config.md