The Challenge
The platform’s evolution from a single product into a multi-vertical consumer app was a product success story — and a data engineering challenge. Each new vertical had been built rapidly, often with its own user identity model, event schema, and analytics instrumentation.
The result: a customer who used one vertical several times a week and another daily was invisible to the personalisation layer as a single person. CRM campaigns ran on vertical-specific segments. Churn models only saw partial behaviour. The growth team was making retention decisions without being able to see the full customer.
The brief was to fix this — without disrupting product velocity, and within a data architecture that had to operate across multiple markets.
Our Approach
We began with a Crawl phase structured around two questions: what does the data actually look like across verticals today, and what would a unified identity unlock commercially? The answer to the second question was unambiguous — cross-vertical customers were far more valuable over their lifetime than single-vertical users, but there was no activation mechanism to grow that cohort.
The Walk phase ran over five months across three workstreams:
-
Customer identity resolution — We designed a probabilistic identity graph that stitched together first-party identifiers (phone number, device ID, app user ID) across verticals. The graph handled the complexity of shared devices, multiple phone numbers, and partial sign-in states — common patterns for regional consumer-app users.
-
CDP implementation — We implemented a Customer Data Platform to serve as the single source of truth for unified customer profiles, real-time event streaming from every vertical, and segment activation to downstream channels (push, in-app, CRM). We built the schema to be extensible as new verticals were added.
-
CX orchestration model — With unified profiles in place, we designed a cross-vertical lifecycle model: onboarding sequences that introduced new verticals at the right moment, cross-sell triggers based on behavioural signals, and win-back flows that recognised churned single-vertical users before they went dark. Arabic and English variants were built in parallel.
The Outcomes
- Cross-vertical adoption became a managed motion — single-vertical users adopting a second vertical within 90 days of a cross-sell trigger is now a tracked, growing cohort rather than an accident.
- Real-time personalisation at scale — campaigns that previously ran on weekly batch exports moved to streaming event triggers, sharply reducing time-to-activation.
- Unified customer profiles across verticals — the identity graph linked active users into a single profile, where previously most had no cross-vertical linkage at all.
- Faster segment activation — export latency dropped substantially, letting the growth team act on same-day behavioural signals rather than waiting for overnight batches.
- Stronger CRM contribution — lifecycle campaigns shifted from vertical-specific promotions to cross-product moments of value.
The platform’s data and growth teams now operate from a single customer view. Cross-vertical program planning happens in a unified dashboard rather than separate per-vertical analytics instances.