Spensara Spensara Knowledge Base & Documentation Repository

Repository Docs & Knowledge Base

Consolidated Spensara documentation repository (722 Markdown & architecture documents in ../repository)
Built Word Documents (.docx): Spensara Overview (.docx) Capability Assessment (.docx) Brink POS Ingestion Analysis (.docx) The Borg Ingestion Architecture (.docx)

Warehouse Model (93)

Analytical data warehouse schemas, curated tables, and Redshift/Athena data models.
warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_modifiers.md 27,297 bytes · Updated Oct 23, 2026 10:44 AM EDT
Raw File

curated.pos_modifiers

Purpose

This table stores modifier-group definitions and their flattened item membership in the current POS-oriented curated contract. It is useful for understanding what options can be added to items, how many are allowed, and what pricing or weighting rules apply.

The table preserves a wide legacy column layout, so each numbered slot represents a source-positioned member, price, or rule rather than a normalized child table.

Schema contract

The deployed SQL under backend/Kds.Ai.Warehouse/Sql/Bootstrap/Tenant/Curated/ is the source of truth for the current column names, types, and nullability.

Column groups

  • Business properties describe the business entity, event, fact, or reference record represented by the table.
  • Technical and ETL properties describe warehouse lineage, surrogate keys, source reconciliation, tenant scoping, slowly changing dimension controls, and ingestion metadata.

Business properties

