Product analytics and event funnels
Fullstack / Data Architecture
Problem
Measure product adoption and usage funnels for an early-stage product, reliably and without driving up infrastructure cost.
Impact
Real visibility into user behavior without adding an expensive data warehouse or a dedicated cluster.
- NestJS
- TimescaleDB
- PostgreSQL
- Next.js
The problem
An early-stage product needed to understand how users actually used it: which features were adopted, where they dropped off, how funnels behaved. The catch: do it cost-consciously, on a database shared with other projects, without becoming a noisy neighbor.
The architecture
- Time series on TimescaleDB: a PostgreSQL extension instead of a dedicated OLAP system, reusing the existing infrastructure.
- Event ingestion that captures behavior and stitches it into funnels and product-health metrics.
- Dashboard for the business team to read adoption and retention.
- Careful resource isolation so the shared cluster’s other services were not degraded.
Key decisions
- TimescaleDB over a data warehouse: for the real volume, it was the adequate and serious choice without the cost of dedicated OLAP. The upgrade path was documented for when volume justifies it.
- Shared DB with explicit limits: minimizing CPU, disk and background workers was a design requirement, not an afterthought.
- Metrics defined deliberately: pinning down what each metric means (e.g. active users) avoids misleading conclusions.
Impact
The team gained actionable adoption and behavior signals without adding expensive infrastructure — respecting the budget of a product that is just starting out.