Skip to Content
DocsOntologyOffer Matrix

Offer Matrix

The offer catalog is closed at scoring time. Every linked row used by the runtime must carry exactly these six fields (names and types as used in production configs and logs).

Canonical row JSON

{ "cost": 150, "price": 200, "category": "a", "offer_id": "Product B", "offer_name": "Product B", "static_offers": 1 }
FieldTypeRole
costnumberCost / margin input
pricenumberPrice / value input
categorystringGrouping / eligibility
offer_idstringStable id (often same as name)
offer_namestringDisplay / match key for /response
static_offersnumberStatic offer flag / weight

Ontology class

  • OfferMatrixEntryhttps://ecosystem.ai/ontology/entities#OfferMatrixEntry (also used from runtime)
  • Workbench OfferMatrix — first-class catalog document that owns versions and rows
  • Runtime CampaignContext links to offer matrix rows via hasOfferMatrix

Why closed?

Pre/post scoring plugins and bandit arms join on offer_name / option keys. Open-ended extra fields on matrix rows break matching and learning. Put customer context in the open feature lookup instead — see Customer Feature Lookup.

SHACL

Shapes live in /ontology/entities-shapes.ttl and /ontology/runtime-shapes.ttl.

Last updated on