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 = strategyexisting · 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
unchanged
Trigger fires
form submit · list cursor · intent signal · calendar event · scheduled sweep
T1
+ 1.6 s
unchanged
Brief assembled
context pulled from CRM, enrichment, history, intent providers
T2
+ 4 s
new
Plan committed
stronger model · typed CallPlan · cached for reuse · budget per agent
T3
+ 4 s
unchanged surface
Dial
runtime composes plan + brief + layered config into agent's instruction stream
T4
… call …
unchanged
Conversation
fast model follows the plan; deviations logged with reasons
T5
+ 2–5 s
+ new fields
CallOutcome written
+ plan_id, plan, plan_deviation_reasons[] — additive schema migration
Planning policy per agent
depth, mode, model — configurable per agent
Agent
Trigger SLA
Budget
Mode
Depth
01
Inbound Speed-to-Lead
at-call · lightweight
02
Cold-List Caller
precomputed · batch
03
Intent-Signal & Event
at-call · account-coord
04
Calendar Concierge
skipped · trivial fallback
05
Dormant-Lead Reviver
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 metrics01
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