Cactus
Event Ingestion and Growth Analytics Platform
Role
Software Engineer
Duration
2025 – Present
Team
Engineering Team
Status
Active
Overview
The growth team was making decisions on intuition because the data was too slow to argue with. Event data scattered across four tools. A/B tests analyzed in spreadsheets days after the experiment ended. Marketing campaigns managed through separate codebases with no shared state. I built the event pipeline, the analytics dashboards, and the experimentation infrastructure that gave the team a single, real-time view of user behavior. Events process in under a second. Dashboard queries that took 12 seconds now take 200 milliseconds. The team stopped debating what happened and started debating what to do about it.
Problem
Growth teams operate on feedback loops. The tighter the loop, the faster they learn. This team's loop was broken. User events lived in one tool. Conversion data in another. Marketing campaign results in a third. Running an A/B test meant exporting data, joining it manually in a spreadsheet, and hoping the sample size was large enough to mean anything. By the time the analysis was done, the product had already changed. Marketing integrations — email, ads, CRM — each had their own codebase, their own auth patterns, their own failure modes. No one had a unified picture of what users were doing or why.
Approach
- 01Built a three-stage event pipeline: capture via lightweight SDK, enrichment with session metadata and geo/device context, dual-write to PostgreSQL (historical analysis) and Redis (real-time dashboards)
- 02Designed React dashboards with D3.js visualizations optimized for the specific questions growth teams ask: conversion funnels, retention cohorts, and experiment results. Each chart type chosen for the decision it supports, not the data it displays
- 03Shipped A/B testing infrastructure end-to-end: experiment definition, deterministic variant assignment, and statistical significance calculation with guardrails against premature decisions
- 04Abstracted SendGrid, Google Ads, and HubSpot behind a unified adapter interface. One integration pattern. Shared auth, rate limiting, and error handling. New marketing tools plug in without new architecture
- 05Optimized analytics queries with materialized views — pre-computed the aggregations the growth team checks daily (DAU, funnel step counts, retention cohorts) on a 5-minute refresh cycle
- 06Embedded with the growth team to prioritize features against their experimentation roadmap. Built what they would use this week, not what sounded good in a planning doc
Design Decisions
Technology Stack
Frontend
Backend
Data
Integrations
Impact
Latency
<1s
Event capture to dashboard display — real-time feedback for the growth team
Query Speed
60x
Dashboard queries dropped from 8–12s to <200ms with materialized views
Integration
1–2 days
Time to add a new third-party marketing tool — down from 1–2 weeks
Experiments
Shipped
Full A/B testing infrastructure with statistical significance guardrails
Next Case Study
Archv↗