> For the complete documentation index, see [llms.txt](https://docs.centercheck.com/xbxMQACVcX90R5ugyGdt/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.centercheck.com/xbxMQACVcX90R5ugyGdt/data-schema-reference/schema.md).

# Overview & Entity Relationships

CenterCheck's data model is organized around the **Business Location** — every dataset in the schema is anchored to a physical point of interest. Metrics, demographics, and behavioral signals are all delivered at the Business Location level, scoped to a specific time period.

The schema is composed of seven core entities:

| Entity                                                                                                               | Description                                                                   |
| -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| [Business Location](/xbxMQACVcX90R5ugyGdt/data-schema-reference/schema/business-location.md)                         | The foundational record for each physical store or venue                      |
| [Brand](/xbxMQACVcX90R5ugyGdt/data-schema-reference/schema/brand.md)                                                 | Retail chain or multi-location business entity grouping Business Locations    |
| [Transactions & Sales Metrics](/xbxMQACVcX90R5ugyGdt/data-schema-reference/schema/transactions-and-sales-metrics.md) | Revenue, transaction count, and unique customer count per location per period |
| [Shopper Demographics](/xbxMQACVcX90R5ugyGdt/data-schema-reference/schema/shopper-demographics.md)                   | Shopper profiles by age, gender, income, ethnicity, and other attributes      |
| [Spend Journey](/xbxMQACVcX90R5ugyGdt/data-schema-reference/schema/spend-journey.md)                                 | Customer movement patterns before and after visiting a Business Location      |
| [ZIP Code Capture](/xbxMQACVcX90R5ugyGdt/data-schema-reference/schema/zip-code-capture.md)                           | Origin ZIP codes of shoppers visiting each Business Location                  |
| [Time of Sales](/xbxMQACVcX90R5ugyGdt/data-schema-reference/schema/time-of-sales.md)                                 | Transaction and revenue distribution by day of week and hour of day           |

***

## Entity Relationships

All entities relate back to a central **Business Location** record via `business_location_id`. Metric and demographic datasets are further scoped by `start_at` and `end_at` fields, enabling time-series analysis.

## Key Design Principles

**Business Location is the anchor.** Every dataset joins back to a Business Location via `business_location_id`. This means all analysis — whether financial, demographic, or behavioral — can be consistently scoped to a physical place.

**Brand groups locations.** A Brand is linked to one or more Business Locations via `brand_id`, enabling chain-level aggregation across all locations belonging to the same retail brand.

**Time-scoped metrics.** Transactions, demographics, ZIP capture, and spend journey data are all scoped to a reporting period via `start_at` and `end_at`. This enables trend analysis, period-over-period comparisons, and seasonal benchmarking.

**Spend Journey uses journey arrays.** Unlike flat metric datasets, the Spend Journey entity delivers `previous_locations`, `next_locations`, and `secondary_next_locations` as nested JSON arrays. Each entry in these arrays references another Business Location by `location_id`, along with `transaction_pct`, `customer_pct`, and `revenue_pct` representing the share of transactions, unique customers, and revenue attributed to customers who followed that journey path.

**Parent-child location hierarchy.** Business Locations support a self-referencing hierarchy via `parent_business_location_id`, allowing individual stores to be rolled up to a parent complex (e.g. a mall or shopping center).

**Nested arrays require unnesting.** The Spend Journey dataset deliver data as nested JSON arrays. When ingesting into a data warehouse, these fields should be exploded into individual rows for row-level analysis.
