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:
- Long-term and conversational preferences
- Task-aware retrieval
- Live agent latency
- Memory freshness
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
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
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
Models used: LLMs · embedding models · LLM judge evals
Scale
- Grocery-agent memory sessions converted to checkout at about a 24% higher relative rate.“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
- Open-ended restaurant-assistant queries converted at about a 15% higher relative rate.“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
- Sessions with memory were about 33% less likely to misunderstand user intent.“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
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.
Use raw conversation logs as long-term memory
Rejected because: Conversation logs are noisy, duplicative, and unstructured, so they need extraction and classification.
Pre-compute all embeddings only
Rejected because: DoorDash migrated toward dynamic server-side embedding for simpler and more flexible real-time writes.
Patterns
agent-memory (personalization)
Agents use structured long-term and conversational memory to personalize food discovery.
retrieval-ranking (memory-retrieval)
The memory system retrieves memories based on the current task rather than dumping raw memory.
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.
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.
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.
Evaluation
DoorDash measured conversion and misunderstanding rates for sessions with memory.
Metrics: checkout conversion · intent misunderstanding
Outcomes
- Memory-backed sessions converted better and misunderstood users less often.
The source reports grocery and restaurant conversion lifts.