# 03 — Capture-at-Source Governance Memo

**To:** Kyle Lohmann (VP CS & Ops), Sophia F. · **From:** Dico Angelo · **Date:** 2026-04-17

## The problem in one sentence

75% of the customer book has no sentiment captured, 30% has no contract end-date, and 55% has no CRM wired — so every dashboard, every forecast, and every renewal motion is running on guesses, and no amount of CSM effort at the downstream layer fixes it.

## The move: name the gate, not the rule

I'm not proposing "get CSMs to log more." I'm proposing a **capture gate** — three fields, captured at the moment of interaction, blocked upstream of any CS motion. Rules without a capture gate drift. A gate with rules downstream of it doesn't.

## The three-part gate

![Capture gate flow](diagrams/capture-gate.svg)

**1. Contract gate — `contract_end_date` required, no exceptions**

No account enters the renewal stage without a dated contract. Validation rule fires at stage-advance. Backfill sprint in Week 1 — AR/billing team exports contract PDFs, Ops keys the dates, 95 accounts reconciled in 10 business days.

After Week 1: no new account goes live in Suger without the field populated. Blocking rule on Account.Status = Active.

**2. Sentiment gate — capture at source, not month-end**

Today the CSM finishes a Gong call and doesn't go back to Suger to log sentiment. Tomorrow:
- Gong / Fathom / Grain webhook fires at call-end.
- AI summary service writes one `HealthSignal` record to Suger with `source = call`, `summary_text = AI_synopsis`, `sentiment = inferred_tag`.
- CSM gets a ping: *"Sentiment logged as good — accept or adjust?"* — one-click confirm.

This closes the 238-account sentiment dark zone in 6–8 weeks without asking a single CSM to fill in a spreadsheet.

**3. Owner gate — every account has a named CSM, always**

Today's dataset has 206 active accounts and no explicit `owner__c` field. Round-robin assignment by ARR tier:
- **Advanced** (41 accounts, $1.54M) → Senior CSM pool, ≤ 20 accounts each.
- **Scaling** (95 accounts, $1.91M) → Mid-CSM pool, ≤ 40 accounts each.
- **Emerging** (180 accounts, $1.60M) → Tech-touch / pooled CSM, ≤ 80 accounts each.

No account has no owner. Every alert has a human to route to. Every expansion play has a human to call.

## What the dashboard reads after the gate is live

- **Renewal pipeline accuracy** goes from "best guess" to *actual* — because 100% of accounts have dated contracts.
- **Sentiment capture rate** goes from 25% → 95%+ in 8 weeks — because capture is upstream of the CSM, not a task for them.
- **Account coverage** goes from partially-owned → fully-owned — because no account can be Active without an owner.

Then and only then does the priority-ranking formula (`risk × log(1+ARR)`) actually rank *real* risk, not data-missing artifacts.

## Success criteria

- Zero Active accounts without `owner__c` by Day 30.
- Zero renewal-stage accounts without `contract_end_date` by Day 30.
- Sentiment capture rate ≥ 80% by Day 60 (up from 25% today).
- `HealthSignal` records per Active account per month ≥ 2 by Day 90.

## Why this works

Every CS org I've seen that missed at $5M ARR missed the same way: two capture failures (sentiment, contracts), no gate between the book and the motion, CSMs working whichever spreadsheet felt freshest. The fix is never a dashboard rebuild. It's a gate that makes the *untagged, un-dated, un-owned* accounts inhospitable to the rest of the workflow — so the data has to be right for work to flow.

At Contentsquare I watched this exact pattern kill the One-CRM project. Two years in, still no capture gate, so the data never converged, so the dashboards never trusted each other, so the RevOps team built their own spreadsheet. That's the failure mode I'd install the gate to prevent, Week 1.
