Retail data is fragmented across dozens of systems. Ekyam is the semantic layer that unifies it — merging a Knowledge Graph, Vector Database, and Document Store into a single governed platform that gives every team one trusted language for the business.

Business Consumers
BI Dashboards

BI Dashboards

Tableau · Power BI · Looker

Reports & Analytics

Reports & Analytics

Scheduled · Ad-hoc · Self-service

Chat / NL Queries

Chat / NL Queries

Business users ask questions in plain language

Downstream Apps

Downstream Apps

APIs · Embedded analytics · RMQ

AI & Automation
AI Workflow Agents

AI Workflow Agents

Autonomous agents that orchestrate multi-step retail workflows — reorder triggers, anomaly investigation, vendor follow-ups — pulling context from the semantic layer in real time.

ML Models

ML Models

Demand forecasting, dynamic pricing, customer segmentation, and churn prediction — all trained on canonical, governed data from the semantic layer. Clean features, reliable outputs.

MCP Servers

MCP Servers

Model Context Protocol endpoints that expose the semantic layer's knowledge graph, metrics, and canonical data as structured tool calls — letting any LLM or agent query trusted retail data.

Trusted, consistent metrics & governed access
Ekyam Semantic Layer Platform
Standards

Standards

Canonical ModelsDefinitionsVersioningData Catalog
Meaning

Meaning

OntologyKnowledge GraphMetric RegistryInference Rules
Trust

Trust

Quality RulesLineageProvenanceValidations

EKYAM — Platform Core

Unified Semantic Layer
Knowledge Graph

Knowledge Graph

Entity relationships + Ontology + Inference

Canonical retail entities (Product, SKU, Customer, Store, Vendor, Order) are nodes. Ontology edges encode business meaning — Product → hasSKU → SKU, Customer → purchased → Order. Inference rules derive new facts: if a customer bought in-store and online, they're omnichannel.

hasSKUpurchasedcontainssoldAthasPricehasSKUsuppliedByProductCustomerOrderStorePriceSKUVendor
Cross-System Identity Resolution
RetailPro SKU SAP Material PLM Style Shopify PID Canonical SKU
POS Customer CRM Contact Web Account Loyalty ID Canonical Customer
Vector DB

Vector Database

Embeddings + Semantic search + Similarity

Converts unstructured data — product descriptions, customer reviews, images, support tickets — into high-dimensional embeddings. Enables semantic similarity search (“find products like this”) and powers AI/RAG pipelines with contextual retrieval from the knowledge graph (GraphRAG).

Semantic SearchProduct SimilarityCustomer EmbeddingsGraphRAGNearest NeighborImage VectorsReview Analysis
How it works with the Knowledge Graph
  1. KG identifies relevant entity subgraph (e.g., all SKUs in "Men's Footwear").
  2. Vector DB retrieves semantically similar items within that scoped context.
  3. Results combine structural precision (graph) with semantic richness (embeddings).
  4. Answers are explainable — path from entity to result is visible.
MongoDB

MongoDB — Document Store

Structured + Unstructured canonical records

The persistent store for canonical entity documents. Flexible schema handles structured data (pricing, inventory counts) alongside semi-structured / unstructured data (variant attributes, rich descriptions, images) — no forced normalization.

  "entity": "Product",
  "canonical_sku": "EKYAM-SKU-40291",
  "alternate_ids": {
    "retailpro": "RP-7821""sap": "MAT-5590"
    "shopify": "gid://Product/881""plm": "STY-223"
  },
  "variants": [{ "size": "M""color": "Navy""cost": 8.50 }],
  "category": "Apparel.Tops.Tees",
  "_version":3,  "_valid_from":"2026-01-15T00:00Z"
Cache

Caching Layer

Redis + Materialized views + Semantic cache

Multi-tier caching accelerates every query path. Materialized aggregate views serve common dashboard queries instantly. Redis semantic cache (LangCache) deduplicates AI/LLM calls by matching query meaning, not just exact text. Event-driven invalidation keeps caches fresh.

<50ms
Hot query response
~70%
Cache hit rate
Real-time
Invalidation via CDC
Semantic
AI query dedup
Cache Tiers