ColumnTypeNullableBusiness MeaningNotes
idINTEGERYesModifier group identifier.
longnameVARCHAR(40)YesLonger modifier-group name.
freeINTEGERYesNumber of modifiers included at no charge.
item01INTEGERYesModifier group member in slot 01.
item02INTEGERYesModifier group member in slot 02.
item03INTEGERYesModifier group member in slot 03.
item04INTEGERYesModifier group member in slot 04.
item05INTEGERYesModifier group member in slot 05.
item06INTEGERYesModifier group member in slot 06.
item07INTEGERYesModifier group member in slot 07.
item08INTEGERYesModifier group member in slot 08.
item09INTEGERYesModifier group member in slot 09.
item10INTEGERYesModifier group member in slot 10.
item11INTEGERYesModifier group member in slot 11.
item12INTEGERYesModifier group member in slot 12.
item13INTEGERYesModifier group member in slot 13.
item14INTEGERYesModifier group member in slot 14.
item15INTEGERYesModifier group member in slot 15.
item16INTEGERYesModifier group member in slot 16.
item17INTEGERYesModifier group member in slot 17.
item18INTEGERYesModifier group member in slot 18.
item19INTEGERYesModifier group member in slot 19.
item20INTEGERYesModifier group member in slot 20.
item21INTEGERYesModifier group member in slot 21.
item22INTEGERYesModifier group member in slot 22.
item23INTEGERYesModifier group member in slot 23.
item24INTEGERYesModifier group member in slot 24.
item25INTEGERYesModifier group member in slot 25.
item26INTEGERYesModifier group member in slot 26.
item27INTEGERYesModifier group member in slot 27.
item28INTEGERYesModifier group member in slot 28.
item29INTEGERYesModifier group member in slot 29.
item30INTEGERYesModifier group member in slot 30.
item31INTEGERYesModifier group member in slot 31.
item32INTEGERYesModifier group member in slot 32.
item33INTEGERYesModifier group member in slot 33.
item34INTEGERYesModifier group member in slot 34.
item35INTEGERYesModifier group member in slot 35.
item36INTEGERYesModifier group member in slot 36.
item37INTEGERYesModifier group member in slot 37.
item38INTEGERYesModifier group member in slot 38.
item39INTEGERYesModifier group member in slot 39.
item40INTEGERYesModifier group member in slot 40.
item41INTEGERYesModifier group member in slot 41.
item42INTEGERYesModifier group member in slot 42.
item43INTEGERYesModifier group member in slot 43.
item44INTEGERYesModifier group member in slot 44.
item45INTEGERYesModifier group member in slot 45.
item46INTEGERYesModifier group member in slot 46.
item47INTEGERYesModifier group member in slot 47.
item48INTEGERYesModifier group member in slot 48.
item49INTEGERYesModifier group member in slot 49.
item50INTEGERYesModifier group member in slot 50.
item51INTEGERYesModifier group member in slot 51.
item52INTEGERYesModifier group member in slot 52.
item53INTEGERYesModifier group member in slot 53.
item54INTEGERYesModifier group member in slot 54.
price01BIGINTYesPrice override for slot 01.
price02BIGINTYesPrice override for slot 02.
price03BIGINTYesPrice override for slot 03.
price04BIGINTYesPrice override for slot 04.
price05BIGINTYesPrice override for slot 05.
price06BIGINTYesPrice override for slot 06.
price07BIGINTYesPrice override for slot 07.
price08BIGINTYesPrice override for slot 08.
price09BIGINTYesPrice override for slot 09.
price10BIGINTYesPrice override for slot 10.
price11BIGINTYesPrice override for slot 11.
price12BIGINTYesPrice override for slot 12.
price13BIGINTYesPrice override for slot 13.
price14BIGINTYesPrice override for slot 14.
price15BIGINTYesPrice override for slot 15.
price16BIGINTYesPrice override for slot 16.
price17BIGINTYesPrice override for slot 17.
price18BIGINTYesPrice override for slot 18.
price19BIGINTYesPrice override for slot 19.
price20BIGINTYesPrice override for slot 20.
price21BIGINTYesPrice override for slot 21.
price22BIGINTYesPrice override for slot 22.
price23BIGINTYesPrice override for slot 23.
price24BIGINTYesPrice override for slot 24.
price25BIGINTYesPrice override for slot 25.
price26BIGINTYesPrice override for slot 26.
price27BIGINTYesPrice override for slot 27.
price28BIGINTYesPrice override for slot 28.
price29BIGINTYesPrice override for slot 29.
price30BIGINTYesPrice override for slot 30.
price31BIGINTYesPrice override for slot 31.
price32BIGINTYesPrice override for slot 32.
price33BIGINTYesPrice override for slot 33.
price34BIGINTYesPrice override for slot 34.
price35BIGINTYesPrice override for slot 35.
price36BIGINTYesPrice override for slot 36.
price37BIGINTYesPrice override for slot 37.
price38BIGINTYesPrice override for slot 38.
price39BIGINTYesPrice override for slot 39.
price40BIGINTYesPrice override for slot 40.
price41BIGINTYesPrice override for slot 41.
price42BIGINTYesPrice override for slot 42.
price43BIGINTYesPrice override for slot 43.
price44BIGINTYesPrice override for slot 44.
price45BIGINTYesPrice override for slot 45.
price46BIGINTYesPrice override for slot 46.
price47BIGINTYesPrice override for slot 47.
price48BIGINTYesPrice override for slot 48.
price49BIGINTYesPrice override for slot 49.
price50BIGINTYesPrice override for slot 50.
price51BIGINTYesPrice override for slot 51.
price52BIGINTYesPrice override for slot 52.
price53BIGINTYesPrice override for slot 53.
price54BIGINTYesPrice override for slot 54.
owneridINTEGERYesOwning configuration or location identifier.
usernumberINTEGERYesUser-visible modifier-group number.
shortnameVARCHAR(15)YesShort modifier-group name.
minimumINTEGERYesMinimum number of modifiers required.
maximumINTEGERYesMaximum number of modifiers allowed.
flowreqVARCHAR(1)YesFlag indicating whether modifier flow is required.
substituteINTEGERYesSubstitute-rule identifier or code.
weight01INTEGERYesWeighting or sort weight for slot 01.
weight02INTEGERYesWeighting or sort weight for slot 02.
weight03INTEGERYesWeighting or sort weight for slot 03.
weight04INTEGERYesWeighting or sort weight for slot 04.
weight05INTEGERYesWeighting or sort weight for slot 05.
weight06INTEGERYesWeighting or sort weight for slot 06.
weight07INTEGERYesWeighting or sort weight for slot 07.
weight08INTEGERYesWeighting or sort weight for slot 08.
weight09INTEGERYesWeighting or sort weight for slot 09.
weight10INTEGERYesWeighting or sort weight for slot 10.
weight11INTEGERYesWeighting or sort weight for slot 11.
weight12INTEGERYesWeighting or sort weight for slot 12.
weight13INTEGERYesWeighting or sort weight for slot 13.
weight14INTEGERYesWeighting or sort weight for slot 14.
weight15INTEGERYesWeighting or sort weight for slot 15.
weight16INTEGERYesWeighting or sort weight for slot 16.
weight17INTEGERYesWeighting or sort weight for slot 17.
weight18INTEGERYesWeighting or sort weight for slot 18.
weight19INTEGERYesWeighting or sort weight for slot 19.
weight20INTEGERYesWeighting or sort weight for slot 20.
weight21INTEGERYesWeighting or sort weight for slot 21.
weight22INTEGERYesWeighting or sort weight for slot 22.
weight23INTEGERYesWeighting or sort weight for slot 23.
weight24INTEGERYesWeighting or sort weight for slot 24.
weight25INTEGERYesWeighting or sort weight for slot 25.
weight26INTEGERYesWeighting or sort weight for slot 26.
weight27INTEGERYesWeighting or sort weight for slot 27.
weight28INTEGERYesWeighting or sort weight for slot 28.
weight29INTEGERYesWeighting or sort weight for slot 29.
weight30INTEGERYesWeighting or sort weight for slot 30.
weight31INTEGERYesWeighting or sort weight for slot 31.
weight32INTEGERYesWeighting or sort weight for slot 32.
weight33INTEGERYesWeighting or sort weight for slot 33.
weight34INTEGERYesWeighting or sort weight for slot 34.
weight35INTEGERYesWeighting or sort weight for slot 35.
weight36INTEGERYesWeighting or sort weight for slot 36.
weight37INTEGERYesWeighting or sort weight for slot 37.
weight38INTEGERYesWeighting or sort weight for slot 38.
weight39INTEGERYesWeighting or sort weight for slot 39.
weight40INTEGERYesWeighting or sort weight for slot 40.
weight41INTEGERYesWeighting or sort weight for slot 41.
weight42INTEGERYesWeighting or sort weight for slot 42.
weight43INTEGERYesWeighting or sort weight for slot 43.
weight44INTEGERYesWeighting or sort weight for slot 44.
weight45INTEGERYesWeighting or sort weight for slot 45.
weight46INTEGERYesWeighting or sort weight for slot 46.
weight47INTEGERYesWeighting or sort weight for slot 47.
weight48INTEGERYesWeighting or sort weight for slot 48.
weight49INTEGERYesWeighting or sort weight for slot 49.
weight50INTEGERYesWeighting or sort weight for slot 50.
weight51INTEGERYesWeighting or sort weight for slot 51.
weight52INTEGERYesWeighting or sort weight for slot 52.
weight53INTEGERYesWeighting or sort weight for slot 53.
weight54INTEGERYesWeighting or sort weight for slot 54.
pricelvl01INTEGERYesPrice-level override for slot 01.
pricelvl02INTEGERYesPrice-level override for slot 02.
pricelvl03INTEGERYesPrice-level override for slot 03.
pricelvl04INTEGERYesPrice-level override for slot 04.
pricelvl05INTEGERYesPrice-level override for slot 05.
pricelvl06INTEGERYesPrice-level override for slot 06.
pricelvl07INTEGERYesPrice-level override for slot 07.
pricelvl08INTEGERYesPrice-level override for slot 08.
pricelvl09INTEGERYesPrice-level override for slot 09.
pricelvl10INTEGERYesPrice-level override for slot 10.
pricelvl11INTEGERYesPrice-level override for slot 11.
pricelvl12INTEGERYesPrice-level override for slot 12.
pricelvl13INTEGERYesPrice-level override for slot 13.
pricelvl14INTEGERYesPrice-level override for slot 14.
pricelvl15INTEGERYesPrice-level override for slot 15.
pricelvl16INTEGERYesPrice-level override for slot 16.
pricelvl17INTEGERYesPrice-level override for slot 17.
pricelvl18INTEGERYesPrice-level override for slot 18.
pricelvl19INTEGERYesPrice-level override for slot 19.
pricelvl20INTEGERYesPrice-level override for slot 20.
pricelvl21INTEGERYesPrice-level override for slot 21.
pricelvl22INTEGERYesPrice-level override for slot 22.
pricelvl23INTEGERYesPrice-level override for slot 23.
pricelvl24INTEGERYesPrice-level override for slot 24.
pricelvl25INTEGERYesPrice-level override for slot 25.
pricelvl26INTEGERYesPrice-level override for slot 26.
pricelvl27INTEGERYesPrice-level override for slot 27.
pricelvl28INTEGERYesPrice-level override for slot 28.
pricelvl29INTEGERYesPrice-level override for slot 29.
pricelvl30INTEGERYesPrice-level override for slot 30.
pricelvl31INTEGERYesPrice-level override for slot 31.
pricelvl32INTEGERYesPrice-level override for slot 32.
pricelvl33INTEGERYesPrice-level override for slot 33.
pricelvl34INTEGERYesPrice-level override for slot 34.
pricelvl35INTEGERYesPrice-level override for slot 35.
pricelvl36INTEGERYesPrice-level override for slot 36.
pricelvl37INTEGERYesPrice-level override for slot 37.
pricelvl38INTEGERYesPrice-level override for slot 38.
pricelvl39INTEGERYesPrice-level override for slot 39.
pricelvl40INTEGERYesPrice-level override for slot 40.
pricelvl41INTEGERYesPrice-level override for slot 41.
pricelvl42INTEGERYesPrice-level override for slot 42.
pricelvl43INTEGERYesPrice-level override for slot 43.
pricelvl44INTEGERYesPrice-level override for slot 44.
pricelvl45INTEGERYesPrice-level override for slot 45.
pricelvl46INTEGERYesPrice-level override for slot 46.
pricelvl47INTEGERYesPrice-level override for slot 47.
pricelvl48INTEGERYesPrice-level override for slot 48.
pricelvl49INTEGERYesPrice-level override for slot 49.
pricelvl50INTEGERYesPrice-level override for slot 50.
pricelvl51INTEGERYesPrice-level override for slot 51.
pricelvl52INTEGERYesPrice-level override for slot 52.
pricelvl53INTEGERYesPrice-level override for slot 53.
pricelvl54INTEGERYesPrice-level override for slot 54.
prmethod01INTEGERYesPrice method for slot 01.
prmethod02INTEGERYesPrice method for slot 02.
prmethod03INTEGERYesPrice method for slot 03.
prmethod04INTEGERYesPrice method for slot 04.
prmethod05INTEGERYesPrice method for slot 05.
prmethod06INTEGERYesPrice method for slot 06.
prmethod07INTEGERYesPrice method for slot 07.
prmethod08INTEGERYesPrice method for slot 08.
prmethod09INTEGERYesPrice method for slot 09.
prmethod10INTEGERYesPrice method for slot 10.
prmethod11INTEGERYesPrice method for slot 11.
prmethod12INTEGERYesPrice method for slot 12.
prmethod13INTEGERYesPrice method for slot 13.
prmethod14INTEGERYesPrice method for slot 14.
prmethod15INTEGERYesPrice method for slot 15.
prmethod16INTEGERYesPrice method for slot 16.
prmethod17INTEGERYesPrice method for slot 17.
prmethod18INTEGERYesPrice method for slot 18.
prmethod19INTEGERYesPrice method for slot 19.
prmethod20INTEGERYesPrice method for slot 20.
prmethod21INTEGERYesPrice method for slot 21.
prmethod22INTEGERYesPrice method for slot 22.
prmethod23INTEGERYesPrice method for slot 23.
prmethod24INTEGERYesPrice method for slot 24.
prmethod25INTEGERYesPrice method for slot 25.
prmethod26INTEGERYesPrice method for slot 26.
prmethod27INTEGERYesPrice method for slot 27.
prmethod28INTEGERYesPrice method for slot 28.
prmethod29INTEGERYesPrice method for slot 29.
prmethod30INTEGERYesPrice method for slot 30.
prmethod31INTEGERYesPrice method for slot 31.
prmethod32INTEGERYesPrice method for slot 32.
prmethod33INTEGERYesPrice method for slot 33.
prmethod34INTEGERYesPrice method for slot 34.
prmethod35INTEGERYesPrice method for slot 35.
prmethod36INTEGERYesPrice method for slot 36.
prmethod37INTEGERYesPrice method for slot 37.
prmethod38INTEGERYesPrice method for slot 38.
prmethod39INTEGERYesPrice method for slot 39.
prmethod40INTEGERYesPrice method for slot 40.
prmethod41INTEGERYesPrice method for slot 41.
prmethod42INTEGERYesPrice method for slot 42.
prmethod43INTEGERYesPrice method for slot 43.
prmethod44INTEGERYesPrice method for slot 44.
prmethod45INTEGERYesPrice method for slot 45.
prmethod46INTEGERYesPrice method for slot 46.
prmethod47INTEGERYesPrice method for slot 47.
prmethod48INTEGERYesPrice method for slot 48.
prmethod49INTEGERYesPrice method for slot 49.
prmethod50INTEGERYesPrice method for slot 50.
prmethod51INTEGERYesPrice method for slot 51.
prmethod52INTEGERYesPrice method for slot 52.
prmethod53INTEGERYesPrice method for slot 53.
prmethod54INTEGERYesPrice method for slot 54.
subindexINTEGERYesSubstitute or subgroup index.
qstsmodeINTEGERYesQuestion-set mode or flow mode.
refillVARCHAR(1)YesFlag indicating refill behavior within the modifier group.
maxrefillsINTEGERYesMaximum number of refills allowed.
defrdmodVARCHAR(1)YesFlag controlling default required modifier behavior.
nosub01INTEGERYesNo-substitute rule for slot 01.
nosub02INTEGERYesNo-substitute rule for slot 02.
nosub03INTEGERYesNo-substitute rule for slot 03.
nosub04INTEGERYesNo-substitute rule for slot 04.
nosub05INTEGERYesNo-substitute rule for slot 05.
nosub06INTEGERYesNo-substitute rule for slot 06.
nosub07INTEGERYesNo-substitute rule for slot 07.
nosub08INTEGERYesNo-substitute rule for slot 08.
nosub09INTEGERYesNo-substitute rule for slot 09.
nosub10INTEGERYesNo-substitute rule for slot 10.
nosub11INTEGERYesNo-substitute rule for slot 11.
nosub12INTEGERYesNo-substitute rule for slot 12.
nosub13INTEGERYesNo-substitute rule for slot 13.
nosub14INTEGERYesNo-substitute rule for slot 14.
nosub15INTEGERYesNo-substitute rule for slot 15.
nosub16INTEGERYesNo-substitute rule for slot 16.
nosub17INTEGERYesNo-substitute rule for slot 17.
nosub18INTEGERYesNo-substitute rule for slot 18.
nosub19INTEGERYesNo-substitute rule for slot 19.
nosub20INTEGERYesNo-substitute rule for slot 20.
nosub21INTEGERYesNo-substitute rule for slot 21.
nosub22INTEGERYesNo-substitute rule for slot 22.
nosub23INTEGERYesNo-substitute rule for slot 23.
nosub24INTEGERYesNo-substitute rule for slot 24.
nosub25INTEGERYesNo-substitute rule for slot 25.
nosub26INTEGERYesNo-substitute rule for slot 26.
nosub27INTEGERYesNo-substitute rule for slot 27.
nosub28INTEGERYesNo-substitute rule for slot 28.
nosub29INTEGERYesNo-substitute rule for slot 29.
nosub30INTEGERYesNo-substitute rule for slot 30.
nosub31INTEGERYesNo-substitute rule for slot 31.
nosub32INTEGERYesNo-substitute rule for slot 32.
nosub33INTEGERYesNo-substitute rule for slot 33.
nosub34INTEGERYesNo-substitute rule for slot 34.
nosub35INTEGERYesNo-substitute rule for slot 35.
nosub36INTEGERYesNo-substitute rule for slot 36.
nosub37INTEGERYesNo-substitute rule for slot 37.
nosub38INTEGERYesNo-substitute rule for slot 38.
nosub39INTEGERYesNo-substitute rule for slot 39.
nosub40INTEGERYesNo-substitute rule for slot 40.
nosub41INTEGERYesNo-substitute rule for slot 41.
nosub42INTEGERYesNo-substitute rule for slot 42.
nosub43INTEGERYesNo-substitute rule for slot 43.
nosub44INTEGERYesNo-substitute rule for slot 44.
nosub45INTEGERYesNo-substitute rule for slot 45.
nosub46INTEGERYesNo-substitute rule for slot 46.
nosub47INTEGERYesNo-substitute rule for slot 47.
nosub48INTEGERYesNo-substitute rule for slot 48.
nosub49INTEGERYesNo-substitute rule for slot 49.
nosub50INTEGERYesNo-substitute rule for slot 50.
nosub51INTEGERYesNo-substitute rule for slot 51.
nosub52INTEGERYesNo-substitute rule for slot 52.
nosub53INTEGERYesNo-substitute rule for slot 53.
nosub54INTEGERYesNo-substitute rule for slot 54.
typeINTEGERYesModifier-group type code.
hidepriceVARCHAR(1)YesFlag hiding prices in some modifier views.
modifier_group_nameVARCHAR(255)YesReadable business name of the modifier group.
modifier_option_name_summaryVARCHAR(65535)YesReadable summary of the modifier options contained in the wide-slot row.
min_selectINTEGERYesCanonical minimum number of options that can be selected from the group.
max_selectINTEGERYesCanonical maximum number of options that can be selected from the group.
is_activeBOOLEANYesCanonical flag indicating whether the modifier group is active in the curated model.

Technical and ETL properties

ColumnTypeNullableTechnical MeaningNotes
modifier_group_keyBIGINTYesStable warehouse key for the modifier group entity.
source_systemVARCHAR(100)YesCanonical name of the source platform that produced the modifier group row.
source_modifier_group_idVARCHAR(199)YesOriginal modifier group identifier from the source platform.
tenant_keyBIGINTYesStable warehouse key for the tenant, brand, or client that owns the modifier group.
tenant_nameVARCHAR(255)YesReadable tenant, brand, or client name associated with the modifier group.
effective_from_utcTIMESTAMPYesUTC timestamp from which the current modifier-group version is valid.
effective_to_utcTIMESTAMPYesUTC timestamp until which the current modifier-group version is valid.
is_currentBOOLEANYesCanonical flag indicating whether the row is the current modifier-group version.
_etl_batch_idVARCHAR(256)YesETL batch lineage identifier.
_etl_source_typeVARCHAR(100)YesSource adapter type used by ETL.
_etl_ingested_atTIMESTAMPNoWarehouse ingestion timestamp for the curated row.Required ingestion audit timestamp.