AGT-902 — Account Brain
Layer 9: Reasoning · Tier 2 Brain Agent · Per-account synthesis · LLM-native · Reads Tier 1 services · Never writes canonical data · Operator-invoked or AGT-704-invoked
L9 · Agent 02
Specced · v27
Tier 2 · Brain Agent
RevOps + Account Teams
Per-account counterpart to AGT-901. Where AGT-901 reasons across pipeline-wide signals (segment / period / coverage), AGT-902 reasons across the full L4 + L5 + L6 picture for a single account. Same architectural commitments: LLM-native, reads brain-ready views, writes only to BrainAnalysisLog and SalesPlayLibrary drafts, never writes canonical account data, operator-invoked — never on cadence. The account team owns the relationship; the brain assembles cross-functional context faster than a human can.
Purpose
AGT-902 answers per-account, cross-functional questions: what's actually going on with this customer?, what's the next move?, are the signals across deal health, customer health, usage, conversation intelligence, and renewal proximity telling us something the AM/AE hasn't yet pieced together? It reads the union of Tier 1 service tables relevant to that account and produces a synthesized read with proposed next actions that map to existing levers (AGT-503 expansion play, AGT-504 customer comm, AGT-603 QBR pull-forward, AGT-405 deal recovery brief). The brain proposes; the human owning the account decides.
Scope — what AGT-902 answers, what it doesn't
| In scope | Out of scope |
| "What's the play on Acme HR? Usage up 60%, AE rotated 3 weeks ago, no QBR in 5 months." | Re-scoring health (AGT-501 owns) |
| "Is this account's churn risk actually about payment health, or is something else driving it?" | Computing churn risk (AGT-502 owns) |
| "Should we pull QBR forward and brief the new AE on the expansion signal?" (proposes existing levers) | Sending QBR invites (AGT-603 owns) or executing customer comms (AGT-504 owns) |
| Drafting a per-account expansion play for human review | Activating the play (requires human gate; AGT-302/AGT-503 execute) |
| Synthesizing cross-functional context for an account hand-off (AE rotation, CSM change) | Performing the hand-off (humans + tooling) |
| Per-account section of QBR prep narrative (called by AGT-603 narrative path) | Computing health/churn/expansion numbers shown in QBR (Tier 1 services) |
The hard line. AGT-902 never writes CustomerHealthLog, ChurnRiskLog, ExpansionLog, or any other canonical Tier 1 table. If a Tier 1 service's view is stale, AGT-902 surfaces the staleness in its narrative and refuses to estimate. The human reading the output sees both the synthesis and the data freshness limits.
Read contract — Tier 1 services consumed (per-account scoped)
AGT-902 reads per-account brain-ready views. The query scope is always WHERE account_id = ? — the brain never reads cross-account aggregates. This bounds context size and keeps queries cheap.
| Tier 1 service | Brain-ready view (account-scoped) | Used for |
| AGT-501 Customer Health Monitor | CustomerHealthLog.account_brain_view — current score + 90-day trend + dimension breakdown + payment modifier | Health diagnosis: which dimension is moving? |
| AGT-502 Churn Risk Detector | ChurnRiskLog.account_brain_view — current tier + renewal proximity + drivers | Renewal risk synthesis |
| AGT-503 Expansion Trigger | ExpansionLog.account_brain_view — open plays + signal sources + suppression history | Expansion opportunity assessment |
| AGT-804 Revenue Recognition (via UsageMeteringLog) | UsageMeteringLog.account_brain_view — trailing 90d consumption + seat utilization + overage events | Usage trajectory; consumption forecasting (calls Tier 3 tool when available) |
| AGT-401 Deal Health Monitor | Opportunities.account_brain_view — open opps + health trend per opp | Active deals on the account, deal-level risks |
| AGT-407 Conversation Intelligence | ConvIntelligence.account_brain_view — trailing 90d, filterable by call_owner_role (per v23 ripple) | Sentiment trajectory, objection patterns, next-step quality — CSM calls vs AE calls |
| AGT-603 QBR Prep | QBRLog.account_brain_view — QBR history + outcomes + open commitments | "When was the last QBR and what was promised?" |
| AGT-601 Onboarding Orchestrator | OnboardingLog.account_brain_view — current onboarding stage + MAP status + comp hold | For accounts still onboarding: identifying activation friction |
| AGT-602 Technical Implementation | TechnicalMilestoneLog.account_brain_view — milestones + customer sign-off status | Services-attached deals: technical risk view |
| AGT-803 Payment Health | PaymentEventLog.account_brain_view — payment state + retry history | Distinguish "amber for behavioral reasons" from "amber for payment reasons" |
| Accounts (root) | Accounts.account_brain_view — territory, tier, AE/CSM assignment, AE rotation history, contract terms summary | Relationship context: who owns this account, when did that change |
The account-brain view is a composite read: a single query call returns a structured per-account snapshot pre-joined across the eleven sources above. This is the brain-ready view contract for AGT-902 specifically — not a separate per-service call sequence. Owned by Data Engineering; refresh cadence matches the slowest input (typically daily). Stale composite forces staleness flag in BrainAnalysisLog.
Write contract — what AGT-902 may write
| Target | What's written | Canonical? |
BrainAnalysisLog | Every account query: question, account_id, sources read with timestamps, narrative, proposed actions, confidence flags, model used, token cost | No — brain's own log |
SalesPlayLibrary (status: draft, scope: account-specific) | Per-account expansion or retention plays: hypothesis, target account, suggested action sequence, success criteria | No — drafts only. Per-account plays go through the same promotion gate as segment-level plays from AGT-901. |
| QBR prep narrative (per-account) | Per AGT-603 charter extension (v27): the brain may draft per-account narrative sections for QBR prep documents. AGT-603 still owns the artifact and gates publication. | No — written into QBRLog narrative fields, not metric fields. |
| What AGT-902 may NEVER write |
CustomerHealthLog / ChurnRiskLog / ExpansionLog | Anything — canonical post-sales data is Tier 1 only (AGT-501/502/503) | n/a |
Opportunities health/forecast fields | Anything — deal data is L4 owned | n/a |
Accounts tier or scoring fields | Anything — account-level scoring is L2 owned (AGT-201) | n/a |
UsageMeteringLog | Anything — ingestion service is the only writer per L8 production schema | n/a |
Use case patterns
| Pattern | Trigger | Example | Output |
| "What's the move?" | AM/CSM/RevOps query naming an account | "Acme HR — expansion signal fired, AE rotated, no QBR in 5 months." | BrainAnalysisLog: synthesis across 11 sources + 1–3 proposed actions mapped to existing AGT-503/603/405 levers + 0–1 draft play in SalesPlayLibrary |
| Account hand-off briefing | AE/CSM rotation event (manual trigger by RevOps) | "New AE taking over Northwind. What does she need to know?" | BrainAnalysisLog hand-off summary: relationship history, open commitments from QBR/MAP, recent ConvIntelligence sentiment trajectory, current open plays, known objections |
| Renewal risk diagnosis | Triggered by RevOps after AGT-502 surfaces a Critical or High account | "Why is GlobalCorp Critical — what's actually driving it, and what's the recovery path?" | BrainAnalysisLog with dimension-level decomposition + 1–2 candidate recovery plays + escalation recommendation if warranted |
| Expansion qualification | AGT-503 fires; AM wants synthesized context | "AGT-503 says Acme is +40 pts on consumption overage — is this real expansion or a one-time spike?" | BrainAnalysisLog with consumption trajectory analysis (calls Tier 3 forecasting tool when available), historical pattern context, qualification recommendation |
| QBR prep narrative | AGT-603 invokes for per-account QBR prep narrative section | QBR scheduled, AGT-603 calls for the narrative section | Narrative content written to QBRLog narrative fields per AGT-603 v27 charter (parallels the AGT-704 narrative model) |
| Cross-account pattern at a single moment | Operator query: "Which of my T1 accounts have a usage drop > 20% MoM AND no scheduled QBR?" | This is a list query, not a single-account synthesis | Out of scope. Route to AGT-901 or to a Tier 1 service report. AGT-902 is per-account-scoped by design. |
Output structure — per-account BrainAnalysisLog row
Same structure as AGT-901 outputs, with two additions:
- account_id — populated. (AGT-901 outputs leave this NULL because they're cross-account.)
- account_synthesis_signature — a hash of (account_id, source_freshness_timestamps). Two queries within the same composite-view freshness window on the same account return cached results — saves cost on repeat queries while a meeting is happening.
All other fields match the BrainAnalysisLog schema. See BrainAnalysisLog production schema.
Proposed-action taxonomy
AGT-902's proposed actions always map to existing Tier 1 levers. The brain does not invent new levers; it routes context to where humans can act on it through the established system.
| Proposed action | Maps to lever | Human approval gate |
pull_qbr_forward | AGT-603 QBR Prep dual-trigger (internal) | AM accepts; AGT-603 schedules |
open_expansion_play | AGT-503 Expansion Trigger entry already exists; brain confirms qualification or proposes new play in SalesPlayLibrary | SLM + RevOps if new draft play; AM if existing ExpansionLog entry |
brief_new_ae_or_csm | AGT-405 Meeting Opp Prep (deal-active) or AGT-603 (post-sale) | Receiving AE/CSM accepts |
customer_communication | AGT-504 Customer Communications | Always human approval per AGT-504 spec |
escalate_to_slm | Existing AGT-502 escalation chain | None in addition; AGT-502's existing chain handles |
recommend_human_query | n/a — the brain is saying "this needs a human's call, here's the framing" | Human picks it up or doesn't |
none | n/a — the brain found nothing actionable; output is informational only | n/a |
No proposed action ever bypasses an existing approval gate. If AGT-504's spec requires human approval for any customer communication, AGT-902's customer_communication proposal does not weaken that — it just routes context to the human who has to approve.
Cost guardrails
AGT-902 is the higher-volume brain — per-account queries happen during meetings, hand-offs, and renewal-prep cycles. Sizing matters more here than for AGT-901.
| Tactic | Implementation |
| Default model | Claude Sonnet. Account-level synthesis fits Sonnet's window comfortably with brain-ready views. |
| Composite view, not 11 separate calls | Per-account composite view returns the full cross-source snapshot in one read. ~30K input tokens typical. |
| Account synthesis signature caching | Within a freshness window, repeat queries on the same account return cached results. Saves cost on iterative meeting-prep workflows. |
| Prompt caching | System prompt + composite view cached per Anthropic prompt-cache TTL (5 min). Iterative follow-up questions on the same account pay the diff only. |
| Per-query budget cap | Hard limit: 35K input + 4K output per query. Account synthesis should not need more. |
| Monthly tier budget alert | Alert at 75% of monthly budget (default $1,000/mo — higher than AGT-901 because volume is higher). Hard stop at 100% requires manual override. |
| Sizing ballpark | 30 queries/day at 30K input + 3K output, Sonnet pricing ≈ $4/day ≈ $120/month. See v26 architecture eval cost section. |
Eval criteria
| Criterion | Measurement | Pass threshold |
| Source citation rate | % of numerical claims with valid source citation pointing to a real Tier 1 row | ≥ 95% |
| Hallucination rate | % of outputs containing claims not supported by cited sources | ≤ 2% |
| Staleness recognition | When a source is stale, % of outputs that surface the staleness | 100% — hard requirement |
| Lever-mapping correctness | % of proposed actions that map to a real existing Tier 1 lever (no invented actions) | 100% — hard requirement; eval enforces |
| Per-account synthesis quality | 30 historical accounts where retrospective ground truth exists (e.g., known churn outcomes, known expansion outcomes); % where brain's diagnosis matches | ≥ 70% |
| Action acceptance rate | % of proposed actions accepted by the human owning the account (AM/CSM/AE) | ≥ 40% — calibration signal more than quality signal; if too high, brain may be reading leadership preference; if too low, brain may be missing context humans have |
| Outcome lift on accepted actions | Cohort comparison: accounts where brain-proposed actions were accepted + executed, vs control accounts | Track quarterly; positive lift expected by Q+2 after launch |
Failure modes
| Symptom | Likely cause | Action |
| Brain proposes an action with no mapping to a real Tier 1 lever | Hallucinated action type | Hard fail. Eval catches in pre-prod. Flag in BrainAnalysisLog. Action taxonomy is enumerated — brain output validated against enum. |
| Brain reads a stale composite view without flagging | Staleness check bypassed | Hard fail. Sev-2 incident treatment. Source-trace integrity is non-negotiable. |
| Brain output disagrees with human owning the account > 60% of the time | Brain over-fitting on signals the AM has more context on (e.g., relationship dynamics not in any Tier 1 system) | Brain may need to lower confidence and surface "this is a hypothesis, you have ground context" framing more aggressively. Tune system prompt; gather acceptance feedback. |
| Brain output accepted often but outcomes worse than control | Brain reading existing leadership/AM bias and reinforcing it | Quarterly retrospective. May indicate the brain is amplifying a pattern that doesn't perform. Investigate cohort lift directly — acceptance is not outcome. |
| Composite view stale and refusal blocks ops use | Upstream Tier 1 service offline or degraded | RevOps triages upstream per AGT-704 staleness model. Brain stays offline for that account dimension; other accounts unaffected. |
| Cost spiking | Likely cause: uncached repeated queries during planning sprint, or composite view bypassed for full-table reads | Audit recent BrainAnalysisLog rows for token usage. Enforce composite view requirement. Account synthesis signature caching should cap intra-meeting cost. |
Invocation paths
| Path | Frequency | Initiated by |
| Account-named operator query | Ad-hoc — meeting prep, hand-off, renewal prep | AM, CSM, AE, RevOps |
| QBR prep narrative job | Per AGT-603 cadence; AGT-603 calls AGT-902 for per-account narrative | AGT-603 |
| Account hand-off briefing | Triggered on AE/CSM rotation events | RevOps (manual trigger) |
| Renewal-prep batch | Optional weekly batch over T-90 day renewal cohort | RevOps (manual or scheduled trigger if RevOps opts in) |
Like AGT-901, AGT-902 does not run continuously across all accounts on cadence. Operator-driven invocation keeps cost bounded and aligns with the human-in-the-loop approval model. The optional renewal-prep batch is a deliberate exception — bounded to a small cohort (accounts within 90 days of renewal), explicitly opted into by RevOps.