AXe Skills HubSearch /

← All skills

imi-pulse-intelligence

AXe First-party 

Reference: full SKILL.md

Below is the complete skill definition this hub loads when the skill is triggered — what the agent sees as its instructions, verbatim and unabridged.

IMI Pulse™ Intelligence Framework

This skill gives Claude a complete reasoning framework for IMI Pulse™ — the proprietary

always-on consumer intelligence platform that is the backbone of IMI's Discover capability.

Pulse™ tracks consumer passion points (interests, activities, lifestyle preferences) across

1,200+ categories, 600 brands, 400 product categories, and 18 countries. It is the largest

proprietary passion-point dataset in the market research industry.

Core Concept: What Is a Passion Point?

A passion point is any interest, activity, hobby, lifestyle preference, or cultural affinity

that a consumer identifies with. Pulse™ tracks over 1,200 of these — from "craft beer" to

"Formula 1" to "sustainable living" to "K-pop."

Why passion points matter more than demographics:

Demographics tell you WHO someone is. Passion points tell you WHAT THEY CARE ABOUT.

Two 35-year-old women with household income $80K can have completely different passion

profiles — one is a marathon runner obsessed with clean eating; the other is a gamer who

follows esports. They need different messages, different channels, different brand voices.

IMI's core insight: Passion points are the bridge between brand strategy and consumer

behaviour. A brand that aligns with its audience's passions earns permission to be present

in their lives.

The Pulse™ Analytical Framework

Stage 1: Audience Definition

Before analysing passion points, define the audience precisely.

Primary audience dimensions in Pulse™:

  • Country (18 markets)
  • Age band (Gen Z / Millennials / Gen X / Boomers)
  • Gender
  • Category usage (users vs. non-users of a product category)
  • Brand usage (users of Brand A vs. Brand B)
  • Custom segments (imported from client segmentations)

Worked example — defining the audience:

Business question: "What passion points define heavy energy drink consumers aged 18-34 in the UK?"

Audience definition:
  - Country: UK
  - Age: 18-34
  - Category: Energy drinks
  - Usage level: Heavy (3+ per week)
  - Comparison group: Category non-users, same age/country

SQL for audience extraction:

SELECT
    r.respondent_id,
    r.country,
    r.age_band,
    r.gender,
    cu.category_usage_level,
    cu.brand_usage
FROM pulse_respondents r
JOIN pulse_category_usage cu
    ON r.respondent_id = cu.respondent_id
WHERE r.country = 'UK'
    AND r.age_band IN ('18-24', '25-34')
    AND cu.category_id = 'ENERGY_DRINKS'
    AND cu.usage_level = 'HEAVY';

Stage 2: Passion Point Profiling

Once the audience is defined, profile their passion points against a comparison group.

The key metric: Indexing

A passion point's INDEX tells you how much more (or less) likely your target audience is

to be passionate about something compared to the general population (or a comparison group).

Index = (% of target audience passionate about X) / (% of comparison group passionate about X) × 100
  • Index 100 = same as average
  • Index 130 = 30% more likely than average
  • Index 70 = 30% less likely than average

