Uber Eats has launched INCA (INventory and CAtalog), a scalable catalog system for its global platform to manage large, diverse product inventories from supermarkets, pharmacies, and other retail partners. INCA addresses the limits of Uber Eats’ original restaurant-focused architecture, which was optimized for low SKU counts and direct pass-through cataloging, but could not meet the scale, metadata complexity, and compliance requirements of retail environments.
INCA processes billions of catalog changes daily and is designed to update product data in near real time, with sub-minute latency for changes such as pricing or availability. It unifies ingestion, enrichment, publishing, and indexing pipelines so customers see accurate and up-to-date products across Uber Eats’ applications.
Uber Eats engineers describe retail catalog management as an “ambiguous and complex problem space”. A product may be ingested, but its availability can be altered by downstream factors that influence whether and how the item surfaces to customers. Some challenges of supporting grocery and retail inventories, including search optimization and relevance, were discussed in a QCon presentation and a related article on optimizing search systems.
The data model uses a generic “entity + extensions” structure, allowing flexible representation of varied attributes such as nutritional details, compliance tags, or store hours. Both retailer-provided IDs and internal UUIDs are supported to reduce duplication or product mismatch when identifiers change.
At the core of the model is the item, or “offering”, representing what is sold, price, availability, and quantity. Items are linked to the retailer, catalog sections, and fulfillment options, and connect to a product detailing attributes like nutritional information, dimensions, and fees.
INCA catalog model (Source: Uber Engineering blog post)
INCA’s architecture is guided by six core principles: unlimited scalability; extensibility for adding new attributes without schema redesign; smart, configurable rules for merchants, regions, or product types; enrichment-first processing to improve product data before publishing; taxonomy-driven catalog structuring; and resilient ingestion that supports push and pull APIs, throttling, and fault tolerance.
End-to-end catalog flow (Source: Uber Engineering blog post)
Catalog ingestion supports multiple integration patterns, including CSV uploads over SFTP and mapping via Starlark scripts for flexible attribute transformation. Fault-tolerant ingestion is coordinated through Cadence workflows, enabling both incremental and full catalog syncs. Publishing selects the best attribute from multiple sources, using a prioritized merge specification. Online enrichers and validation providers run during publishing to enhance and verify data.
Entity and extensions–based data model used in INCA (Source: Uber Engineering blog post)
Enrichment services improve raw product data with LLM-generated descriptions, classification, canonical linking, and compliance checks. Regression detection monitors anomalies like mass SKU drops, zeroed pricing, or aisle removal, helping teams fix issues before they impact customers.
INCA manages hundreds of millions of SKUs across non-restaurant verticals, providing structured, enriched, and discoverable product data across Uber Eats’ retail catalog. Catalog versioning features enable near-instant rollback of updates at both the global and single-store level, allowing teams to quickly recover from errors or anomalies without disrupting customer-facing services.