Semantic layer & compilation
Three levels, each built from the one below: raw event tables → reusable properties (“days since registration”, “total spend”) → metrics, defined formula-style. Everything compiles to dialect-correct SQL pushed down to your warehouse, safe defaults included (÷ becomes SAFE_DIVIDE on BigQuery, NULLIF-guarded division elsewhere). Event tags keep the model honest: system-triggered events (push delivery, server jobs) are excluded from activity, so infrastructure can never inflate DAU.
The data model → Point-in-time engine
Dimension values resolve as of any calendar or cohort-relative day, and predicates can aggregate over windows (“average spend > $100 in January”). No snapshot tables to maintain, no as-of joins to hand-write: historically-correct state is a first-class query primitive.
Materialization & the entity table
Charts never scan raw events. They read a precomputed entity table: one row per user per day, carrying that user's properties as of that day, built in your warehouse in a dataset you choose. Lapsed users keep a frozen row for a configurable window (default 90 days) so churn and resurrection cohorts stay visible. Coverage is per-day and backfills are incremental: extending history computes only the days you add.
How materialization works → SeQL: event sequences
A sequence language powering funnels and behavioral cohorts: ordered events, time-shifted conditions (“purchase within 1 day of second login”), and sequence-derived properties you can reuse in any metric or cohort.
Causal engine
Decomposes a KPI delta between periods/cohorts into UA, onboarding, and core-game contributions. Validated against A/B data and datasets with deliberately injected effects where the algorithm recovers the known answer. Known edge cases are still being refined; we say “validated against ground truth,” not “perfect.”
Validation deep dive → Predictive models
Predictive LTV and retention built for F2P economics, covering both IAP and ad revenue, to complement the causal view with a forward-looking one.
MCP server
The AI chat integration is a standard MCP server with per-user OAuth: the assistant holds a scoped token, sees only the projects that user can see, and gets typed, read-only tools (list metrics, run a query, plot a chart) over the same named definitions as your dashboards, never raw SQL. Invalid queries return precise errors the model corrects on its own, visible in the chat's tool log.
Connect an AI chat → Access & governance
Connect via a service account (recommended) or OAuth: read access on your raw event datasets, write access only on the dataset where the model is built. Queries run in your project, under your permissions, billing, and audit logs. Definitions are centrally owned and versioned: the working draft is separate from the immutable published model your charts read.
Connect your warehouse →