L1 — Redis Hot Cache: Pre-computed aggregates, session state, real-time counters.

L2 — Materialized Views: Common joins & aggregations refreshed on schedule or CDC trigger.

L3 — Semantic Cache: Embedding-based match for AI queries ("show me revenue" ≈ "what's our total sales").

Ontology
Ontology — Retail Meaning & Relationships
Structured + Unstructured canonical records
Entity types: Product, SKU, Customer, Store, Vendor, Order, Inventory, Price, Promotion, Category
Relationship edges: Product → hasSKU → SKU, Order → containsItem → SKU, Customer → memberOf → LoyaltyTier
Inference rules: If Customer purchased online + in-store → classify as Omnichannel.
Hierarchy navigation: Department → Category → Subcategory → Style → SKU. Roll-up and drill-down for any metric.
Constraints: Every SKU must have exactly one canonical Product parent. Every Order must reference a valid Customer and at least one SKU.
Chronicle
Chronicle — Event Semantics & Temporal Truth
Redis + Materialized views + Semantic cache
Event types: Created → Updated → Adjusted → Received → Shipped → Sold per entity
Bitemporal model: Valid Time (when it's true in reality) vs. Transaction Time (when recorded). Answer "what was the price on Jan 5?" accurately.
Append-only event log: Immutable history. Every state change is an event — never overwritten, always auditable
Ordering guarantee: Consistent-hash routing (RabbitMQ) ensures events for the same entity key arrive in causal order to downstream consumers.
Idempotency: Every event carries a unique ID + version. Downstream systems can safely replay without double-counting.

Event Timeline — Product Lifecycle Example

Product Created ProductCreated
New SKU entered catalog from PLM. Canonical record created in MongoDB.
Price Updated PriceUpdated
Markdown applied. Valid_from: Feb 1. Transaction_time: Jan 28.
Stock Received InventoryReceived
Warehouse inbound from vendor. On-hand quantity increased by 500 units.
Inventory Adjusted InventoryAdjusted
Cycle count correction: −12 units. Reason: damaged goods. Auditable entry.
Order Placed OrderCreated
Customer purchased 2 units via Shopify. Inventory allocated, fulfillment triggered.
Item Shipped ShipmentDispatched
WMS confirms dispatch. Tracking number linked. On-hand decremented.
Every entity records a full event history with bitemporal timestamps

Bitemporal Queries Answered

Valid Time
When it's true in reality.
"Price was $24.99 from Feb 1-14."
Transaction Time
When we recorded it.
"Entered Jan 28 at 3:42 PM."
Query Example
"What did we believe on-hand was on Jan 15, as of Jan 20?"
Downstream ordering (RMQ / APIs): Events for the same entity key (SKU, Customer ID) are routed to the same queue partition via consistent-hash exchange — guaranteeing causal order. Each event carries a monotonic version number for idempotent processing.
Events consumed from Kafka → Entity resolution → Canonical records built
Event Ingestion Layer

Apache Kafka — Event Streaming Platform

Real-time CDC + Event Capture
retail.pos.transactions
retail.pos.transactionsRetailPro POS events — sales, returns, voids
erp.sap.materials
erp.sap.materialsSAP CDC — material masters, POs, GR/GI
ecomm.shopify.orders
ecomm.shopify.ordersShopify webhooks — orders, carts, products
plm.styles.changes
plm.styles.changesPLM events — style creation, BOM changes
wms.fulfillment.events
wms.fulfillment.eventsWMS — receipts, picks, shipments, transfers
crm.loyalty.activity
crm.loyalty.activityCRM/Loyalty — enrollments, rewards, profiles
All source system events flow into Kafka topics via CDC connectors & webhooks
CDC connectors · Webhooks · Batch loaders · API polling
Fragmented Retail Source Systems
RetailPro

RetailPro

POS transactions In-store sales

SAP ERP

SAP ERP

Materials · GL Purchasing

Shopify

Shopify

Online orders Web catalog

PLM

PLM

Styles · Collections Product design

WMS

WMS

Warehouse ops Fulfillment

Loyalty / CRM

Loyalty / CRM

Customer profiles Rewards

production
InterTight