Solutions designed with your goals in mind

The Product Was Growing Fast, but Engagement Was Still Invisible

13+

Systems unified across product, ads, billing, CRM, and lifecycle

4 platforms

IOS, Mac, Windows, and Android now resolved to one engagement model

Real-time

Activation and billing signals updated within seconds, not hours
"When product, billing, and ad data all use different user identities, you are not missing a dashboard. You are missing a foundation. Agreeing on what activation actually means before writing a single model is what made everything else trustworthy."

At a glance

  • Product, growth, billing, CRM, and lifecycle data from 13+ systems unified into ClickHouse
  • A cross platform engagement model that flags at-risk users before they churn
  • Acquisition channels ranked by real activation, not clicks or installs

This AI voice SaaS was growing fast across iOS, Mac, Windows, and Android. Every download looked like a win. But downloads and engagement are not the same thing, and the team had no way to tell which users were actually using the product, and which had gone quiet after day one.

Their individual tools worked well. PostHog captured product events. Stripe and RevenueCat handled billing. Seven ad platforms ran campaigns. But none of it connected, and the question leadership actually needed answered, are users activating, staying, and growing, had no single source to pull from.

The Problem With Engagement Hidden Across Platforms

As the user base grew across four platforms, so did the difficulty of separating real growth from surface metrics. The team needed to know which users were genuinely engaged, which acquisition channels produced people who stayed, and whether ad spend was buying installs or activated users.

These are not exotic questions. They are standard questions for any product led company managing growth at scale, but thirteen disconnected systems could not answer them without someone pulling exports by hand before every meeting.

Every system the business relied on, connected into one warehouse:

Domain Sources What we track
Product Analytics PostHog Product events, feature usage, activation, retention
Growth and Ads Facebook, Google, AppLovin, Apple Ads, AppsFlyer, Vibe, Partnerships Ad spend, campaigns, conversions, attribution
Revenue Stripe, RevenueCat Subscriptions, billing, in app purchases
CRM and Support Pylon, Attio Accounts, support issues, customer records
Lifecycle Customer.io, Dub Campaign engagement, link attribution

The data existed. The problem was connection. Without a warehouse underneath, every growth decision was based on whichever platform's numbers someone happened to pull that week.

Why the Standard Answer Did Not Fit

The instinctive response is to hire a data engineer, connect PostHog and the ad platforms, and build a growth dashboard in house. That works for some teams, but a hire takes months to ramp up and still only covers one layer of a thirteen system stack.

This team did not need a headcount. They needed a foundation, built fast, that could handle real time product events alongside batch ad and billing data, by a team that had built this exact model before.

What Vero Built?

The architecture we deployed runs on one constraint: every source, streaming or batch, lands in one warehouse with one shared user identity.

  • ClickPipe streams PostHog, RevenueCat, and Customer.io in real time, so activation and billing signals are never more than seconds old
  • dlt handles Pylon, Vibe, and Dub with incremental cursors and state management built in
  • Fivetran runs managed connectors for Stripe, Facebook, Google, AppLovin, Apple Ads, AppsFlyer, and Attio
  • ClickHouse is the warehouse, built for the high volume event queries product analytics demands
  • dbt turns raw events and CRM data into one definition each for activation, retention cohorts, MRR, and ARR

Every metric now rolls up from the same mart that powers every dashboard. No more reconciling numbers before a board meeting.

How the Rollout Happened?

The engagement moved in three stages.

  1. Discovery: mapped all 13+ systems, defined a shared user identity across product, billing, and ad platforms, and agreed on what activation actually means
  2. Warehouse setup: ClickPipe, dlt, and Fivetran stood up and validated, with Dagster Cloud orchestrating every schedule and posting failures to Slack
  3. Dashboards live: dbt models built incrementally, starting with activation and retention, then expanding into CAC, channel quality, and reverse ETL segments pushed back to Customer.io

The full stack was live and in daily use within the week.

What Changed for the Team?

The difference was not subtle.

Before, downloads looked healthy on every platform, but nobody could see whether growth was translating into users who stayed. Spend decisions were based on installs, not retention, because retention data lived nowhere a growth manager could query it.

  • At-risk users are flagged automatically once usage drops below a threshold, not discovered at renewal
  • Four platforms, iOS, Mac, Windows, and Android, now resolve to one engagement model
  • Acquisition channels are ranked by real activation rate, so spend shifts to sources that retain
  • Modeled user segments push back into Customer.io, so lifecycle campaigns fire on real behavior

Nobody on the team manages infrastructure. Every pipeline runs on a schedule with monitoring built in, and Slack tells someone the moment something breaks.

Solutions designed with your goals in mind
Company Overview
A fast-growing voice-to-text AI product available across iOS, Mac, Windows, and Android. The platform runs a product-led growth model with paid acquisition across seven ad channels and subscription billing through Stripe and RevenueCat.