First-party
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:**
```sql
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:**
```sql
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:**
```python
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:**
1. **Audience overlap** — How much do two brands' audiences share the same passion points?
2. **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.
```python
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:**
1. Gen Z passion points are MORE VOLATILE than older cohorts — profiles shift quarter to quarter
2. Gen Z over-indexes on digital/social passion points but ALSO on cause-related passions
3. Gen Z brand relationships are LESS LOYAL — passion point fit matters more than heritage
4. 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
```markdown
## 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
```markdown
## 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
```markdown
## 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:
| Factor | Weight | Score 1-5 | Description |
|---|---|---|---|
| Index strength | 30% | 1=100-119, 2=120-139, 3=140-159, 4=160-179, 5=180+ | How strongly the audience over-indexes |
| Audience reach | 25% | Based on % of target passionate | How many of the target audience care about this |
| Brand fit | 20% | Subjective assessment | How naturally the brand can play in this space |
| Competitive vacancy | 15% | Based on competitor indices | Whether competitors have already claimed this passion |
| Activation feasibility | 10% | Practical assessment | How 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
1. **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).
2. **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.
3. **Ignoring passion point volatility.** Some passion points (e.g., trending entertainment)
are highly seasonal. Always check whether an over-index is structural or momentary.
4. **Over-reading alignment scores.** A correlation of 0.55 is moderate, not strong. Do not
recommend a major sponsorship on moderate alignment alone.
5. **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
| Category | Tools | Use Case |
|----------|-------|----------|
| **Memory** | `read_memory`, `write_memory`, `list_memory` | Persist context across sessions |
| **Web** | `web_search`, `web_fetch` | Live data, docs, research |
| **File Ops** | `read_file`, `write_file` | Read/write any local file |
| **Fleet** | `fleet_ssh`, `axe_push` | Run commands on JL2/JL3/JL4, send notifications |
| **AI Models** | `query_team_channel`, `get_partner_state` | Cross-agent coordination |
| **Data** | `qdrant_search`, `qdrant_store` | Semantic memory & vector search |
| **Pipeline** | `hydra_add` | Add high-quality outputs to Edge training |
| **Skills** | `hub_list_skills`, `hub_get_skill`, `hub_search_skills`, `hub_get_registry`, `hub_skill_metadata` | Chain skills together |
| **Secrets** | `get_secret` | Retrieve API keys securely |
### Quick Start
```python
# 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.
```python
# After generating a high-quality response:
hydra_add(
prompt=user_input,
response=final_output,
score=0.9, # eval score
source="skill-name" # tracks provenance
)
```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.
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.
Before analysing passion points, define the audience precisely.
Primary audience dimensions in Pulse™:
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';
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
Significance thresholds for Pulse™ indexing:
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;
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:
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'])
Use Pulse™ to map a brand's competitive landscape by comparing passion point profiles.
The competitive map has two dimensions:
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)
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:
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
## 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]
## 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]
## 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]
When prioritising which passion points to activate against, use this scoring framework:
| Factor | Weight | Score 1-5 | Description |
|---|---|---|---|
| Index strength | 30% | 1=100-119, 2=120-139, 3=140-159, 4=160-179, 5=180+ | How strongly the audience over-indexes |
| Audience reach | 25% | Based on % of target passionate | How many of the target audience care about this |
| Brand fit | 20% | Subjective assessment | How naturally the brand can play in this space |
| Competitive vacancy | 15% | Based on competitor indices | Whether competitors have already claimed this passion |
| Activation feasibility | 10% | Practical assessment | How 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.
Always enforce minimum base sizes (n=100 for country-level, n=50 for sub-segments).
is not a differentiator — everyone cares about it. Look for HIGH INDEX, not just high incidence.
are highly seasonal. Always check whether an over-index is structural or momentary.
recommend a major sponsorship on moderate alignment alone.
It tells you what an audience looks like today — it is not designed for wave-over-wave trending.
imi-rag-sql-intelligenceimi-sponsorship-intelligenceimi-segmentation-engineimi-client-deliverableimi-pitch-intelligenceThe 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.*
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.
| Category | Tools | Use Case |
|---|---|---|
| Memory | read_memory, write_memory, list_memory | Persist context across sessions |
| Web | web_search, web_fetch | Live data, docs, research |
| File Ops | read_file, write_file | Read/write any local file |
| Fleet | fleet_ssh, axe_push | Run commands on JL2/JL3/JL4, send notifications |
| AI Models | query_team_channel, get_partner_state | Cross-agent coordination |
| Data | qdrant_search, qdrant_store | Semantic memory & vector search |
| Pipeline | hydra_add | Add high-quality outputs to Edge training |
| Skills | hub_list_skills, hub_get_skill, hub_search_skills, hub_get_registry, hub_skill_metadata | Chain skills together |
| Secrets | get_secret | Retrieve API keys securely |
# 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")
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
)
Fetch this skill’s definition over the open API — no key required.
curl -s /v1/skills/imi-pulse-intelligence