Significance thresholds for Pulse™ indexing:

  • Index 120+ = Notable over-index (worth investigating)
  • Index 140+ = Strong over-index (high strategic relevance)
  • Index 160+ = Defining passion point (core to this audience's identity)
  • Index below 80 = Notable under-index (audience actively avoids or ignores this)

SQL for passion point indexing:

WITH target AS (
    SELECT
        pp.passion_point_id,
        pp.passion_point_name,
        pp.passion_point_category,
        COUNT(DISTINCT CASE WHEN ppr.passion_level >= 4 THEN ppr.respondent_id END) AS target_passionate,
        COUNT(DISTINCT ppr.respondent_id) AS target_total
    FROM pulse_passion_responses ppr
    JOIN pulse_passion_points pp ON ppr.passion_point_id = pp.passion_point_id
    WHERE ppr.respondent_id IN (/* target audience subquery */)
    GROUP BY pp.passion_point_id, pp.passion_point_name, pp.passion_point_category
),
comparison AS (
    SELECT
        pp.passion_point_id,
        COUNT(DISTINCT CASE WHEN ppr.passion_level >= 4 THEN ppr.respondent_id END) AS comp_passionate,
        COUNT(DISTINCT ppr.respondent_id) AS comp_total
    FROM pulse_passion_responses ppr
    JOIN pulse_passion_points pp ON ppr.passion_point_id = pp.passion_point_id
    WHERE ppr.respondent_id IN (/* comparison group subquery */)
    GROUP BY pp.passion_point_id
)
SELECT
    t.passion_point_name,
    t.passion_point_category,
    ROUND(100.0 * t.target_passionate / t.target_total, 1) AS target_pct,
    ROUND(100.0 * c.comp_passionate / c.comp_total, 1) AS comp_pct,
    ROUND(
        (100.0 * t.target_passionate / t.target_total) /
        NULLIF(100.0 * c.comp_passionate / c.comp_total, 0) * 100,
    0) AS index_vs_comparison,
    t.target_total AS base_n
FROM target t
JOIN comparison c ON t.passion_point_id = c.passion_point_id
WHERE t.target_total >= 100  -- minimum base size
ORDER BY index_vs_comparison DESC;

Stage 3: Passion Point × Brand Alignment Matrix

The most powerful Pulse™ analysis: mapping a brand's audience passion profile against the

passion profiles of competing brands, sponsorship properties, or media channels.

The alignment score:

Alignment Score = correlation between Brand A's passion point index profile
                  and Property/Channel X's passion point index profile

A high alignment score means the brand's audience and the property's audience care about

the same things. This is the foundation of sponsorship strategy, media planning, and

partnership evaluation.

Interpreting alignment scores:

  • 0.70+ = Strong alignment (audiences share core passions — high fit)
  • 0.50-0.69 = Moderate alignment (some shared passions — worth exploring)
  • 0.30-0.49 = Weak alignment (limited overlap — proceed with caution)
  • Below 0.30 = Poor alignment (audiences are fundamentally different)

Python for alignment matrix:

import pandas as pd
import numpy as np
from scipy.stats import pearsonr

def compute_alignment_matrix(passion_index_df, entities):
    """
    passion_index_df: DataFrame with columns [entity, passion_point, index_score]
    entities: list of brand/property names to compare
    Returns: correlation matrix of passion point profiles
    """
    pivot = passion_index_df.pivot_table(
        index='passion_point',
        columns='entity',
        values='index_score'
    ).dropna()

    n = len(entities)
    matrix = pd.DataFrame(np.zeros((n, n)), index=entities, columns=entities)

    for i, e1 in enumerate(entities):
        for j, e2 in enumerate(entities):
            if i <= j:
                corr, pval = pearsonr(pivot[e1], pivot[e2])
                matrix.loc[e1, e2] = round(corr, 3)
                matrix.loc[e2, e1] = round(corr, 3)

    return matrix

# Example usage:
# alignment = compute_alignment_matrix(df, ['BrandX', 'Premier League', 'Love Island', 'Glastonbury'])

Stage 4: Competitive Brand Mapping

Use Pulse™ to map a brand's competitive landscape by comparing passion point profiles.

The competitive map has two dimensions:

  • Audience overlap — How much do two brands' audiences share the same passion points?
  • Positioning differentiation — Which passion points distinguish Brand A from Brand B?

Identifying white space:

A passion point that indexes high for the CATEGORY but low for ALL EXISTING BRANDS

represents white space — an unoccupied territory that a brand could claim.

def find_white_space(category_index, brand_indices, threshold=130):
    """
    category_index: Series of passion point indices for the category
    brand_indices: dict of {brand_name: Series of passion point indices}
    threshold: minimum category index to qualify as a category passion point
    Returns: passion points that index high for category but low for all brands
    """
    category_passions = category_index[category_index >= threshold].index

    white_space = []
    for pp in category_passions:
        claimed = False
        for brand, indices in brand_indices.items():
            if pp in indices.index and indices[pp] >= 120:
                claimed = True
                break
        if not claimed:
            white_space.append({
                'passion_point': pp,
                'category_index': category_index[pp],
                'max_brand_index': max(
                    indices.get(pp, 100) for indices in brand_indices.values()
                )
            })

    return pd.DataFrame(white_space).sort_values('category_index', ascending=False)

Stage 5: GenPulse™ — Gen Z Intelligence

GenPulse™ is Pulse™'s dedicated Gen Z module. It tracks 18-27-year-olds specifically,

with additional passion points relevant to younger consumers (e.g., TikTok culture, gaming,

sustainability activism, creator economy).

Key GenPulse™ principles:

  • Gen Z passion points are MORE VOLATILE than older cohorts — profiles shift quarter to quarter
  • Gen Z over-indexes on digital/social passion points but ALSO on cause-related passions
  • Gen Z brand relationships are LESS LOYAL — passion point fit matters more than heritage
  • GenPulse™ data should ALWAYS be compared to Millennial data, not just general population

GenPulse™ analytical framework:

Step 1: Profile Gen Z passion points (vs. Millennials as comparison)
Step 2: Identify passion points UNIQUE to Gen Z (high Gen Z index, low Millennial index)
Step 3: Map client brand against Gen Z passion profile
Step 4: Identify passion-point gaps (Gen Z cares about X, brand is not present in X)
Step 5: Recommend activation strategies tied to specific passion points

Output Templates

Template 1: Passion Point Profile Summary

## Passion Point Profile: [Audience Name]
**Base:** n=[base size] | **Market:** [country] | **Period:** [date range]

### Defining Passion Points (Index 160+)
| Passion Point | Target % | Index | Category |
|---|---|---|---|
| [name] | [%] | [index] | [category] |

### Strong Over-Indexes (Index 140-159)
| Passion Point | Target % | Index | Category |
|---|---|---|---|

### Notable Over-Indexes (Index 120-139)
| Passion Point | Target % | Index | Category |
|---|---|---|---|

### Key Under-Indexes (Index <80)
| Passion Point | Target % | Index | Category |
|---|---|---|---|

### Essential Insight
[One sentence: what this passion profile tells us about this audience that changes the strategy]

### Recommended Actions
1. [Action tied to a specific passion point finding]
2. [Action tied to a specific passion point finding]
3. [Action tied to a specific passion point finding]

Template 2: Brand × Passion Point Alignment Report

## Brand-Property Alignment: [Brand] × [Property/Channel]
**Alignment Score:** [0.XX] — [Strong/Moderate/Weak/Poor]

### Shared High-Index Passion Points
| Passion Point | Brand Index | Property Index |
|---|---|---|

### Brand-Only Passion Points (high for brand, low for property)
| Passion Point | Brand Index | Property Index |

### Property-Only Passion Points (high for property, low for brand)
| Passion Point | Brand Index | Property Index |

### Strategic Implication
[What this alignment means for partnership/sponsorship/media decisions]

### Recommendation
[Go / Explore further / Do not proceed] — [rationale]

Template 3: Competitive Positioning Map

## Competitive Passion Point Map: [Category]
**Brands analysed:** [list] | **Market:** [country]

### Alignment Matrix
|  | Brand A | Brand B | Brand C |
|---|---|---|---|
| Brand A | 1.000 | [corr] | [corr] |
| Brand B | [corr] | 1.000 | [corr] |
| Brand C | [corr] | [corr] | 1.000 |

### Differentiated Positioning
- **Brand A owns:** [passion points unique to Brand A]
- **Brand B owns:** [passion points unique to Brand B]

### White Space Opportunities
| Passion Point | Category Index | Highest Brand Index |
|---|---|---|

### Essential Insight
[One sentence: the competitive positioning opportunity]

Scoring System: Passion Point Strategic Relevance

When prioritising which passion points to activate against, use this scoring framework:

FactorWeightScore 1-5Description
Index strength30%1=100-119, 2=120-139, 3=140-159, 4=160-179, 5=180+How strongly the audience over-indexes
Audience reach25%Based on % of target passionateHow many of the target audience care about this
Brand fit20%Subjective assessmentHow naturally the brand can play in this space
Competitive vacancy15%Based on competitor indicesWhether competitors have already claimed this passion
Activation feasibility10%Practical assessmentHow easily the brand can activate against this passion point

Total Score = weighted sum. Above 3.5 = high priority. 2.5-3.5 = medium. Below 2.5 = low.

Common Pitfalls in Pulse™ Analysis

  • Indexing without base size check. An index of 300 on a base of n=15 is meaningless.

Always enforce minimum base sizes (n=100 for country-level, n=50 for sub-segments).

  • Confusing incidence with index. A passion point with 80% incidence and index 105

is not a differentiator — everyone cares about it. Look for HIGH INDEX, not just high incidence.

  • Ignoring passion point volatility. Some passion points (e.g., trending entertainment)

are highly seasonal. Always check whether an over-index is structural or momentary.

  • Over-reading alignment scores. A correlation of 0.55 is moderate, not strong. Do not

recommend a major sponsorship on moderate alignment alone.

  • Treating Pulse™ as a tracking study. Pulse™ is a profiling tool, not a tracking tool.

It tells you what an audience looks like today — it is not designed for wave-over-wave trending.

Cross-Skill References

  • For SQL queries over Pulse™ databases → imi-rag-sql-intelligence
  • For using Pulse™ insights in sponsorship evaluation → imi-sponsorship-intelligence
  • For Gen Z segmentation beyond passion points → imi-segmentation-engine
  • For translating Pulse™ findings into client deliverables → imi-client-deliverable
  • For using Pulse™ as proof points in pitches → imi-pitch-intelligence

IMI's Core Philosophy Applied to Pulse™

The core question: "How little do you have to spend to get the desired change?"

In Pulse™ terms: Which SINGLE passion point, if activated, would most efficiently shift

the brand's relationship with its target audience?

Solutions over data. A Pulse™ export with 1,200 passion point indices is not an output.

The output is: "Your audience's defining passion is X. Your competitors have not claimed it.

Here is how to activate against it."

Essential insight, not noise. From 1,200+ passion points, surface the 3-5 that actually

change the strategy. Everything else is context, not insight.

*Built for IMI International's Local AI — grounded in Pulse™, the world's largest proprietary

passion-point consumer intelligence platform.*

*Purpose: Insight. Method: Rigour. Outcome: Profit.*

AXE MCP Server Integration

Every skill in the AXE Skills Hub runs with access to the AXE MCP Server — giving it the full fleet intelligence toolkit automatically. No setup required; tools are available in any AXE-powered session.

Core Tools Available

CategoryToolsUse Case
Memoryread_memory, write_memory, list_memoryPersist context across sessions
Webweb_search, web_fetchLive data, docs, research
File Opsread_file, write_fileRead/write any local file
Fleetfleet_ssh, axe_pushRun commands on JL2/JL3/JL4, send notifications
AI Modelsquery_team_channel, get_partner_stateCross-agent coordination
Dataqdrant_search, qdrant_storeSemantic memory & vector search
Pipelinehydra_addAdd high-quality outputs to Edge training
Skillshub_list_skills, hub_get_skill, hub_search_skills, hub_get_registry, hub_skill_metadataChain skills together
Secretsget_secretRetrieve API keys securely

Quick Start

# In any AXE session, tools are pre-loaded. Example chaining:

# 1. Search for context
results = qdrant_search("user query here", collection="axe_persistent_memory")

# 2. Fetch live data if needed
content = web_fetch("https://docs.example.com/api")

# 3. Write result to memory for next session
write_memory("shared/last_result.md", output)

# 4. Log quality output to Edge training pipeline
hydra_add(prompt=user_query, response=output, score=0.9, source="skill-name")

Edge Training Integration

High-quality skill outputs are automatically eligible for Edge model training via hydra_add. When a response scores ≥0.85 in evals, pipe it to the Hydra pipeline to compound Edge's knowledge. This is how skills make Edge smarter over time.

# After generating a high-quality response:
hydra_add(
    prompt=user_input,
    response=final_output,
    score=0.9,          # eval score
    source="skill-name" # tracks provenance
)

Metadata

Category
Business Intelligence
Tier
community
Version
1.0.0
License
MIT
Path
skills/imi-pulse-intelligence/SKILL.md

Use with an agent

Fetch this skill’s definition over the open API — no key required.

curl -s /v1/skills/imi-pulse-intelligence

View source ↗