Product analytics at 25 billion events a day

· case study · anonymized

A consumer mobile app company with tens of millions of monthly users generates about 25 billion events a day, trillions a year. One event type alone fires 300 million times a day. The data team shares a daily extract to S3: 1.6 TB a day of gzipped Parquet, down from 6 TB raw.

They have the standard stack. A product-analytics vendor that gets expensive enough at this volume that events are sampled and blocklisted, which quietly caps what questions can be answered. A lakehouse that can hold everything but "doesn’t solve the insights question, and gets expensive fast" once you look back a year or two. Its NL-query layer produced "too much variation, not enough guardrails."

The three-week question

The line that stuck with us from their data leadership: a question from an exec sat stuck for three weeks. A lifetime-value analysis took a dedicated data engineer two months. Not because the data was missing, because every question at this scale becomes an engineering project: find the events, negotiate the sampling, write the pipeline, wait.

Why index in place

The interesting architectural fact: the data already lands on S3 as Parquet. The expensive part of every incumbent option is making a second, searchable copy, into the analytics vendor, into hot warehouse storage, into a search cluster.

Infino’s answer is to make the copy they already have the searchable one: embed full-text and vector indexes into the Parquet on S3, and run point lookups, filters, and aggregations against those files directly. Retention stops being a pricing tier, it’s however much S3 you keep. The two-year lookback costs the same per byte as last week.