Decision · proposed 2026-05-05 D-002 · pre-call planner owners · product, engineering

We have data.
We need strategy.

Today's architecture assembles context before every call but never commits to a strategy. We're proposing a Pre-call Planner as a new shared-core capability — so every agent enters every call with an auditable plan, and we can finally measure plan-vs-actual the way our customers measure rep performance.

The gap

brief = data · plan = strategy
existing · spec §4.2
Brief builder
"Here is what we know."
  • account history, prior calls, opps
  • recent activity, lifecycle stage
  • enrichment (Apollo) + intent signals
  • DNC flags, jurisdiction, AE assignment
proposed · new shared-core capability
Pre-call planner
"Here is what we will do about it."
  • objective for this call (typed)
  • opening strategy, qualification priorities
  • anticipated objections + chosen handling
  • next-step ladder, stop conditions, account coordination
In coding we don't conflate "read the relevant files" with "plan the task." The same separation belongs in calling.
— D-002 context

What changes between trigger and dial

a single new step · auditable, typed, reusable
T0 0 ms
Trigger fires
form submit · list cursor · intent signal · calendar event · scheduled sweep
unchanged
T1 + 1.6 s
Brief assembled
context pulled from CRM, enrichment, history, intent providers
unchanged
T2 + 4 s
Plan committed
stronger model · typed CallPlan · cached for reuse · budget per agent
new
T3 + 4 s
Dial
runtime composes plan + brief + layered config into agent's instruction stream
unchanged surface
T4 … call …
Conversation
fast model follows the plan; deviations logged with reasons
unchanged
T5 + 2–5 s
CallOutcome written
+ plan_id, plan, plan_deviation_reasons[] — additive schema migration
+ new fields

Planning policy per agent

depth, mode, model — configurable per agent
Agent Trigger SLA Budget Mode Depth
01 Inbound Speed-to-Lead sub-60 s ring ≤ 4 s at-call · lightweight
02 Cold-List Caller queued overnight precomputed · batch
03 Intent-Signal & Event seconds–minutes ≤ 12 s at-call · account-coord
04 Calendar Concierge very short ~0 skipped · trivial fallback
05 Dormant-Lead Reviver scheduled days ahead precomputed · refreshed on delta

Inbound rings within 60 s — planning runs lightweight. Cold-List and Dormant absorb deep planning by precomputing overnight or days ahead. Intent-Signal pays a small at-call cost in exchange for account-level coordination across multiple engaged contacts.

What we get

four strategic outcomes — not vanity metrics
01
Auditability
"Why did the agent ask about budget?" becomes answerable. Reviewers diff plan vs actual transcript. Plan-vs-actual deviation rate becomes a first-class quality signal.
02
Cost separation
Stronger / slower model plans once. Fast / cheaper model handles the conversation while following a typed plan. Smarter where it counts; fast where latency is felt.
03
Account coordination
When three contacts at the same account engage, Agent 03 de-conflicts: "Sarah told us about budget last week — don't ask Marcus the same question." Unblocks an ABM story horizontal vendors can't tell.
04
Reuse + amortisation
Cold-List plans run overnight. Dormant plans run days ahead and refresh on material deltas. The first ring doesn't pay the planner cost — and the smartest model in the stack only runs once per contact.

What it costs

scoped surface · additive migration · per-agent SLA absorbed
Build ~2 weeks
  • One new shared-core capability
  • Typed CallPlan record + persistence
  • Per-agent policy in agent role template
  • Account-coordination pass for Agent 03
Schema additive only
  • CallOutcome.plan_id (FK)
  • CallOutcome.plan (typed)
  • CallOutcome.plan_deviation_reasons[]
  • No breaking changes; safe replays
Latency budget per-agent
  • Inbound: ≤ 4 s within 60 s SLA
  • Cold-List + Dormant: precomputed (no live cost)
  • Intent-Signal: ≤ 12 s (post-signal acceptable)
  • Concierge: skipped

Recommendation

timeline tied to build sequence · spec §12
Approve. Land CallPlan schema + persistence with the outcome-writer hardening already planned for Phase 03. Ship Agent 01 with lightweight at-call planning. Each subsequent agent ships with its policy live: Concierge skipped, Cold-List precomputed batch, Intent-Signal at-call with account coordination, Dormant precomputed-with-refresh.
Effort~2 weeks · 1 eng
Phase03 · concurrent with outcome writer
Risklow · additive · per-agent gated
Reversibilityflag-off per agent
Sign-off

Approval is per role, not per individual.

Once approved, the linked decision record (D-002) flips from Proposed to Adopted. Spec sections §4.2, §5, §7, §8.2, §8.4 update; mocks/layer.html grows an L4.5 row.

Product pending
Engineering pending
Founder pending