Researches a customer before an interview by pulling usage data, financial info, feedback, and company context from multiple sources. Outputs a short summary and an HTML dossier. Use when asked to prepare for a customer interview, research a customer, or build a customer profile.
Run this skill when asked to:
| Input | Required | Notes |
|---|---|---|
| Customer identifier | Yes | Can be an account ID (PULSE_ACCOUNT_ID), company name, or email/domain |
| Website URL | Optional | If not provided, attempt to infer from the domain or ask the user |
If the identifier is ambiguous or returns multiple matches, present the options and ask the user to confirm.
user-kremer-mcp)| Tool | Purpose |
|---|
execute-sql-query | Run SQL against Snowflake for account data, campaigns, financials |
data-expert-agent | Explore data when schemas are unclear or for open-ended questions |
user-slack)| Tool | Purpose |
|---|---|
slack_search_public | Search channels for customer mentions, feedback, support threads |
slack_search_channels | Find relevant channels by name |
slack_read_channel | Read channel messages for context |
slack_read_thread | Read thread replies for full conversations |
user-mixpanel)| Tool | Purpose |
|---|---|
Run-Query | Query user-level behavioural events (best effort) |
| Tool | Purpose |
|---|---|
WebFetch | Pull the customer's website to understand their business |
user-gong)| Tool | Purpose |
|---|---|
search_calls | Search for calls involving this customer (by host or call ID) |
get_call | Get call metadata including the Gong URL (needed for deep links) |
get_call_summary | AI-generated summary: key points, topics, action items |
get_call_transcript | Full transcript with speaker attribution and timing (use for notable quotes) |
list_calls | List recent calls to find relevant conversations |
list_users | Resolve Gong user IDs to names |
user-monday-api-mcp)| Tool | Purpose |
|---|---|
search | Search for support boards or tickets mentioning the customer (best effort) |
Read your data guide for current table schemas, join keys, and known gotchas.
Based on the identifier type:
Account ID: Use directly as PULSE_ACCOUNT_ID.
Company name: Query Snowflake to find matching accounts:
SELECT PULSE_ACCOUNT_ID, PRODUCT, FIRST_PRODUCT_INSTALL_DATE,
IS_PAYING_PRODUCT, ACCOUNT_INFRA_REGION
FROM BIGBRAIN.L4.DIM_ACCOUNTS_PRODUCTS_METRICS
WHERE PRODUCT = 'marketing'
AND LOWER(PULSE_ACCOUNT_ID::VARCHAR) LIKE '%{search_term}%'
If no results, use data-expert-agent to search across account tables for the company name.
Email/domain: Extract the domain and search. Also use the domain to construct the website URL (https://{domain}).
If multiple accounts match, present them to the user and ask which one to research.
Query campaigns activity for the resolved account:
SELECT c.ID, c.NAME, c.TYPE, c.STATUS, c.SENTON, c.CREATEDAT
FROM BIGBRAIN.STG.STG_MARKETING_CHANNELS_CAMPAIGNS c
WHERE c.ACCOUNTID = {account_id}
AND c.SOURCE != 'IL'
ORDER BY c.CREATEDAT DESC
Then pull campaign performance metrics:
SELECT s.CAMPAIGNID, s.TOTALSENT, s.TOTALDELIVERED,
s.TOTALOPENS, s.UNIQUEOPENS, s.TOTALCLICKS, s.UNIQUECLICKS
FROM BIGBRAIN.L1.MARKETING_CHANNELS_EMAILCAMPAIGNANALYTICSSUMMARY_US s
WHERE s.ACCOUNTID = {account_id}
Repeat for EU and AU regions if the account's region warrants it.
Summarise:
SELECT DAY, PLAN_TIER, PLAN_PERIOD, SEATS, BILLING_ARR, PRODUCT_ARR,
PRODUCT_ARR_DAILY_CHANGE, PRODUCT_ARR_DAILY_CHANGE_TYPE,
DAU, MAPP, IS_PAYING_PRODUCT, IS_IN_TRIAL
FROM BIGBRAIN.L4.FACT_ACCOUNTS_PRODUCTS_METRICS_DAILY
WHERE PULSE_ACCOUNT_ID = {account_id}
AND PRODUCT = 'marketing'
ORDER BY DAY DESC
LIMIT 90
Also pull subscription lifecycle:
SELECT EVENT_TYPE, EVENT_TIMESTAMP, CONTRACT_STATUS,
CANCELLATION_REASON, CANCELLATION_REASON_DESC,
ARR, NEXT_ARR, PLAN_TIER, PERIOD,
RENEWAL_STATUS, CANCEL_ON_RENEWAL_IND
FROM BIGBRAIN.L4.DIM_ACCOUNT_SUBSCRIPTION_CONTRACTS
WHERE PULSE_ACCOUNT_ID = {account_id}
ORDER BY EVENT_TIMESTAMP DESC
Summarise:
SELECT PRODUCT, FIRST_PRODUCT_INSTALL_DATE, IS_PAYING_PRODUCT,
FIRST_BILLING_ARR_DATE, FIRST_WEEK_DAU_7,
IS_SUCCESSFUL_SETUP, CHANNEL, SIGNUP_FLOW
FROM BIGBRAIN.L4.DIM_ACCOUNTS_PRODUCTS_METRICS
WHERE PULSE_ACCOUNT_ID = {account_id}
ORDER BY IS_PAYING_PRODUCT DESC, FIRST_PRODUCT_INSTALL_DATE
Summarise:
Search campaigns-stats and other relevant channels for mentions of the customer:
slack_search_public with the company name as the querycampaigns-stats, ask-campaigns, and campaigns-churns channelsslack_read_threadSummarise:
Search for previous calls with this customer using the company name or known contacts.
Workflow:
list_calls with a broad date range (last 6 months) to find relevant callsget_call_summary for each matching call (prioritise the 3-5 most recent)get_call to retrieve the call URLget_call_transcript to find exact quotes worth referencing in the interview{call_url}#t={timestamp_in_seconds} (timestamp comes from the transcript's timing data)Summarise:
Note: If Gong is not configured or no calls are found for this customer, note it in the output and move on.
Use user-monday-api-mcp search tool to look for the company name across monday boards. If a support or tickets board exists, pull relevant items.
If nothing is found, note: "No dedicated support ticket system accessible. Slack search was used as the primary source for support-related signals."
Use WebFetch to retrieve the customer's website. Extract:
If the website URL is unknown, ask the user to provide it.
Present 5-7 bullet points covering:
Generate an HTML file using the routine template at skills/system/routine-html-template.md. Read that file for the full CSS and component patterns.
Save to: your output folder/customer-interview-prep-{company-slug}-YYYY-MM-DD.html
Open with: open command
<div class="header">
<h1>Customer Interview Prep</h1>
<div class="subtitle">{Company Name} · {date}</div>
</div>
<!-- Company Overview -->
<div class="section">
<div class="section-title">Company Overview</div>
<div class="card">
<div class="card-body">[What the company does, industry, size, target market]</div>
</div>
</div>
<!-- Account Snapshot -->
<div class="section">
<div class="section-title">Account Snapshot</div>
<div class="metric-grid">
<div class="metric-card">
<div class="metric-value">[tier]</div>
<div class="metric-label">Plan</div>
</div>
<div class="metric-card">
<div class="metric-value">$[N]</div>
<div class="metric-label">ARR</div>
</div>
<div class="metric-card">
<div class="metric-value">[N]</div>
<div class="metric-label">Seats</div>
</div>
<div class="metric-card">
<div class="metric-value">[N] months</div>
<div class="metric-label">Tenure</div>
</div>
<div class="metric-card">
<div class="metric-value">[region]</div>
<div class="metric-label">Region</div>
</div>
</div>
</div>
<!-- Product Usage -->
<div class="section">
<div class="section-title">Campaigns Usage</div>
<div class="metric-grid">
<div class="metric-card">
<div class="metric-value">[N]</div>
<div class="metric-label">Campaigns created</div>
</div>
<div class="metric-card">
<div class="metric-value">[N]</div>
<div class="metric-label">Campaigns sent</div>
</div>
<div class="metric-card">
<div class="metric-value">[N]</div>
<div class="metric-label">Total emails sent</div>
</div>
<div class="metric-card">
<div class="metric-value">[%]</div>
<div class="metric-label">Avg open rate</div>
</div>
<div class="metric-card">
<div class="metric-value">[%]</div>
<div class="metric-label">Avg click rate</div>
</div>
</div>
<table>
<thead><tr><th>Period</th><th>Campaigns sent</th><th>Emails sent</th><th>Open rate</th><th>Click rate</th></tr></thead>
<tbody>
<tr><td>Last 30 days</td><td>[N]</td><td>[N]</td><td>[%]</td><td>[%]</td></tr>
<tr><td>Last 90 days</td><td>[N]</td><td>[N]</td><td>[%]</td><td>[%]</td></tr>
<tr><td>All time</td><td>[N]</td><td>[N]</td><td>[%]</td><td>[%]</td></tr>
</tbody>
</table>
<div class="card">
<div class="card-title">Recent campaigns</div>
<div class="card-body">[List of last 5 campaigns with name, date, type, status]</div>
</div>
</div>
<!-- Other Monday Products -->
<div class="section">
<div class="section-title">Other Monday Products</div>
<table>
<thead><tr><th>Product</th><th>Installed</th><th>Paying</th><th>First week DAU</th></tr></thead>
<tbody>
<tr><td>[product]</td><td>[date]</td><td>[yes/no]</td><td>[N]</td></tr>
</tbody>
</table>
</div>
<!-- Financial History -->
<div class="section">
<div class="section-title">Financial History</div>
<div class="card [success/warning/urgent]">
<div class="card-title">[Current status summary]</div>
<div class="card-body">[Billing events timeline: upgrades, downgrades, churn signals]</div>
</div>
</div>
<!-- Customer Voice -->
<div class="section">
<div class="section-title">Customer Voice</div>
<!-- One card per feedback source or theme -->
<div class="card highlight">
<div class="card-label highlight">campaigns-stats</div>
<div class="card-body">[Feedback summary with quotes]</div>
<div class="card-meta">[Link to Slack thread]</div>
</div>
<div class="card">
<div class="card-label">ask-campaigns</div>
<div class="card-body">[Support questions or issues raised]</div>
<div class="card-meta">[Link to Slack thread]</div>
</div>
</div>
<!-- Previous Calls (Gong) -->
<div class="section">
<div class="section-title">Previous Calls · Gong</div>
<div class="metric-grid">
<div class="metric-card">
<div class="metric-value">[N]</div>
<div class="metric-label">Calls on record</div>
</div>
<div class="metric-card">
<div class="metric-value">[date]</div>
<div class="metric-label">Most recent call</div>
</div>
</div>
<!-- One card per notable call -->
<div class="card highlight">
<div class="card-label highlight">[Call date] · [Call title]</div>
<div class="card-body">[Key points from call summary: topics, pain points, action items, competitor mentions]</div>
</div>
<!-- Recurring themes across calls -->
<div class="card warning">
<div class="card-label warning">Recurring themes</div>
<div class="card-body">[Themes that appear across multiple calls: feature requests, objections, frustrations]</div>
</div>
<!-- Notable quotes with deep links -->
<div class="card">
<div class="card-label">Notable quotes</div>
<div class="card-body">
<blockquote>"[Verbatim quote from customer]"<br>
<span class="quiet">— [Speaker], <a href="[call_url]#t=[timestamp_seconds]">[Call title, date]</a></span>
</blockquote>
<blockquote>"[Another quote]"<br>
<span class="quiet">— [Speaker], <a href="[call_url]#t=[timestamp_seconds]">[Call title, date]</a></span>
</blockquote>
</div>
</div>
<p class="quiet">If no Gong calls found: "No previous calls found in Gong for this customer."</p>
</div>
<!-- Suggested Interview Questions -->
<div class="section">
<div class="section-title">Suggested Interview Questions</div>
<ol class="priority-list">
<li>
<div class="card-title">[Question based on data gap or interesting signal]</div>
<div class="card-body">[Why this question matters, what data prompted it]</div>
</li>
</ol>
</div>
| Date | Change |
|---|---|
| 18 Mar 2026 | Initial version. Sources: Snowflake (campaigns, financials, product metrics), Slack (campaigns-stats, ask-campaigns, churns), website, Mixpanel (best effort), monday boards (best effort). |
| 31 Mar 2026 | Added Gong as a data source. Pulls previous call summaries, recurring themes, action items, and competitor mentions for the customer. Surfaces call history in the HTML dossier and short summary. |