Sample data · SimEDW

Enterprise-scale sample warehouses.

Three fully simulated EDWs — Amazing (omnichannel ecommerce), Hilson (global hotel group), and P&C (CPG manufacturing) — with realistic vendor-native schemas, medallion-ready bronze in ClickHouse, and live event streams. Built for testing semantic layers, dimensional modeling, and self-service analytics on VibeBI.

3
Industry packs
111
Vendor source systems
201
Bronze tables total
60s
Live data refresh
46 vendor systems 79 bronze tables 5 stages DB amazing_v2

Company profile

Fictional company notice: "Amazing" is an entirely fictitious company created solely for demonstration purposes. It is not affiliated with, endorsed by, or intended to represent Amazon.com, Inc. or any real company.

Amazing is a global omnichannel retailer selling tens of millions of products across its own first-party inventory, a third-party seller marketplace, and a Prime subscription program. Customers shop via the web storefront, mobile app, and physical retail locations; orders are fulfilled from a network of fulfillment centers and drop-ship suppliers worldwide.

The business spans advertising, financial services, and a B2B wholesale arm alongside its consumer commerce operations — generating roughly 2,800 order headers and 4,200 lines on a typical weekday, with a Prime Day demand surge (July 11–13) across retail, web, marketing, and marketplace channels.

Sample entities: The table below shows representative business entities and their source systems; the complete EDW includes additional entities, sub-types, and specialized tables (e.g., returns, subscriptions, recommendations, logistics tracking) across all 79 bronze tables. In V2, each entity is a domain class that owns lifecycle methods and emits rows through SourceSystem adapters — not a central procedural generator.

EntitySource systemExample tables
Customer (CRM)salesforceaccount · contact · address
Prime / subscriptionzuoraprime_membership · subscription_event
SKU / productakeneo_pimsku · category · brand
Order (OMS)manhattan_omsorder_header · order_line · return_authorization
Warehouse (WMS)manhattan_wmsstock_balance · movement
Paymentsstripepayment · refund
GL / COAsap_s4gl_account · journal_line
Support / VoCzendesk · qualtricsticket · nps_response

OOP domain model

AmazingEnterpriseSimulation sequences the day; domain objects own emission logic.

OrderToCash is the primary process spine. CommerceOrder.execute_lifecycle() walks the state machine — capture, payment, pick/pack, invoice, GL — and each step calls runtime.record(system, object, payload) on the appropriate vendor adapter. Portfolio bootstrap (AmazingPortfolio.publish_foundation()) masters CRM accounts, PIM SKUs, and fulfillment nodes before orders run.

Domain entityNatural keysLifecycle methods
CustomerAccountsf_account_idCRM account mastered in Salesforce
ProductSkusku, asinPIM publish → OMS/WMS linkage
FulfillmentNodefacility_codeInventory node registration
CommerceOrderorder_numbercapture()authorize_payment()fulfill()invoice()post_gl()
AccountingDocumentinvoice_id, belnrBalanced invoice + journal posting
flowchart LR
  PORT[AmazingPortfolio.publish_foundation]
  ORD[CommerceOrder.execute_lifecycle]
  PORT --> ORD
  ORD --> CAP[capture in OMS]
  CAP --> PAY[authorize in Stripe]
  PAY --> FUL[pick/pack in WMS]
  FUL --> INV[invoice in Oracle Billing]
  INV --> GL[post journal in SAP S/4]
          

Business value chain

Capability layers left-to-right; arrows are primary flows.

Sample view: This illustrates the primary value chain across the organization; the full generated EDW includes all 46 source systems with cross-functional integrations and secondary data flows not shown here.

%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart LR
  subgraph cust["Customer & growth"]
    direction TB
    SF[salesforce]
    ZU[zuora Prime]
    HS[hubspot]
    GA[analytics]
    SF ~~~ ZU
    ZU ~~~ HS
    HS ~~~ GA
  end
  subgraph product["Product"]
    direction TB
    PIM[akeneo_pim]
    ADS[amazon_ads]
    PIM ~~~ ADS
  end
  subgraph commerce["Commerce"]
    direction TB
    OMS[manhattan_oms]
    STR[stripe]
    SC[seller_central]
    OMS ~~~ STR
    STR ~~~ SC
  end
  subgraph supply["Supply chain"]
    direction TB
    ARIBA[sap_ariba]
    WMS[manhattan_wms]
    OTM[oracle_otm]
    ARIBA ~~~ WMS
    WMS ~~~ OTM
  end
  subgraph corp["Corporate"]
    direction TB
    WD[workday]
    S4[sap_s4]
    WD ~~~ S4
  end
  cust --> product --> commerce --> supply --> corp
          

