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/brinkPos-curated-model-mapps/pos_menu_items.md 5,682 bytes · Updated Oct 23, 2026 10:44 AM EDT
Raw File

Brink mapping for curated.pos_menu_items

Main staging sources used today

  • staging.brink_settings2_items
  • staging.brink_settings2_item_groups

Mapping groups

  • Business property mappings describe how Brink menu item content is mapped into curated business fields.
  • Technical and ETL property mappings describe lineage, source reconciliation, tenant scoping, and ingestion metadata.

Business property mappings

Curated ColumnBrink Staging TableBrink Property PathCurrent mappingStatusNotes
item_idstaging.brink_settings2_itemsitem_idCAST(i.item_id AS INTEGER)MappedDirect item ID.
item_namestaging.brink_settings2_itemsnameCOALESCE(NULLIF(i.name, ''), 'Unknown')MappedMenu-facing item name with fallback to Unknown.
pricestaging.brink_settings2_itemspriceCAST(COALESCE(i.price, 0) AS DECIMAL(10, 2))MappedDirect base price with fallback to 0.
coststaging.brink_settings2_itemscostCAST(i.cost AS DECIMAL(10, 2))MappedDirect item cost.
category_idstaging.brink_settings2_item_groupsitem_group_idCOALESCE(CAST(ig.item_group_id AS INTEGER), 0)MappedResolved by joining brink_settings2_items to brink_settings2_item_groups on item_id with item_group_ordinal = 1. Falls back to 0 when no group exists.
descriptionstaging.brink_settings2_itemsdescriptioni.descriptionMappedDirect long description.
kds_delaystaging.brink_settings2_itemsdays_availablei.days_availableMappedMaps from days_available integer in the item master. Used as KDS delay proxy.
category_namestaging.brink_settings_get_item_groupsnameNULLNot mappedNo item-group name table exists in staging yet. Would require joining to staging.brink_settings_get_item_groups on item_group_id.
kds_stationstaging.brink_settings2_itemsvideo_group_idNULLNot mappedBest documented kitchen-routing field, but not yet joined to station name.
is_86dstaging.brink_settings2_itemsis_activeCASE WHEN COALESCE(i.is_active, FALSE) THEN 0 ELSE 1 ENDMappedDerived inverse of is_active. When item is not active, it is treated as 86'd.
"86d_reason"N/AN/ANULLNot mappedNo matching field documented.
"86d_at"N/AN/ANULLNot mappedNo matching field documented.
station_namestaging.brink_settings2_get_kitchen_queuesnameNULLNot mappedWould require joining staging.brink_settings2_items on video_group_id to staging.brink_settings2_get_kitchen_queues on kitchen_queue_id.
availability_statusstaging.brink_settings2_itemsis_activeCASE WHEN COALESCE(i.is_active, FALSE) THEN 'active' ELSE 'inactive' ENDMappedDerived readable availability status from is_active.
is_activestaging.brink_settings2_itemsis_activei.is_activeMappedDirect active flag from item master.
snapshot_datestaging.brink_settings2_itemssnapshot_dateCAST(i.snapshot_date AS DATE)MappedSnapshot date from the Brink request.
currency_codeN/AN/ANULLNot mappedCurrency is not documented in the item snapshot.
timezone_nameN/AN/ANULLNot mappedTimezone metadata is not documented in the available Brink staging model.

Technical and ETL property mappings

Curated ColumnBrink Staging TableBrink Property PathCurrent mappingStatusNotes
menu_item_keyN/AN/ANULLNot mappedWarehouse-generated key.
source_systemN/AN/Aconstant 'brink_pos'Derived constantWarehouse constant, not a Brink API field.
source_menu_item_idstaging.brink_settings2_itemsitem_idCAST(i.item_id AS VARCHAR(199))MappedDirect Brink source item ID.
effective_from_utcstaging.brink_settings2_itemssnapshot_dateCAST(i.snapshot_date AS TIMESTAMP)MappedUses snapshot_date as effective start for the snapshot.
effective_to_utcN/AN/ANULLNot mappedNot populated in current snapshot-scoped insert.
tenant_keyN/AN/ANULLNot mappedWarehouse-generated tenant key.
tenant_nameN/AN/Aparameter @tenant_idETL contextTenant metadata is outside the documented Brink staging payloads.
_etl_batch_idstaging.brink_settings2_items_etl_batch_idi._etl_batch_idMappedETL metadata propagated from staging.
_etl_source_typestaging.brink_settings2_items_etl_source_typei._etl_source_typeMappedETL metadata propagated from staging.
_etl_ingested_atstaging.brink_settings2_items_etl_ingested_at_utci._etl_ingested_at_utc AS _etl_ingested_atMappedETL metadata propagated from staging.

Portal and sample validation

Curated fieldAdditional validated sourceHow to use it
category_nameSettings2.GetMenu -> Menu.Categories[].NameUse the menu contract when the curated menu model needs menu-facing category names rather than master item-group names.
category_idSettings2.GetMenu -> Menu.Categories[]Brink portal WSDL confirms GetMenu(MenuId), which exposes explicit menu categories beyond item groups.
kds_stationSettings2.GetKitchenQueuesResolve kitchen station name from video_group_id when kitchen queue staging becomes available.