Agent Memory System for Personalized Food Ordering and Discovery

doordash · E-commerce · 2026 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.2 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Food ordering personalization

DoorDash needed Ask DoorDash agents to remember user preferences across sessions and use the right memory for each task.

Constraints:

Architecture

DoorDash's Ask DoorDash memory system bridges offline consumer intelligence and live agent context. Offline LLM pipelines distill behavior into versioned long-term memory blocks; managed agent services store memory in distributed SQL with vector search and namespace isolation; a tooling layer ingests memory, plans task-aware retrieval, ranks and packages context, exposes a memory-bank index, and extracts conversational memory from sessions back into durable storage. Grocery and restaurant agents share tool interfaces but get vertical-aware retrieval sources, extraction rules, and ranking signals.

Diagram confidence: explicit (topology described by the source).

flowchart LR
  offline-memory-generation[Offline memory generation] --> long-term-memory-blocks[Long-term memory blocks]
  long-term-memory-blocks --> managed-agent-services[Managed agent services]
  managed-agent-services --> memory-tooling-layer[Memory tooling layer]
  memory-tooling-layer --> task-aware-retriever[Task-aware retriever]
  task-aware-retriever --> memory-bank-index[Memory bank index]
  memory-tooling-layer --> ask-doordash-agents[Ask DoorDash agents]
  ask-doordash-agents --> user-session[User session]
  user-session --> conversational-memory-extraction[Conversational memory extraction]
  conversational-memory-extraction --> memory-tooling-layer
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Offline memory generation Batch LLM pipelines that synthesize behavior into versioned memory blocks. Long-term memory blocks
Long-term memory blocks Structured preferences such as dietary, dining, brand, taxonomy, store, and cross-channel facts. Offline memory generation, Managed agent services
Managed agent services Distributed SQL storage with vector search, embeddings, and namespace partitioning. Long-term memory blocks, Memory tooling layer
Memory tooling layer Query planning, retrieval, ranking, packaging, ingestion, and conversational extraction layer. Managed agent services, Ask DoorDash agents, Conversational memory extraction
Task-aware retriever Chooses relevant memory by task rather than naive top-k similarity. Memory tooling layer, Memory bank index
Memory bank index Prompt-injected vocabulary footprint grounding keyword retrieval. Task-aware retriever
Ask DoorDash agents Grocery and restaurant agents consuming personalized memory. Memory tooling layer, User session
User session Live conversation where new preferences and constraints appear. Ask DoorDash agents, Conversational memory extraction
Conversational memory extraction LLM policy gate that extracts durable facts and writes them back to storage. User session, Memory tooling layer

Data flow

Offline pipelines turn order history and behavioral signals into structured memory blocks. Blocks land in storage immediately, embeddings are computed asynchronously or server-side, task-aware tools query the right namespaces for the current agent task, ranked memory is injected into the prompt, conversational facts are extracted and classified from the session, and durable facts are written back to long-term memory.

3 supporting quotes
“The offline intelligence layer that transforms order history and behavioral signals into structured memory blocks.”article, stated
“* Managed Agent Services: Backed by distributed SQL storage with vector search capabilities. It stores memory blocks with their embeddings, supports semantic search via approximate nearest neighbor (ANN), and provides multi-tenant isolation through namespace partitioning.”article, stated
“layer does not understand tasks or agents; it merely stores and retrieves. * Tooling: The connective tissue of the system. It sits between generation and persistence on the write path (formatting and ingesting memory blocks) and between persistence and the agent on the read/write path”article, stated

Why this architecture

DoorDash separates generation, storage, tooling, and agents because raw memory blocks do not automatically become useful agent context. Task awareness, namespace isolation, ranking, prompt packaging, and lifecycle controls prevent irrelevant facts from wasting context or degrading reasoning, while conversational extraction keeps valuable session signals from disappearing.

3 supporting quotes
“| | Task Awareness | Raw retrieval is necessary but not sufficient. Different tasks require fundamentally different memories.”article, stated
“Every token spent on irrelevant memory is a token not available for the agent's actual reasoning. The agent memory system must understand what the agent is trying to do and shape retrieval accordingly.”article, stated
“| | Signal Loss | Perhaps the most underappreciated problem is that valuable signals from conversations routinely die with the session. A user often can casually mention preferences and constraints such as that they keep a well-stocked pantry, or have dietary preferences.”article, stated

Models used: LLMs · embedding models · LLM judge evals

Scale

Alternatives considered (roads not taken)

Retrieve top-K similar memories for every request

Rejected because: It wastes context on irrelevant facts and misses task-critical facts with lower cosine similarity.

“A naive approach would be to retrieve the top-K most similar memories for every request. This wastes context budget on irrelevant facts and misses critical ones that happen to not have high cosine similarity to the query.”article, stated

Use raw conversation logs as long-term memory

Rejected because: Conversation logs are noisy, duplicative, and unstructured, so they need extraction and classification.

“Raw conversation logs do not work as long-term memory because they are noisy, duplicative, and unstructured.”article, stated

Pre-compute all embeddings only

Rejected because: DoorDash migrated toward dynamic server-side embedding for simpler and more flexible real-time writes.

“We initially launched with static embeddings to optimize read latency, but ultimately migrated to dynamic server-side embedding as our primary production path. The deciding factor was architectural flexibility.”article, stated

Patterns

agent-memory (personalization)

Agents use structured long-term and conversational memory to personalize food discovery.

“**_Memory is the threshold that separates a useful agent from a merely impressive one.”article, stated

retrieval-ranking (memory-retrieval)

The memory system retrieves memories based on the current task rather than dumping raw memory.

“| Task Awareness | Raw retrieval is necessary but not sufficient.”article, stated

Tradeoffs

How to retrieve memory for an agent task.

Chose task-aware retrieval and ranking over naive top-K semantic similarity.

Rationale: Different food-ordering tasks require different preference facts, and irrelevant memory consumes finite context.

“Different tasks require fundamentally different memories.”article, stated

How to ingest embeddings for memory blocks.

Chose dynamic server-side embedding as the primary path over static pre-computed embeddings only.

Rationale: Dynamic embedding simplified real-time writes and allowed embedding model swaps without reprocessing the corpus.

“This flexibility allows us to swap embedding models without reprocessing the entire corpus”article, stated

Gotchas (what bit them)

Raw memory retrieval is not enough for agent usefulness.

Root cause: Different tasks require different user preferences and constraints.

Resolution: DoorDash added task-aware memory retrieval.

“Different tasks require fundamentally different memories.”article, stated

Evaluation

DoorDash measured conversion and misunderstanding rates for sessions with memory.

Metrics: checkout conversion · intent misunderstanding

“Sessions backed by memory showed materially stronger outcomes: grocery-agent sessions converted to checkout basket at a ~24% higher relative rate, while open-ended restaurant-assistant queries converted at a ~15% higher relative rate vs.”article, stated

Outcomes

The source reports grocery and restaurant conversion lifts.

“Similarly sessions with this memory were ~33% less likely to misunderstand user intent, suggesting that persistent context helps reduce friction and keep agents better aligned with user expectations as measured by our LLM judge evals.”article, stated