Churn Prediction (Time-Series)

See churn coming before the alarm — anchored on 6 HG signals, scored the same way every Monday.

Churn Prediction (Time-Series)
Sample preview

Sample output for this workflow will appear here once it is captured.

Run the workflow in Claude, ChatGPT, or Phoenix Playground using the buttons below to see real output.

Overview

Weekly Monday-morning churn screening for one customer. Reads the 6 signals every CSM has learned to triage on — adoption intensity, location footprint, competitor adds in the account, intent decay on your category, champion coverage, financial stress — and returns a Watch/Yellow/Red verdict with the top-3 evidence points plus a 30/60/90-day save sequence. The signal weighting lives in the `csm-churn-signal-weighting` skill so every churn-adjacent workflow scores the same way.

Use cases

  • Monday morning that ends with 4 named accounts, not 22 vibes

    Your CSMs run this against each of their 22 enterprise accounts every Monday. 18 come back Watch and they move on. 3 return Yellow with a clear top-3 signal list. 1 returns Red with a 30/60/90 save sequence. The week's CSM hours go to the accounts that actually need them — not the ones that just feel sketchy.

  • Six signals, one rubric, every workflow

    The signal weighting lives in the `csm-churn-signal-weighting` skill so Watch/Yellow/Red means the same thing whether you're screening one account on Monday morning or running a full portfolio triage. No drift between "watch" on the dashboard and "yellow" in the QBR.

View workflow prompt
# Churn Prediction (Time-Series)

## Parameters

- `{{domain}}` *(required)* — Customer company domain HG Insights uses for lookup. Example: `acme.com`
- `{{your_product}}` *(required)* — Your product or product category — anchors the competitor scan and intent-topic resolution. Example: `HG Insights`
- `{{lookback_window}}` *(optional)* — Time-series window — one of last_6_months, last_12_months, last_24_months, last_36_months (matches company_install_time_series.timeRange enum). Example: `last_6_months`
- `{{prior_contacts}}` *(optional)* — Comma-separated names of the customer's named buying committee from CRM — verifies champion coverage. If empty, skip absence inference.. Example: `Jane Doe, John Smith`

## Purpose
You are a CSM running the Monday churn screen on {{domain}}, a customer of {{your_product}}. Compose a Watch / Yellow / Red verdict per the `csm-churn-signal-weighting` rubric, with top-3 driving signals and a 30/60/90-day save sequence. Cite every signal. Do NOT claim renewal-cycle info — that data is not in HG MCP.

## Process
1. **Adoption trajectory** — `company_install_time_series` for {{domain}} filtered to {{your_product}} (or its category via `list_product_categories`), `timeRange: {{lookback_window}}`. Capture `intensity_momentum` + % drop in `current_intensity` vs the first `data_points` entry. (Note: `data_points` carries intensity only, not locations.)
2. **Competitor scan** — `company_technographic` filtered to the customer's category overlapping {{your_product}}. Flag any vendor whose `firstVerifiedDate` falls inside the lookback. `productLocations` is a current snapshot only.
3. **Operating-signals context** — `company_operating_signals` returns derived attributes (`cloud_depth` stage, `ai_trajectory`, `genai_readiness`, `intent_adoption_gap`) plus the `ai_maturity_6m_delta` 6m delta. Surface what explains the adoption drift (e.g., genAI buildout pulling team focus, cloud-posture shift).
4. **Intent shift** — resolve {{your_product}}'s category → topic_ids via `list_intent_topics`. Call `company_intent` for {{domain}} with `limit: 200` (endpoint is `extra: "forbid"`; returns top-N topics — some may be missed). Post-fetch filter `topics[]` for the resolved topic_ids; flag `trend ≤ -30%` as decay. If a topic_id is **absent**, treat as **inconclusive** and fall back to `intent_category` with that `topic_name` (filter result to {{domain}}).
5. **Champion coverage + verdict** — if {{prior_contacts}} is supplied, iterate each name and call `contact_enrich` with the parsed firstName + lastName + `companyDomain` = {{domain}} to verify they're still at the company (note: `contact_search` does NOT support filtering by name — only by title / seniority / location, so use `contact_enrich` for named-presence checks). If {{prior_contacts}} is empty, fall back to `contact_search` for senior titles in {{your_product}}'s buying function as coverage context (not a named-presence check) and mark sponsor-coverage "unscored" in the verdict. Compose the final verdict per the `csm-churn-signal-weighting` skill: Watch / Yellow / Red + top-3 signals + 30/60/90 save sequence.

## Output Format
Markdown sections in order:
- `# 🚨 {{domain}} — Churn Risk: <Watch|Yellow|Red>`
- `## Top 3 signals` — 3 bullets: signal name, evidence, source citation
- `## Adoption trajectory` — `intensity_momentum` + % drop + shape
- `## Competitive landscape` — new entrants with `firstVerifiedDate` + `productLocations`
- `## Recommended save actions (30/60/90)` — 3 actions, each tied to a named signal

## Quality Checklist
- Cite every signal at the source boundary; no per-cell citations
- No fabricated competitor adds — every vendor has a `firstVerifiedDate` inside the lookback
- No fabricated contact names — only `contact_search` returns
- Verdict matches the `csm-churn-signal-weighting` rubric
- Workflow does NOT claim renewal-cycle info (out of scope)
- Cap total tool calls at ~15 to stay inside the 25-turn capture budget