Memory for AI that serves the same customer over time
People change.
Your AI should remember how.
A compact, chronological account of what a person wanted, tried, and changed — so each conversation continues their story instead of starting over.
Jan 24 · message
“I'm leaving after my bonus.”
Apr 11 · message
“I accepted the promotion. I'm staying.”
01The human argument
People are not profiles.
Facts are snapshots. A person's story is what connects them.
Stored as a profile
3 fields
- Goal
- Wants to leave their job.
- Goal
- Accepted a promotion.
- Goal
- Wants to grow as a leader.
Nothing here says which is still true.
Held as an arc
Same 3 facts
- Jan
Wants to leave their job.
Burned out. Planning to go after the bonus.
- Apr
Accepted a promotion.
An unexpected offer, from the manager they were avoiding.
- Now
Wants to grow as a leader.
In order, they stop contradicting.
02What Arc rebuilds
Summaries at every granularity. Exact sources where they count.
Each request picks a level per stretch of time, then spends what the coarse ones save on exact sources.
Level three
Coarsest retained
Level two
Merged neighbours
Level one
Compacted event groups
Source events
Retained in order, never replaced
Reconstructed
For “Why did I decide to stay?”
↑ Jan 24 and Apr 11, restored exactly
Retrieval decides where to zoom in — never what gets to exist.
Retained source Events stay the evidence of record.
03Point of view
A good recommendation starts with the person, not the product.
Every conversation either continues the relationship or restarts it.
One sitting
- A checkout
- A support ticket
- A tool call
Many months
- Learning over many sittings
- Health and care
- Money and long decisions
- A goal that takes months
04Measured
Send everything, or send four percent.
On a history small enough to send whole, Arc stays within a few points of full raw context — on a twenty-fourth of the memory.
Memory tokens sent per query
| Measurement | NoneNo memory | WholeThe whole history | Arc 4KArc 4K |
|---|---|---|---|
| FactualFactual support | 7.9% | 83.6% | 79.3% |
| TemporalTemporal accuracy | 7.1% | 94.8% | 92.7% |
| UsefulUsefulness | 6.8% | 89.8% | 87.2% |
| Token F1Reference-answer token F1 | 9.6% | 46.4% | 41.9% |
| CostCost per query | $0.0028 | $0.0819 | $0.0296 |
Full raw context is ahead on every dimension. Arc 4K trades 4.3 points of factual support for 64% lower cost — and 16K narrows that to 2.7 on 8,510 tokens.
Long-memory suite · 4 histories · 64 cases · about 92K raw tokens each
05Start
One timeline for everything that shapes the story.
- 01
Create the person.
PUT /v1/users/{user_id}
- 02
Append what happened, in order.
POST /v1/users/{user_id}/events:append
- 03
Retrieve the reconstruction — or let Arc answer.
POST /v1/users/{user_id}/memory/retrieve
Append what happened
POST /v1/users/u_8fc2/events:append
{
"idempotency_key": "chat:msg_7741:v1",
"event_type": "message.user",
"occurred_at": "2026-04-11T15:20:11Z",
"source": "guide-chat",
"actor": "user",
"text": "I accepted the promotion. I'm staying.",
"memory_policy": "allow"
}Ask for the arc
POST /v1/users/u_8fc2/memory/retrieve
{
"query": "Why did I decide to stay?",
"budget_tokens": 4000,
"require_fresh": false
}One chronological cover inside the budget, with January and April restored exactly.
Start with one person. Add what happened. Continue from there.