"Branch-level attribution made our newest opening call in twelve minutes. No spreadsheet. No cohort guesswork. Just the number."
Operations · GCC retail group
Per-branch reload + redemption attribution. Per-campaign ROAS. Net-new vs cannibalized branch tracking. Cohort migration in real time.
Attribution model
Branch, till, campaign tag, cohort. Every wallet event arrives pre-attributed. Attribution joins are queries against existing data, not a separate ETL pipeline.
Top-up + redemption + net stored value by branch. Branch-of-issuance vs branch-of-debit, separated.
Each campaign tag flows from rule fire → wallet event → till swipe. Closes the loop.
LTV, repeat rate, frequency by enrollment cohort. Real-time updates.
Composition
Wallet writes context; incentives tag campaigns; customers join identity; inventory joins SKU; brain reads it all back to the operator in plain language.
Every wallet event carries branch, till, campaign tag. Attribution doesn't compute these. It indexes them.
Operator asks 'did Diriyah cannibalize Olaya' and brain queries attribution + cohort flow, answers in twelve seconds.
Dashboard
Real-time dashboard for the operator who needs to call 'did Diriyah's opening cannibalize Olaya?' in twelve minutes, not after the month-end close.
Cohort flow
When a customer first appears at branch X, they belong to X's cohort. Subsequent cross-branch visits are tracked as loyalty events, not as new revenue.
Every customer's first wallet event sets their home-branch cohort. Subsequent visits are cross-branch loyalty.
See the network rebalance in real time. Which branch is growing, which is consolidating, which is just rotating.
"Branch-level attribution made our newest opening call in twelve minutes. No spreadsheet. No cohort guesswork. Just the number."
Operations · GCC retail group
"For the first time we know which campaigns drive incremental revenue and which just shift it around."
CFO · GCC coffee chain