| name | account-research |
| description | Pre-call and pre-meeting account brief — pulls CRM data, health signals, call history, and usage context into a structured one-page snapshot. Use before any customer call, QBR, health review, or stakeholder meeting. Works standalone (paste context) or with connected CRM, CS Platform, and call recording tools.
|
| argument-hint | [account name or CRM ID] [--brief | --deep | --stakeholders] |
| version | 1.0.0 |
| deployment_target | plugin |
/account-research
[PROPOSED]
Use When
- No account context exists in the current session and an initial account context pull is needed before acting
- Building context before any customer-facing call: kickoff, QBR, health check, renewal, check-in — when session context is absent or stale
- Running portfolio triage to assess multiple accounts quickly
- An account has been flagged at risk and you need current signal state before acting
Do NOT Use For
- Replacing call-prep — account-research provides context; call-prep produces the brief
- Real-time CRM updates or logging (use CRM directly or post-call logging workflows)
- Competitive research on accounts (this pulls CS signals, not market intelligence)
Typical Activation
"/csm:account-research Acme Corp"
"/csm:account-research Acme Corp --deep"
"Pull account context for [customer]"
"What's the current state of [account]?"
"Build me a brief on [customer] before my call"
Produce a one-page account brief calibrated to your CS motion, health model,
and escalation matrix from the configured company profile.
Pre-flight
Read ~/.claude/plugins/config/claude-for-customer-success/csm/CLAUDE.md and
~/.claude/plugins/config/claude-for-customer-success/company-profile.md.
If either file is missing or still contains [PLACEHOLDER] markers, stop:
"This skill needs your company profile before it can produce calibrated output.
Run /csm:cold-start-interview — it takes 2 minutes for a quick start or 15
minutes for full setup. Without it, account research output will be generic and
won't reflect your health model, escalation chain, or CS motion."
If configured, note:
- CS motion (high-touch / tech-touch / hybrid / implementation+handoff)
- Health model components and Red/Yellow thresholds
- Available integrations (from
## Available integrations in the config)
G-code dependency: All G-code guardrails referenced in this skill (G1–G9) are defined in the CLAUDE.md config loaded above. If Pre-flight halts or config is missing, G-codes are undefined — do not proceed with partial config.
Reasoning Protocol
Before generating output, apply these primers:
-
CLASSIFY: What type of account research request is this?
- Pre-Call Snap Brief: Time-pressured, single account, call imminent. Optimize for speed and recency over completeness.
- QBR / Executive Meeting Prep: Higher-stakes audience, needs polished structure with validated health components and stakeholder context.
- Risk / Escalation Review: Account is Red or trending down. Brief feeds an escalation workflow — separate leading from lagging indicators.
- Portfolio Scan: Multiple accounts for pipeline review or 1:1. Requires consistent structure, per-account staleness, and confidentiality controls.
- Stakeholder-Focused: Request centers on who matters — engagement gaps, shadow stakeholders, influence mapping.
-
CONSTRAINTS: What limits the solution space?
- G1: Health scores are component signals, not churn verdicts — decompose into observable signals, never frame as "will churn."
- G2: Expansion signals are internal-only, tagged
[early signal — not yet qualified], and routed to AE/AM — never in customer-facing output.
- G4: Escalation recommendations must route through the configured escalation matrix with named owner, channel, and SLA — no generic "escalate to your manager."
- G5: Confidentiality check required before any output containing ARR, contract terms, or health scores leaves the CSM's view — especially portfolio-level briefs.
- G7: Flag stale data with source date and staleness indicator — CRM >7 days, CS Platform >3 days, call data >14 days.
- Connected integrations limit what can be retrieved — flag gaps, never silently omit.
-
EXPERT CHECK: What would a veteran CSM verify first?
- What changed since the last touchpoint? The delta matters more than the current state — surface it explicitly.
- Is the health score decomposed into actionable components, or is it just a color? If just a color, decompose before presenting.
- Are there shadow stakeholders (on calls but not in CRM) or ghost stakeholders (in CRM but never on calls)? Cross-reference when call data is available.
-
ANTI-PATTERNS: Common mistakes to avoid:
- Presenting stale CRM or usage data without a timestamp or staleness flag — the CSM acts on outdated information.
- Treating a composite health score as a churn prediction instead of decomposing its component signals.
- Listing contacts without engagement recency — a name/title list is not a stakeholder map.
- Surfacing expansion signals in output that could reach the customer.
- Providing a generic escalation path ("talk to your manager") instead of routing through the configured matrix.
- Generating deep-mode output for a CSM who needs a quick snap brief before a call in 10 minutes.
After execution, verify:
- Does the brief answer the implicit question ("am I prepared for this interaction")?
- Are all data sources timestamped and staleness-flagged per G7?
- Is the output mode (brief/deep/stakeholders) matched to the actual need?
- Confidence: [High] if 2+ live sources corroborate / [Medium] if single-source or partially stale / [Low] if user-provided context only — state which.
Output mode
Default: brief — one-page structured snapshot. Use for call prep, quick
account check-in, or pre-meeting review.
--deep: Adds a second section — call history themes, open support tickets
summary, detailed usage trend, and expansion signal scan.
--stakeholders: Adds a dedicated stakeholder map section — contacts, roles,
influence, relationship health, and engagement gaps. See also /csm:stakeholder-map
for a full standalone stakeholder analysis.
Data gathering
Connector error categorization: When a connector call fails, distinguish the error type before proceeding:
- Rate-limited (transient): Connector returns HTTP 429 or equivalent throttle signal. Note the rate limit explicitly in output ("CRM data temporarily rate-limited — retry in 60 seconds recommended") and offer to retry rather than proceeding with degraded output.
- Unavailable (permanent for this session): Connector is not configured, authentication has expired, or service is down. Fall back to the manual-input path below and label all affected sections as "connector unavailable — manual input used."
Do not conflate these — a rate-limited connector will return data shortly; an unavailable connector will not.
What to pull and from where
Check available integrations against the configured profile. Pull from all
connected sources; flag what was used and what wasn't.
CRM (Salesforce / HubSpot or equivalent):
- Account name, ARR, contract start and renewal date, contract terms
- Primary industry / segment
- CSM owner; AE / AM owner
- Contacts — name, title, department, email
- Open opportunities (expansion, renewal stage)
- Recent activity log (last 3-5 notable entries)
CS Platform (Gainsight / Totango / ChurnZero / Vitally / Planhat):
- Current health score and component breakdown (match against configured health model)
- Red/Yellow CTA or task queue
- Product usage — DAU, feature adoption, last login, usage trend (direction, not just number)
- NPS score and date, if available
- Account lifecycle stage (onboarding / adoption / value realized / at risk / churned)
Call recording (Gong / Chorus):
- Last 2-3 calls: date, attendees, key topics, action items mentioned
- Sentiment trend if the platform provides it
- Any flagged risks or objections from recent calls
Document storage (Drive / SharePoint / Box):
- Most recent success plan or QBR deck — pull date and headline status
- Open action items from last customer-facing document
Fallback — nothing connected:
"I don't have live access to your CRM or CS Platform for this account. Paste
the account details, recent call notes, or health snapshot and I'll build
the brief from what you share."
Probing order
- Call CRM first — account identity anchor
- CS Platform — health overlay
- Call recording — recency context
- Document storage — open items from last deliverable
- Summarize what was retrieved and what gaps remain
If a tool call fails, note it in the reviewer note and proceed with available data.
Never infer health status from partial data without flagging the gap.
Brief structure
Produce the brief in this order. Suppress headers if a section has no data.
[Account Name] — Account Brief
[CS motion] · [Segment] · Data as of [timestamp]
Account snapshot
| Field | Value |
|---|
| ARR | $[amount] |
| Renewal date | [date] — [N days] away |
| Segment | [SMB / Mid-market / Enterprise] |
| CSM owner | [name] |
| AE / AM owner | [name] |
| Contract start | [date] — [N months] tenure |
| Lifecycle stage | [Onboarding / Adoption / Value Realized / At Risk] |
| Health | [Red / Yellow / Green] — see signals below |
Health signals
Apply configured health model components and thresholds. Show components, not
just the verdict.
Health as of [timestamp from CS Platform, or "not live — user-provided"]:
- Product usage: [direction + specific signal, e.g., "weekly active users down 18% vs. 30-day avg"]
- Engagement: [last call date, last exec contact, email response rate if known]
- Support: [open tickets, any P1/P2 escalations, ticket trend]
- NPS: [score and date if available; "not available" if not]
Overall: [Red / Yellow / Green] — above configured [Red threshold] / [Yellow threshold]
from profile.
Health scores are component signals, not churn verdicts. These signals inform
judgment; they don't replace it.
If health score is unavailable (no CS Platform connected or no data returned):
"Health signals unavailable — no CS Platform data retrieved this session. Health
assessment based on conversation context only."
Key stakeholders
List the contacts that matter most for this account. Flag engagement gaps.
| Name | Title | Department | Last contact | Notes |
|---|
| [Name] | [Title] | [Dept] | [Date] | [Executive sponsor / Champion / Detractor / Unknown] |
If an executive sponsor role is empty or last contact is >60 days: flag [review]
with the gap explicitly noted.
In high-touch motion, flag any key stakeholder not contacted in >30 days.
In tech-touch motion, flag any account with no contact in >90 days.
Adjust thresholds based on configured CS motion.
Recent activity
2-4 bullets. Recency over completeness.
- [Date] — [call / email / QBR / support ticket / health alert] — [1-line summary]
- [Date] — [...]
If call recording is connected: pull the last 2 calls. Note key topics and any
open action items from the calls. Do not summarize call content in customer-safe
framing without checking the destination audience.
Open items
From last customer-facing document or call action items. Flag stale items.
| Item | Owner | Due | Status |
|---|
| [Action item] | [CSM / Customer / AE] | [Date] | [Open / Overdue / Blocked] |
If no document or call data available: "No open items retrieved — paste last QBR
or call notes to populate."
Renewal context
Surface only if renewal is within 180 days OR account is Yellow/Red.
Renewal in [N] days — [on track / at risk / unknown].
[1-2 sentences: key factors driving renewal confidence or risk]
Escalation routing per configured matrix: [route to whom, how, SLA]
If outside 180-day window and account is Green: omit this section to keep the
brief focused.
Recommended next actions
1-3 specific actions calibrated to the account's current state and configured
CS motion. Not generic.
Examples by state:
- Green / healthy: "Prepare QBR agenda — last QBR was [date]; due within [N weeks] per cadence."
- Yellow: "Schedule executive check-in — sponsor [name] last contacted [date]. Address [specific signal]."
- Red: "Escalation: route per matrix — [route] within [SLA]. Prepare risk memo for [audience]."
- Approaching renewal: "Renewal readiness check — run
/csm:renewal-readiness [account]."
Reviewer note
Every brief includes:
⚠️ Reviewer note
- Sources: [CRM ✓ live | CRM [configured but unverified] | CS Platform ✓ live | CS Platform [configured but unverified] | Gong ✓ live | Gong [configured but unverified] | user provided | not connected — conversation context only]
- Data as of: [timestamp per source, or "N/A — user-provided"]
- Retrieved: [what was actually pulled — account record, health signals, last 2 calls, etc.]
- Gaps: [what was not available — e.g., "no CS Platform data; health based on user-provided context"]
- Flagged for your judgment: [N items marked
[review] inline | none]
- Before sharing: [destination check — is this brief going to the customer or staying internal?]
If clean: ⚠️ Reviewer note: CRM + CS Platform verified · data as of [timestamp] · no flags.
Deep mode additions (--deep)
Append after the standard brief:
Call history themes (last 90 days)
- [Theme 1]: mentioned in [N] of [M] calls — [1-line summary]
- Objections / risks surfaced: [list or "none flagged"]
Support ticket summary
- Open: [N] tickets — [P1: N / P2: N / P3-P4: N]
- Trend: [up / down / flat vs. 30-day prior]
- Oldest open ticket: [date] — [1-line description]
Usage trend
- [Metric 1] (e.g., weekly active users): [value] — [direction and % change vs. 30-day avg]
- [Metric 2] (e.g., feature X adoption): [value] — [direction]
- Key drop or spike: flag any >20% movement since last brief
Expansion signals (tag as early leads only)
- [Signal]: [1-line observation]
[early signal — not yet qualified]
- If none: "No expansion signals flagged in available data."
Guardrails
These apply unconditionally:
Health as heuristic. Never frame a health score or color as "this account
will churn." Frame as specific signals observed: "usage is down 18% week-over-week,
which is below the configured Yellow threshold."
Destination check. The account brief is an internal document. Before sharing
any version with the customer or a third party, the reviewer must check that
account-specific details (ARR, contract terms, internal health scores, stakeholder
notes) are appropriate for that audience.
Expansion stays internal. Any expansion signal in the brief is tagged
[early signal — not yet qualified] and routes to the AE / AM — never appears
in customer-facing deliverables without explicit authorization.
No silent staleness. If CRM data was last updated more than 7 days ago,
flag it in the reviewer note. If CS Platform data is more than 3 days old, note it.
Escalation routing comes from the matrix. When the brief surfaces a risk that
meets an escalation threshold, route using the configured escalation matrix —
not a generic "escalate to your manager."
After the brief
Offer contextual next steps based on account state:
- Renewal <90 days + Yellow/Red: "Want me to run a renewal readiness check?
/csm:renewal-readiness [account]"
- Risk signals: "Want a structured risk memo for this account?
/csm:risk-flag [account]"
- QBR due: "Ready to build the QBR?
/csm:qbr-builder [account]"
- Stakeholder gap flagged: "Want a full stakeholder map?
/csm:stakeholder-map [account]"
- Call today: "Need call prep?
/csm:call-prep [account]"
Offer one suggestion — the most relevant one given the account's current state.
Don't list all five.
Output
Structured account brief in markdown. Format and depth depend on the invoked mode:
| Mode | Contents | Primary use |
|---|
--brief (default) | Account snapshot table · health signals · key stakeholders · recent activity · open items · renewal context (if within 180 days or Yellow/Red) · recommended next actions | Pre-call prep, quick account check-in, portfolio triage |
--deep | All brief sections + call history themes · support ticket summary · usage trend · expansion signals (tagged internal-only) | QBR prep, risk review, escalation context |
--stakeholders | All brief sections + dedicated stakeholder map with engagement gaps, influence notes, ghost/shadow stakeholder flags | Stakeholder reviews, champion departure response, executive engagement planning |
Every output includes a Reviewer note block: sources used, data timestamps, gaps, items flagged for judgment, and a destination check before any external sharing.
No customer-facing version of this output may contain ARR, contract terms, internal health scores, or expansion signals without explicit CSM review per the Guardrails section.
Reference Files
The following reference files govern this skill's detailed behavior. They are loaded on-demand when the relevant behavior is being applied — they are not front-loaded into every response.
| File | Purpose |
|---|
references/reasoning-blueprint.md | Problem classification taxonomy, domain heuristics, common failure modes, and expert judgment patterns for this skill |
Security & Permissions
- network_access: outbound_allowlist (CRM, CS platform, call recording tool, document storage per configured integrations)
- filesystem_write: false
- filesystem_read: config files only (~/.claude/plugins/config/claude-for-customer-success/csm/CLAUDE.md and company-profile.md)
- subprocess_execution: false
- dynamic_code_execution: false
Trust & Verification
- All data is sourced from configured integrations per the CSM company profile
- Staleness is flagged explicitly — data older than configured thresholds is labeled [STALE]
- Internal signals (health scores, expansion tags, escalation status) must not be included in any customer-visible output
- If config files are missing or contain [PLACEHOLDER] markers, halt and prompt for /csm:cold-start-interview