Functional org by department

Enterprise HQ and direct-report functions with representative source systems.

Sample org structure: This shows the primary reporting lines; the full Amazing EC organization includes additional teams, sub-departments, and matrix roles across all 46 vendor integrations.

flowchart TB
  CEO[Amazing EC]
  CEO --> COM[Commerce]
  CEO --> MKT[Marketing]
  CEO --> SC[Supply chain]
  CEO --> FIN[Finance]
  CEO --> HR[HR]
  CEO --> OPS[Operations]
  CEO --> LEG[Legal & security]
          

EDW maturity stages

Catalog stage groups tables from foundation through corporate.

Sample breakdown shown: This is a representative slice of the full 79-table inventory distributed across maturity layers; the actual distribution reflects the complete data lineage from foundation through corporate gold tables.

flowchart LR
  F["foundation
~21 tables"] C["commercial
~11 tables"] R["revenue
~15 tables"] O["operations
~14 tables"] CO["corporate
~18 tables"] F --> C --> R --> O F -.-> CO R -.-> CO

Core business entities

Logical relationships and anchor keys. Bronze values differ by source until VibeBI silver conforms them.

Sample diagram: This entity relationship diagram shows the core logical model; the full generated EDW contains 79 bronze tables across 46 vendor systems with thousands of additional detail tables and lineage branches. Entity instances in V2 carry entity_refs on every emitted event for joinability testing.

erDiagram
  CUSTOMER ||--o{ ORDER : places
  CUSTOMER ||--o{ SUBSCRIPTION : prime
  CUSTOMER ||--o{ PAYMENT : pays
  PRODUCT ||--o{ ORDER_LINE : contains
  ORDER ||--|{ ORDER_LINE : lines
  ORDER ||--o{ RETURN : may
  ORDER ||--o{ SHIPMENT : fulfills
  SELLER ||--o{ ORDER_LINE : fulfills
  SUPPLIER ||--o{ PO : issues
  LOCATION ||--o{ INVENTORY : stocks
          

Source system landscape

46 vendor prefixes, 79 bronze tables.

Sample systems shown: The diagram below illustrates representative vendor systems; the complete generated dataset includes all 46 systems with their full table lineage and integration points across history backfill and live streams.

Each table follows the {source_system_}__{entity} naming convention (e.g. salesforce__account, manhattan_oms__order_header), preserving the vendor-native column shape and foreign keys from each product's real export schema. VibeBI infers master-data conformance when it promotes records to silver and gold.

flowchart TB
  subgraph foundation["Foundation"]
    direction TB
    f1["salesforce · workday
akeneo_pim · zuora"] end subgraph commercial["Commercial"] direction TB c1["hubspot · marketo
amazon_ads · cpq"] end subgraph revenue["Revenue"] direction TB r1["manhattan_oms · stripe
oracle_billing"] end subgraph operations["Operations"] direction TB o1["manhattan_wms · sap_ariba
oracle_otm"] end subgraph corporate["Corporate"] direction TB co1["sap_s4 · adp
servicenow · okta"] end foundation --> commercial --> revenue --> operations foundation --> corporate

End-to-end data flow

V2 OOP sim → bronze in ClickHouse; VibeBI semantic → silver → gold on the same instance.

OOP path: kb/industries/amazing/ defines the operations spine and entity model; AmazingEnterpriseSimulation sequences domain lifecycles; SourceSystem adapters export vendor-native rows into amazing_v2.

flowchart LR
  subgraph kb["kb/industries/amazing"]
    SPINE[entity + process models]
  end
  subgraph sim["sim/industries/amazing"]
    ORCH[AmazingEnterpriseSimulation]
    DOM["CommerceOrder.execute_lifecycle()
CustomerAccount · ProductSku …"] end subgraph simedw["SimEDW V2"] ADP[SourceSystem adapters] CHB[("ClickHouse amazing_v2
79 bronze tables")] end subgraph vibebi["VibeBI"] SEM[("semantic")] SIL[("silver views")] GLD[("gold views")] end DASH["Dashboards & agents"] SPINE --> DOM ORCH --> DOM --> ADP --> CHB CHB --> SEM --> SIL --> GLD --> DASH

Live bronze cycle

./live-v2-amazing — 60s tick via AmazingEnterpriseSimulation.generate().

Live frequency: Each tick runs the OrderToCash state machine for the business day — domain objects emit correlated OMS, payment, WMS, billing, and GL rows; scale varies per tick (default base 5). Backfill any history span you need (--days N on the live script or CLI).

flowchart LR
  START([60s tick]) --> SIM[AmazingEnterpriseSimulation.generate]
  SIM --> FOUND[Portfolio.publish_foundation]
  FOUND --> ORD[CommerceOrder lifecycles]
  ORD --> EVT[SourceSystem events]
  EVT --> BRZ[Append bronze rows]
  BRZ --> WAIT[Sleep] --> START
          

Live event graph

OrderToCash state machine — each transition is a domain method emitting vendor rows.

Process spine: Defined in kb/industries/amazing/process_model.yaml. Late-arrival modes (payment webhook lag, WMS scan delay) and exception modes (partial refund, split shipment) are modeled as alternate paths on the same entity lifecycle.

flowchart LR
  CRE[created] --> AUTH[authorized]
  AUTH --> ALLOC[allocated]
  ALLOC --> PICK[picked]
  PICK --> PACK[packed]
  PACK --> INV[invoiced]
  INV --> POST[posted]
  AUTH -.->|payment_failure| FAIL[payment_failed]
  PACK -.->|split| SPLIT[partial_shipment]
          

Bronze table categories

Same lineage envelope on every table; category drives live behavior.

Sample categories: All 79 bronze tables follow this three-category pattern (snapshot, transaction, event) with consistent metadata and state tracking; the diagram illustrates the pattern used across the full warehouse.

flowchart LR
  subgraph snap["snapshot"]
    direction TB
    S1["Master / dimension"]
    S2[Daily full refresh]
  end
  subgraph txn["transaction"]
    direction TB
    T1["Orders · payments · POs"]
    T2[Append each tick]
  end
  subgraph evt["event"]
    direction TB
    E1["Sessions · movements"]
    E2[Append each tick]
  end
  BRONZE[("amazing_v2 bronze row")]
  snap --> BRONZE
  txn --> BRONZE
  evt --> BRONZE
          
31 vendor systems 62 bronze tables 5 stages DB hilson_v2

Company profile

Fictional company notice: "Hilson" is an entirely fictitious company created solely for demonstration purposes. It is not affiliated with, endorsed by, or intended to represent Hilton Inc., Hyatt Hotels Corporation, or any real hospitality company.

Hilson Hospitality Group is a global hotel operator with ~680 properties across 18 brands — from luxury flags (Waldorf-grade, Conrad-grade) through full-service (Hilson, DoubleTree-grade) to select-service and extended-stay tiers. Each property runs an on-premise Opera PMS and central Amadeus CRS, serving a mix of transient leisure, corporate negotiated, and group/convention guests.

The business spans loyalty (Hilson Honors with millions of members), group & convention sales (salesforce pipeline, CPQ room blocks), food & beverage outlets (MICROS Simphony POS), owner/franchise reporting (Oracle Fusion statements), and corporate functions — generating roughly 1,900 PMS reservations and 1,750 folio headers on a typical weekday, with a summer travel surge (June–August) that lifts occupancy, ADR, F&B spend, and loyalty activity across all properties.

Sample entities: The table below shows representative business entities and their source systems; the complete EDW includes additional entities, sub-types, and specialized tables (e.g., OTA channel events, rate-plan restrictions, franchise legal agreements, deal-desk redlines) across all 62 bronze tables. In V2, StayReservation and related domain classes emit PMS, CRS, folio, and loyalty rows through source-system adapters as the stay lifecycle progresses.

EntitySource systemExample tables
Property masteroracle_operaproperty · room_type · occupancy_snapshot
Brand / CRShilson_brand · amadeus_hospbrand · property_profile
Loyalty memberhilson_loyaltymember · point_transaction · redemption
Reservation (PMS/CRS)oracle_opera · amadeus_hospreservation · reservation_change_event
Folio / billingoracle_operafolio_header · folio_charge
F&B outletmicros_simphonycheck_header · check_line
Paymentsadyenpayment · refund
Group salessalesforce · salesforce_cpqaccount · opportunity · quote
Housekeepingoracle_operaroom_status_event · housekeeping_task
Owner / GLoracle_fusion · sap_s4owner_statement · journal_line
Guest experiencemedallia · zendeskstay_survey · guest_case

OOP domain model

HilsonEnterpriseSimulation sequences the day; domain objects own emission logic.

ReservationToLoyaltyAndOwnerReporting is the primary process spine. StayReservation.execute_lifecycle() walks booking → PMS sync → folio charges → payment → loyalty points → occupancy snapshot → owner statement → GL. HilsonPortfolio.publish_foundation() masters brands, properties, and Honors members before reservations run.

Domain entityNatural keysLifecycle methods
Brandbrand_codeBrand ladder mastered in hilson_brand
Propertyhotel_codeProperty + room inventory in Opera/CRS
GuestMemberhonors_member_idLoyalty profile across booking and stay
StayReservationcrs_confirmation_nobook()sync_pms()open_folio()settle()award_points()
PropertyOccupancyhotel_code, dateDaily ADR / RevPAR snapshot
PropertyFinanceowner_statement_idOwner statement + balanced GL posting
flowchart LR
  PORT[HilsonPortfolio.publish_foundation]
  STAY[StayReservation.execute_lifecycle]
  PORT --> STAY
  STAY --> BOOK[CRS booking]
  BOOK --> PMS[PMS sync]
  PMS --> FOL[folio charges]
  FOL --> PAY[Adyen settlement]
  PAY --> LOY[Honors points]
  LOY --> OWN[owner statement + GL]
          

Guest & property value chain

From brand and property master through distribution, stay, settlement, and owner reporting.

Sample view: This illustrates the primary value chain through the Hilson ecosystem; the full generated EDW includes all 31 source systems with cross-functional integrations, secondary revenue streams, and loyalty lifecycle flows not shown here.

%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart LR
  subgraph master["Brand & property master"]
    direction TB
    BR[hilson_brand]
    PROP[oracle_opera property]
    RMS[ideas_rms rate plans]
    BR ~~~ PROP
    PROP ~~~ RMS
  end
  subgraph dist["Distribution & booking"]
    direction TB
    AMA[amadeus_hosp CRS]
    SM[siteminder OTA]
    AMA ~~~ SM
  end
  subgraph stay["Stay & revenue"]
    direction TB
    RES[oracle_opera reservation]
    FOL[folio header / charges]
    SIM[micros_simphony F&B]
    PAY[adyen payments]
  end
  subgraph loy["Loyalty & VoC"]
    direction TB
    HON[hilson_loyalty member]
    MED[medallia · qualtrics]
    HON ~~~ MED
  end
  subgraph corp["Owner & corporate"]
    direction TB
    OWN[oracle_fusion owner stmt]
    SAP[sap_s4 GL]
    GRP[salesforce group sales]
    OWN ~~~ SAP
    SAP ~~~ GRP
  end
  master --> dist --> stay --> loy
  stay --> corp
          

Functional org by department

Enterprise HQ and direct-report functions with representative source systems.

Sample org structure: This shows the primary reporting lines; the full Hilson organization includes additional regional management, brand-specific teams, and shared-services functions across all 31 vendor integrations.

flowchart TB
  CEO[Hilson Hospitality Group]
  CEO --> BRAND[Brand & marketing]
  CEO --> DIST[Distribution & revenue mgmt]
  CEO --> PROP[Property operations]
  CEO --> SALES[Group sales]
  CEO --> LOY[Loyalty program]
  CEO --> FIN[Finance & owner reporting]
  CEO --> HR[Human resources]
  CEO --> GX[Guest experience]
  CEO --> LEG[IT / security / legal]
          

EDW maturity stages

Catalog stage groups tables from foundation through corporate.

Sample breakdown shown: This is a representative slice of the full 62-table inventory distributed across maturity layers; the actual distribution reflects the complete data lineage from foundation through corporate gold tables.

flowchart LR
  F["foundation
~15 tables"] C["commercial
~7 tables"] GR["guest_revenue
~17 tables"] PO["property_ops
~7 tables"] CO["corporate
~16 tables"] F --> C --> GR --> PO F -.-> CO GR -.-> CO

Core business entities

Logical relationships and anchor keys. Property (hotel_code) is the spine; guest identity via Honors and stay tables.

Sample diagram: This entity relationship diagram shows the core logical model; the full generated EDW contains 62 bronze tables across 31 vendor systems with thousands of additional detail tables and lineage branches.

erDiagram
  PROPERTY ||--o{ RESERVATION : hosts
  PROPERTY ||--o{ RATE_PLAN : offers
  BRAND ||--o{ PROPERTY : flags
  MEMBER ||--o{ RESERVATION : books
  MEMBER ||--o{ POINT_TXN : earns
  MEMBER ||--o{ REDEMPTION : redeems
  RESERVATION ||--|| FOLIO : bills
  FOLIO ||--o{ FOLIO_CHARGE : lines
  RESERVATION ||--o{ FNB_CHECK : posts
  CORP_ACCOUNT ||--o{ OPPORTUNITY : pursues
  SUPPLIER ||--o{ PO : supplies
  PROPERTY ||--o{ WORK_ORDER : maintains
          

Source system landscape

31 vendor prefixes, 62 bronze tables.

Sample systems shown: The diagram below illustrates representative vendor systems; the complete generated dataset includes all 31 systems with their full table lineage and integration points across history backfill and live streams.

Each table follows the {source_system_}__{entity} naming convention (e.g. oracle_opera__reservation, hilson_loyalty__member), preserving the vendor-native column shape and foreign keys from each product's real export schema. VibeBI infers master-data conformance when it promotes records to silver and gold.

flowchart TB
  subgraph foundation["Foundation"]
    direction TB
    f1["hilson_brand · oracle_opera property · room_type"]
    f2["amadeus_hosp · ideas_rms · hilson_loyalty member"]
    f3["salesforce account · workday · sap_s4 · coupa supplier"]
  end
  subgraph commercial["Commercial"]
    direction TB
    c1["salesforce pipeline · CPQ · hubspot · marketo"]
  end
  subgraph guest_rev["Guest revenue"]
    direction TB
    g1["oracle_opera reservation · folio · events"]
    g2["amadeus_hosp · siteminder · micros_simphony"]
    g3["adyen · loyalty points · oracle_fusion owner"]
  end
  subgraph prop_ops["Property ops"]
    direction TB
    p1["housekeeping · occupancy · ibm_maximo · coupa PO"]
  end
  subgraph corporate["Corporate"]
    direction TB
    co1["sap_s4 journals · adp · ukg · anaplan"]
    co2["medallia · qualtrics · zendesk · concur"]
    co3["servicenow · okta · splunk · ironclad · onetrust"]
  end
  foundation --> commercial --> guest_rev --> prop_ops
  foundation --> corporate
  guest_rev --> corporate
          

End-to-end data flow

V2 OOP sim → bronze in ClickHouse; VibeBI semantic → silver → gold on the same instance.

OOP path: kb/industries/hilson/ defines the operations spine and entity model; HilsonEnterpriseSimulation sequences domain lifecycles; SourceSystem adapters export vendor-native rows into hilson_v2.

flowchart LR
  subgraph kb["kb/industries/hilson"]
    SPINE[entity + process models]
  end
  subgraph sim["sim/industries/hilson"]
    ORCH[HilsonEnterpriseSimulation]
    DOM["StayReservation.execute_lifecycle()
Property · GuestMember …"] end subgraph simedw["SimEDW V2"] ADP[SourceSystem adapters] CHB[("ClickHouse hilson_v2
62 bronze tables")] end subgraph vibebi["VibeBI"] SEM[("semantic")] SIL[("silver views")] GLD[("gold views")] end DASH["Dashboards & agents"] SPINE --> DOM ORCH --> DOM --> ADP --> CHB CHB --> SEM --> SIL --> GLD --> DASH

Live bronze cycle

./live-v2-hilson — 60s tick via HilsonEnterpriseSimulation.generate().

Live frequency: Each tick runs the reservation-to-loyalty state machine — domain objects emit correlated CRS, PMS, folio, F&B, payment, loyalty, and GL rows; scale varies per tick (default base 5). Backfill any history span you need (--days N); Hilson includes gap detection on the reservation anchor table.

flowchart LR
  START([60s tick]) --> SIM[HilsonEnterpriseSimulation.generate]
  SIM --> FOUND[Portfolio.publish_foundation]
  FOUND --> STAY[StayReservation lifecycles]
  STAY --> EVT[SourceSystem events]
  EVT --> BRZ[Append bronze rows]
  BRZ --> WAIT[Sleep] --> START
          

Guest stay event graph

ReservationToLoyaltyAndOwnerReporting state machine — each transition emits vendor rows.

Process spine: Defined in kb/industries/hilson/process_model.yaml. Exception modes (no-shows, chargebacks, room upgrades) branch from the same entity lifecycle rather than independent random inserts.

flowchart LR
  BOOK[booked] --> SYNC[synced_to_pms]
  SYNC --> CHKIN[checked_in]
  CHKIN --> HOUSE[in_house]
  HOUSE --> CHKOUT[checked_out]
  CHKOUT --> SET[settled]
  SET --> PTS[points_posted]
  PTS --> OCC[occupancy_snapshotted]
  OCC --> OWN[owner_reported]
  OWN --> GL[posted_to_gl]
  SYNC -.->|no_show| NS[no_show]
  SET -.->|chargeback| CB[chargeback]
          

Bronze table categories

Same lineage envelope on every table; category controls live refresh vs micro-batch append.

Sample categories: All 62 bronze tables follow this three-category pattern (snapshot, transaction, event) with consistent metadata and state tracking; the diagram illustrates the pattern used across the full warehouse.

flowchart LR
  subgraph snap["snapshot"]
    direction TB
    S1["Property · brand · member masters"]
    S2[Daily full refresh]
  end
  subgraph txn["transaction"]
    direction TB
    T1["Reservations · folios · payments"]
    T2[Append each live tick]
  end
  subgraph evt["event"]
    direction TB
    E1["HK · OTA · surveys · access"]
    E2[Append each live tick]
  end
  BRONZE[("hilson_v2 bronze row")]
  snap --> BRONZE
  txn --> BRONZE
  evt --> BRONZE
          
34 vendor systems 60 bronze tables 5 stages DB pnc_v2

Company profile

Fictional company notice: "P&C" is an entirely fictitious company created solely for demonstration purposes. It is not affiliated with, endorsed by, or intended to represent The Procter & Gamble Company or any real CPG manufacturer.

P&C is a global consumer packaged goods manufacturer-marketer — a B2B2C model selling daily-use products through mass retail, club, grocery, and e-commerce channels across ~180 countries. Five Sector Business Units (SBUs) span Fabric & Home Care, Baby/Feminine/Family Care, Beauty, Health Care, and Grooming, with ~12 flagship brands (TidalWave, ComfortWrap, BrightSmile, EdgePro, and others) and eight manufacturing plants plus three regional distribution centers.

The business spans demand planning, raw-material procurement, MES production, quality release, finished-goods distribution, retail customer orders, trade marketing, and finance — generating correlated MES work orders, Ariba POs, OMS headers, OTM shipments, and SAP journal lines on each simulation day, with a Spring Clean surge (March–April) lifting fabric/home care demand, plant throughput, and retail sell-in across North America and EMEA.

Sample entities: The table below shows representative business entities and their source systems; the complete EDW includes additional entities, sub-types, and specialized tables (e.g., IoT sensor readings, maintenance work orders, trade promotions, CLM redlines) across all 60 bronze tables. In V2, ProductionBatch and CustomerOrder domain classes drive the MakeToShipToSell spine.

EntitySource systemExample tables
SBU / brand ladderpc_brandbrand · category
Finished good SKUakeneo_pimsku · brand · category
Plant / DC masteroracle_scmwarehouse · office
Demand forecastblueyonderforecast_daily
Raw material POsap_aribapurchase_order · purchase_order_line
Production batchsiemens_meswork_order
Quality releasemastercontrolquality_incident
Finished goods inventorymanhattan_wmsstock_balance · movement · pick_pack_event
Retail customer ordermanhattan_omsorder_header · order_line
Outbound shipmentoracle_otmshipment · shipment_tracking_event
Retail accountsalesforceaccount · opportunity · sales_activity
GL / COAsap_s4journal_entry · journal_line

OOP domain model

PcEnterpriseSimulation sequences the day; domain objects own emission logic.

MakeToShipToSell is the primary process spine. ProductionBatch.execute_lifecycle() walks forecast → procure → produce → QC release → finished goods; CustomerOrder.execute_lifecycle() walks OMS capture → WMS fulfill → OTM ship. PcPortfolio.publish_foundation() masters SBUs, brands, plants, SKUs, and retail accounts before batches and orders run. Service objects (PlantOperations, CommercialProgram, FinanceAndCorporate) emit supporting corporate and marketing rows.

Domain entityNatural keysLifecycle methods
Brandbrand_codeSBU/category ladder in pc_brand + PIM
ProductSkusku, material_numberPIM publish → MES material linkage
Plantfacility_codeManufacturing plant or DC registration
ProductionBatchwork_order_idforecast_demand()procure_materials()run_production()release_quality()receive_finished_goods()
RetailCustomersf_account_idTrade account in Salesforce
CustomerOrderorder_numberplace_order()fulfill()ship()
Supplierariba_supplier_idProcurement master + invoice linkage
flowchart LR
  PORT[PcPortfolio.publish_foundation]
  BATCH[ProductionBatch.execute_lifecycle]
  ORDER[CustomerOrder.execute_lifecycle]
  PORT --> BATCH
  PORT --> ORDER
  BATCH --> FCST[BlueYonder forecast]
  FCST --> PO[Ariba PO]
  PO --> MES[SIEMENS MES work order]
  MES --> QC[MasterControl release]
  QC --> WMS[WMS finished goods]
  ORDER --> OMS[OMS order]
  OMS --> SHIP[OTM shipment]
  SHIP --> GL[SAP S/4 journal]
          

Make-to-ship value chain

From brand portfolio through plan, make, move, sell, and corporate close.

Sample view: This illustrates the primary value chain across the P&C ecosystem; the full generated EDW includes all 34 source systems with cross-functional integrations, IoT plant telemetry, and trade marketing flows not shown here.

%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart LR
  subgraph portfolio["Portfolio & R&D"]
    direction TB
    PCB[pc_brand SBU ladder]
    PIM[akeneo_pim SKU]
    PCB ~~~ PIM
  end
  subgraph plan["Plan & procure"]
    direction TB
    BY[blueyonder forecast]
    ARB[sap_ariba PO]
    BY ~~~ ARB
  end
  subgraph make["Make & quality"]
    direction TB
    MES[siemens_mes work order]
    MC[mastercontrol QC]
    MES ~~~ MC
  end
  subgraph move["Store & ship"]
    direction TB
    WMS[manhattan_wms inventory]
    OTM[oracle_otm TMS]
    WMS ~~~ OTM
  end
  subgraph sell["Sell to retail"]
    direction TB
    SF[salesforce trade]
    OMS[manhattan_oms orders]
    SF ~~~ OMS
  end
  subgraph corp["Corporate"]
    direction TB
    WD[workday]
    S4[sap_s4 GL]
    WD ~~~ S4
  end
  portfolio --> plan --> make --> move --> sell --> corp
          

Functional org by department

Global HQ Cincinnati and direct-report functions with representative source systems.

Sample org structure: This shows the primary reporting lines; the full P&C organization includes regional SBU teams, plant managers, and shared-services functions across all 34 vendor integrations.

flowchart TB
  CEO[P&C Global]
  CEO --> SBU[SBU portfolio & R&D]
  CEO --> MFG[Supply chain & manufacturing]
  CEO --> COMM[Commercial & retail sales]
  CEO --> MKT[Marketing & brand]
  CEO --> FIN[Finance & controller]
  CEO --> HR[Human resources]
  CEO --> QUAL[Quality & regulatory]
  CEO --> LEG[IT / legal / security]
          

EDW maturity stages

Catalog stage groups tables from foundation through corporate.

Sample breakdown shown: This is a representative slice of the full 60-table inventory distributed across maturity layers; the actual distribution reflects the complete data lineage from foundation through corporate gold tables.

flowchart LR
  F["foundation
~13 tables"] SC["supply_chain
~10 tables"] D["distribution
~6 tables"] C["commercial
~16 tables"] CO["corporate
~15 tables"] F --> SC --> D --> C F -.-> CO C -.-> CO

Core business entities

Logical relationships and anchor keys. Brand (brand_code) and plant (facility_code) are the spine; material numbers link PIM to MES.

Sample diagram: This entity relationship diagram shows the core logical model; the full generated EDW contains 60 bronze tables across 34 vendor systems with additional detail tables and lineage branches. Entity instances carry entity_refs on every emitted event for joinability testing.

erDiagram
  BRAND ||--o{ PRODUCT : owns
  PRODUCT ||--o{ PRODUCTION_BATCH : produces
  PLANT ||--o{ PRODUCTION_BATCH : runs
  SUPPLIER ||--o{ PO : supplies
  PRODUCTION_BATCH ||--o{ PO : triggers
  PLANT ||--o{ INVENTORY : stocks
  RETAIL_CUSTOMER ||--o{ CUSTOMER_ORDER : places
  PRODUCT ||--o{ ORDER_LINE : contains
  CUSTOMER_ORDER ||--|{ ORDER_LINE : lines
  CUSTOMER_ORDER ||--o{ SHIPMENT : ships
  CUSTOMER_ORDER ||--o{ JOURNAL : posts
          

Source system landscape

34 vendor prefixes, 60 bronze tables.

Sample systems shown: The diagram below illustrates representative vendor systems; the complete generated dataset includes all 34 systems with their full table lineage and integration points across history backfill and live streams. Shared source-system manifests in kb/source_systems/ are reused across industries — P&C adds pc_brand as an industry-specific internal system.

Each table follows the {source_system_}__{entity} naming convention (e.g. pc_brand__brand, siemens_mes__work_order), preserving the vendor-native column shape and foreign keys from each product's real export schema. VibeBI infers master-data conformance when it promotes records to silver and gold.

flowchart TB
  subgraph foundation["Foundation"]
    direction TB
    f1["pc_brand · akeneo_pim
oracle_scm · workday"] f2["sap_s4 dimensions"] end subgraph supply_chain["Supply chain"] direction TB s1["blueyonder · sap_ariba
siemens_mes · mastercontrol"] s2["ibm_maximo · aws_iot"] end subgraph distribution["Distribution"] direction TB d1["manhattan_wms
oracle_otm"] end subgraph commercial["Commercial"] direction TB c1["salesforce · manhattan_oms
hubspot · marketo"] c2["google_analytics · qualtrics · zendesk"] end subgraph corporate["Corporate"] direction TB co1["sap_s4 journals · coupa
adp · ukg · concur"] co2["servicenow · okta · splunk
ironclad · onetrust · greenhouse"] end foundation --> supply_chain --> distribution --> commercial foundation --> corporate commercial --> corporate

End-to-end data flow

V2 OOP sim → bronze in ClickHouse; VibeBI semantic → silver → gold on the same instance.

OOP path: kb/industries/pnc/ defines the operations spine and entity model; PcEnterpriseSimulation sequences domain lifecycles; SourceSystem adapters export vendor-native rows into pnc_v2.

flowchart LR
  subgraph kb["kb/industries/pnc"]
    SPINE[entity + process models]
  end
  subgraph sim["sim/industries/pnc"]
    ORCH[PcEnterpriseSimulation]
    DOM["ProductionBatch · CustomerOrder
execute_lifecycle()"] end subgraph simedw["SimEDW V2"] ADP[SourceSystem adapters] CHB[("ClickHouse pnc_v2
60 bronze tables")] end subgraph vibebi["VibeBI"] SEM[("semantic")] SIL[("silver views")] GLD[("gold views")] end DASH["Dashboards & agents"] SPINE --> DOM ORCH --> DOM --> ADP --> CHB CHB --> SEM --> SIL --> GLD --> DASH

Live bronze cycle

./live-v2-pnc — 60s tick via PcEnterpriseSimulation.generate().

Live frequency: Each tick runs the MakeToShipToSell state machine — domain objects emit correlated forecast, PO, MES, WMS, OMS, OTM, and GL rows per production batch and retail customer order; scale varies per tick (default base 5). Backfill any history span you need (--days N on the live script or CLI).

flowchart LR
  START([60s tick]) --> SIM[PcEnterpriseSimulation.generate]
  SIM --> FOUND[PcPortfolio.publish_foundation]
  FOUND --> BATCH[ProductionBatch lifecycles]
  FOUND --> ORDER[CustomerOrder lifecycles]
  BATCH --> CORP[PlantOps + Finance + Commercial]
  ORDER --> CORP
  CORP --> EVT[SourceSystem events]
  EVT --> BRZ[Append bronze rows]
  BRZ --> WAIT[Sleep] --> START
          

Make-to-ship event graph

MakeToShipToSell state machine — each transition is a domain method emitting vendor rows.

Process spine: Defined in kb/industries/pnc/process_model.yaml. Exception modes (batch scrap, quality hold, partial shipment, supplier delay) branch from the same entity lifecycles rather than independent random inserts.

flowchart LR
  FCST[forecasted] --> PROC[materials_procured]
  PROC --> PROD[production_started]
  PROD --> QC[quality_released]
  QC --> FG[finished_goods_received]
  FG --> ORD[customer_ordered]
  ORD --> FUL[fulfilled]
  FUL --> SHIP[shipped]
  SHIP --> GL[posted_to_gl]
  PROD -.->|scrap| SCRAP[batch_scrap]
  QC -.->|hold| HOLD[quality_hold]
  FUL -.->|short| PART[partial_shipment]
          

Bronze table categories

Same lineage envelope on every table; category drives live behavior.

Sample categories: All 60 bronze tables follow this three-category pattern (snapshot, transaction, event) with consistent metadata and state tracking; the diagram illustrates the pattern used across the full warehouse.

flowchart LR
  subgraph snap["snapshot"]
    direction TB
    S1["Brand · plant · SKU masters"]
    S2[Daily foundation refresh]
  end
  subgraph txn["transaction"]
    direction TB
    T1["POs · work orders · OMS · GL"]
    T2[Append each live tick]
  end
  subgraph evt["event"]
    direction TB
    E1["IoT · WMS movement · OTM tracking"]
    E2[Append each live tick]
  end
  BRONZE[("pnc_v2 bronze row")]
  snap --> BRONZE
  txn --> BRONZE
  evt --> BRONZE
          

Start vibing your BI.

Download the desktop app, the server, and the SimEDW sample data — and have a talking warehouse before your coffee gets cold.

Quick Start → Product Preview Read the white-paper