ExtraltExtralt

Data model

Extralt separates source observations from normalized records and cross-store entities. That separation keeps a page that was actually observed distinct from a Product or Variant inferred across several sources.

Lineage

Build

Create the customer dataset

Extract

Collect source product pages and catalogs

Tooling
RobotsSchedulesRunsImports
Data
Captures

Enrich

Normalize each Capture into one ecommerce model

Tooling
Enrichments
Data
Items

Extend

Connect equivalent products and their observations

Dashboard
GraphChanges
Data
ProductsVariantsListingsOffersReviewsStoresChanges

Explore

Use the customer dataset

Inspect and query the data built by Extract, Enrich, and Extend.

Dashboard
AgentOverviewMarketsChanges

Build follows the same Extract, Enrich, and Extend stages shown in the dashboard. Tooling records coordinate each stage; the resulting Captures, Items, relationships, and observations belong to the organization's ClickHouse dataset. Explore reads that dataset.

Entity grains

EntityOne record representsPrimary lineage or relationship
CaptureOne successfully extracted or imported pageRun or Import, source URL, observation time
ItemOne successfully enriched Capturecapture_id, enrichment_id
ProductOne normalized product familyParent of one or more Variants
VariantOne exact canonical configurationProduct and equivalent Listings
ListingOne source SKU identity in one Store and marketVariant, Store, source URL
OfferOne seller, price, and availability observationListing, Capture, Run, observation time
ReviewLatest normalized review aggregate for a Listing and StoreListing and Store
StoreOne host and country pairReferenced by Items, Listings, Offers, and Reviews
ChangeOne observed change to one entity aspectEntity, Run, observation time

Observations and current entities

Captures and Items are page-grain observations with source URL and time lineage. Offers and Changes are also observations: they record a fact at a point in time.

Products, Variants, Listings, Reviews, and Stores represent the latest known entity state exposed by current product views. The API and Explore views own that current-state contract; callers do not need to reason about ClickHouse merge behavior or storage engines.

Operational and analytical names

A Robot, Run, Enrich job, or Extend batch belongs to the control plane and configures or tracks processing work. A Capture, Item, Product, Variant, Listing, Offer, Review, Store, or Change belongs to the ClickHouse customer dataset.

A Robot contains extraction logic for a host and country. A Store currently represents a host and country in one organization's analytical dataset. They may describe the same website and market, but they do not share an identity or lifecycle. Creating or using a Robot does not create a globally shared retailer entity.

Scope boundaries

The dataset contains observed public product evidence. It does not contain sales, transactions, revenue, turnover, traffic, market share, demand, margin, or promotion codes that were not visible in the extracted data.

Coverage is conditional on the stores, countries, URLs, and observation times the organization selected. “Current” means the latest observation in that dataset, not a continuously synchronized view of the whole market.

Continue with the access-surface matrix, the semantic model, and query semantics.