← BlogVoice agents

A phone call is a context problem with a deadline

Northsun · Aug 2026 · 8 min read

A voice agent can request the known caller profile, prior-call history, and available enrichment before its first sentence, then submit the completed interaction after hangup. The integration must treat enrichment as contextual evidence rather than identity verification, remain useful when optional context is missing, and confirm the write-back is visible on the very next recall.

Northsun (formerly Mnemix) is the memory and enrichment layer for AI agents, not a voice-agent builder. The voice platform owns the conversation; Northsun supplies the API, MCP surface, and SDK paths that connect caller context and memory to whatever runtime you build.

Voice starts before there is a message

Chat memory usually begins after identity is available: a signed-in user sends a message and the application already has an account identifier.

A phone call begins with less. At ringing or answer time, the system may have only a phone number and a platform call identifier. Before the agent opens the conversation, the surrounding application has to decide what it knows about that number, what prior history is relevant, and how to proceed if some context does not arrive.

That makes voice memory a lifecycle rather than a search box.

The three-moment lifecycle

Northsun’s frozen public caller-memory surface contains exactly three endpoints:

  1. POST /v1/recall_and_enrich
  2. POST /v1/calls/end
  3. GET /v1/caller/{phone_number}

Recall before the interaction

Your server calls recall_and_enrich with the caller’s phone number and, when available, a stable session_id. Record which platform event produced the request rather than assuming an event label changes server behavior.

The response separates three kinds of context:

  • Caller profile: what this tenant currently knows about the caller record.
  • Memory: summary and recent-call history already associated with the record.
  • Enrichment: nullable person, company, and phone context where available.

Northsun is designed for sub-300ms voice recall. That exact phrase is a design claim, not a measured benchmark or a guarantee for your integration. Platform webhooks, your server, network transit, context mapping, and the model path all contribute to the caller’s actual experience. Measure the complete path yourself.

Submit the interaction after hangup

When the call ends, your server sends the transcript, outcome, duration, phone number, and session correlation to calls/end. The documented successful response is 204 No Content, so clients must not parse a JSON body.

204 means the interaction is already committed durably: the database write happens before the response returns, and a bounded, best-effort write-through updates the cache the next recall reads from in the same request. The next recall_and_enrich for that caller sees this call immediately — no poll loop, fixed delay, or background write window to wait through. (Enrichment is a separate, genuinely asynchronous pipeline; see What recall gives you back.)

Use the voice platform’s stable call identifier to deduplicate webhook delivery in your integration, and retain enough non-sensitive telemetry to determine whether an earlier attempt may already have reached the service.

Inspect outside the live call

GET /v1/caller/{phone_number} is a read-only lookup. It does not create a caller or trigger enrichment. Use it for controlled verification, dashboards, and support diagnostics. An unknown caller is an empty state, not evidence that authentication failed.

Enrichment is not identity proof

Phone enrichment can add contextual fields from Trestle and Twilio Lookup. The person, company, and phone branches are nullable, and fields inside an available branch can still be absent.

An enriched name is not permission to assert that the person holding the phone is the person in the record. Use neutral language until identity is established through the conversation or another trusted mechanism. Let callers correct names and classifications.

Memory and enrichment answer different questions:

  • Memory: what has this tenant observed in prior interactions with this caller record?
  • Enrichment: what external context is available for this phone identifier?

A first-time caller can have enrichment and no history. A returning caller can have history and no fresh enrichment. The opening flow must handle both.

An enrichment result is also not automatically a governed fact. Northsun has governance primitives for specific records and workflows, but builders should not imply that every returned name, summary, transcript, or external attribute carries the same authority. Preserve provenance, distinguish observation from assertion, and apply the policy appropriate to the decision. That distinction is governed context intelligence in practice: Every agent proposes. Northsun governs.

Build a deliberate fallback

Voice systems should not make optional context a prerequisite for speaking. A production fallback should:

  1. Use a neutral greeting.
  2. Ask only for information needed to continue.
  3. Avoid revealing whether a lookup failed.
  4. Still submit the completed interaction so a later session can be evaluated.

Choose timeouts from your own end-to-end measurements. Do not convert the approved design phrase into a hard-coded customer guarantee.

Platform mapping is your integration layer

Bland, Vapi, Retell, and custom stacks expose different call-start and call-end events. Your server maps those events to the same lifecycle:

platform start event
  -> normalize phone and correlation id
  -> POST /v1/recall_and_enrich
  -> select safe context for the agent
  -> conversation
platform end event
  -> deduplicate by platform call id
  -> POST /v1/calls/end
  -> later verify history with a controlled read

Showing that mapping proves a custom integration. It does not make the platform a native, certified, or officially endorsed integration.

Before a real caller uses the path, test an isolated tenant, verify nullable-field handling, submit one synthetic call, observe the later read, and repeat with missing enrichment and a duplicate platform webhook.

Continue with What is caller memory?, the API reference, and Production readiness.

Choose Northsun as your agent memory layer.