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 scopeOut 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 reviewActivating 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 serviceBrain-ready view (account-scoped)Used for
AGT-501 Customer Health MonitorCustomerHealthLog.account_brain_view — current score + 90-day trend + dimension breakdown + payment modifierHealth diagnosis: which dimension is moving?
AGT-502 Churn Risk DetectorChurnRiskLog.account_brain_view — current tier + renewal proximity + driversRenewal risk synthesis
AGT-503 Expansion TriggerExpansionLog.account_brain_view — open plays + signal sources + suppression historyExpansion opportunity assessment
AGT-804 Revenue Recognition (via UsageMeteringLog)UsageMeteringLog.account_brain_view — trailing 90d consumption + seat utilization + overage eventsUsage trajectory; consumption forecasting (calls Tier 3 tool when available)
AGT-401 Deal Health MonitorOpportunities.account_brain_view — open opps + health trend per oppActive deals on the account, deal-level risks
AGT-407 Conversation IntelligenceConvIntelligence.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 PrepQBRLog.account_brain_view — QBR history + outcomes + open commitments"When was the last QBR and what was promised?"
AGT-601 Onboarding OrchestratorOnboardingLog.account_brain_view — current onboarding stage + MAP status + comp holdFor accounts still onboarding: identifying activation friction
AGT-602 Technical ImplementationTechnicalMilestoneLog.account_brain_view — milestones + customer sign-off statusServices-attached deals: technical risk view
AGT-803 Payment HealthPaymentEventLog.account_brain_view — payment state + retry historyDistinguish "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 summaryRelationship 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
TargetWhat's writtenCanonical?
BrainAnalysisLogEvery account query: question, account_id, sources read with timestamps, narrative, proposed actions, confidence flags, model used, token costNo — brain's own log
SalesPlayLibrary (status: draft, scope: account-specific)Per-account expansion or retention plays: hypothesis, target account, suggested action sequence, success criteriaNo — 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 / ExpansionLogAnything — canonical post-sales data is Tier 1 only (AGT-501/502/503)n/a
Opportunities health/forecast fieldsAnything — deal data is L4 ownedn/a
Accounts tier or scoring fieldsAnything — account-level scoring is L2 owned (AGT-201)n/a
UsageMeteringLogAnything — ingestion service is the only writer per L8 production scheman/a
Use case patterns
PatternTriggerExampleOutput
"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 briefingAE/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 diagnosisTriggered 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 qualificationAGT-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 narrativeAGT-603 invokes for per-account QBR prep narrative sectionQBR scheduled, AGT-603 calls for the narrative sectionNarrative content written to QBRLog narrative fields per AGT-603 v27 charter (parallels the AGT-704 narrative model)
Cross-account pattern at a single momentOperator 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 synthesisOut 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:

  1. account_id — populated. (AGT-901 outputs leave this NULL because they're cross-account.)
  2. 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 actionMaps to leverHuman approval gate
pull_qbr_forwardAGT-603 QBR Prep dual-trigger (internal)AM accepts; AGT-603 schedules
open_expansion_playAGT-503 Expansion Trigger entry already exists; brain confirms qualification or proposes new play in SalesPlayLibrarySLM + RevOps if new draft play; AM if existing ExpansionLog entry
brief_new_ae_or_csmAGT-405 Meeting Opp Prep (deal-active) or AGT-603 (post-sale)Receiving AE/CSM accepts
customer_communicationAGT-504 Customer CommunicationsAlways human approval per AGT-504 spec
escalate_to_slmExisting AGT-502 escalation chainNone in addition; AGT-502's existing chain handles
recommend_human_queryn/a — the brain is saying "this needs a human's call, here's the framing"Human picks it up or doesn't
nonen/a — the brain found nothing actionable; output is informational onlyn/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.

TacticImplementation
Default modelClaude Sonnet. Account-level synthesis fits Sonnet's window comfortably with brain-ready views.
Composite view, not 11 separate callsPer-account composite view returns the full cross-source snapshot in one read. ~30K input tokens typical.
Account synthesis signature cachingWithin a freshness window, repeat queries on the same account return cached results. Saves cost on iterative meeting-prep workflows.
Prompt cachingSystem 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 capHard limit: 35K input + 4K output per query. Account synthesis should not need more.
Monthly tier budget alertAlert 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 ballpark30 queries/day at 30K input + 3K output, Sonnet pricing ≈ $4/day ≈ $120/month. See v26 architecture eval cost section.
Eval criteria
CriterionMeasurementPass 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 recognitionWhen a source is stale, % of outputs that surface the staleness100% — 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 quality30 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 actionsCohort comparison: accounts where brain-proposed actions were accepted + executed, vs control accountsTrack quarterly; positive lift expected by Q+2 after launch
Failure modes
SymptomLikely causeAction
Brain proposes an action with no mapping to a real Tier 1 leverHallucinated action typeHard 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 flaggingStaleness check bypassedHard fail. Sev-2 incident treatment. Source-trace integrity is non-negotiable.
Brain output disagrees with human owning the account > 60% of the timeBrain 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 controlBrain reading existing leadership/AM bias and reinforcing itQuarterly 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 useUpstream Tier 1 service offline or degradedRevOps triages upstream per AGT-704 staleness model. Brain stays offline for that account dimension; other accounts unaffected.
Cost spikingLikely cause: uncached repeated queries during planning sprint, or composite view bypassed for full-table readsAudit recent BrainAnalysisLog rows for token usage. Enforce composite view requirement. Account synthesis signature caching should cap intra-meeting cost.
Invocation paths
PathFrequencyInitiated by
Account-named operator queryAd-hoc — meeting prep, hand-off, renewal prepAM, CSM, AE, RevOps
QBR prep narrative jobPer AGT-603 cadence; AGT-603 calls AGT-902 for per-account narrativeAGT-603
Account hand-off briefingTriggered on AE/CSM rotation eventsRevOps (manual trigger)
Renewal-prep batchOptional weekly batch over T-90 day renewal cohortRevOps (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.