Causal analytics for free-to-play games

Know why your retention moved, not just that it did.

Asemic is warehouse-native product analytics for free-to-play games. When retention or revenue moves, it decomposes the change into its real drivers: user acquisition, onboarding, core-game. Point-in-time correct, running inside your own BigQuery or Snowflake.

45 minutes, on your own data. Pick a time directly, no sales loop.

Runs in your warehouse BigQuery·Snowflake
Causal decomposition
D7 retention · Jun vs May example 24.1% 21.3%
−2.8pp
Attributed to
User acquisition
−1.9pp
Onboarding
+0.4pp
Core-game
−1.3pp
Σ −2.8pp explained Dig deeper Full report →
01 · The problem

Your D7 dropped three points. But you shipped an onboarding tweak, a UA push, and a content patch, all in the same week. Which one caused it?

If you own the numbers at a studio (analyst, data lead, product), you know the three places that question goes to die:

“What,” never “why.”

Dashboards show the metric moved. Explaining it burns analyst-weeks of manual slicing across every change you shipped.

“As-of” questions are hard.

“What was this player’s level on their day-7?” means hand-writing as-of SQL; dimension tables only keep now.

Numbers drift.

Every dashboard defines DAU a little differently, so the team argues about whose number is right instead of what to do.

02 · The answer

Asemic attributes the cause.

Two capabilities work together to produce a why you can act on:

Causal decomposition

It splits the change into its drivers

A retention move between two periods or cohorts is decomposed into UA, onboarding, and core-game contributions, validated against known and A/B ground truth, and extending to revenue. You decide with attribution, not hunches. Deep dive & launch news →

Point-in-time cohorts

…and the comparison is honest

A decomposition is only as good as its cohorts. Asemic resolves any dimension as of a calendar or relative day (“level on day-7,” “spent >$100 in January”) so you compare the world as it actually was. No hand-rolled as-of SQL.

03 · Why you can trust it

An answer is only useful if you can trust it.

So the whole system is built for verification: where it runs, and how every number is defined.

Warehouse-native

Your data never leaves your warehouse

Everything compiles to SQL that runs in your BigQuery or Snowflake (pushdown). Nothing is copied out; every query is deterministic and inspectable.

Trusted definitions

One set of numbers, defined once

Each metric is one legible line a CMO can sign off on; the engine compiles governed, dialect-correct SQL underneath. An auditable answer to “who agreed this is MAU?”

“Can’t I just ask an AI to write the SQL?”

Increasingly, yes. And that’s exactly the point. When generating a definition is nearly free, the cost moves to trusting it. So every Asemic definition is a contract: legible enough for a human to verify the intent, governed enough for the engine to guarantee the semantics.

You verify the intent
metric.avg_impressions = metric.impressions / metric.dau
  label "Avg Impressions"

Reads at the altitude of the business idea; a CMO can sign off at a glance.

compiles to
The engine guarantees the semantics
SELECT SAFE_DIVIDE(
    SUM(impressions),
    COUNT(DISTINCT user_id)
  ) -- null-safe /0, tz & cohort-day correct, per-dialect

BigQuery gets SAFE_DIVIDE; Postgres gets NULLIF. Same line, correct everywhere.

The AI proposes; you verify a contract. Read the intent at a glance, not a wall of LookerML.
The system guarantees the semantics. Null/zero handling, timezones, cohort-day math, dialect quirks: the things that actually break.
The primitives are correct by construction. As-of state, cohort-relative time, and F2P metrics an AI improvises and gets subtly wrong.
04 · Ask in chat

Every metric, one question away.

Producers and leads never open a BI tool, but they already live in AI chat. Connect Asemic as an MCP server and every metric the studio defined is available by asking.

What was ARPDAU by payment segment last week, and how does it compare to the week before?
AI, via Asemic example ARPDAU last week was $0.41, up from $0.38 the week before. Whales drove most of it: $0.19 (+11%), while minnows stayed flat at $0.08. Want the dashboard? Open “Monetization” in Asemic
Same numbers as your dashboards. The AI queries your named metric definitions, not raw SQL. Same semantic layer, same answers.
Per-user sign-in. OAuth with a consent screen; the AI sees only the projects that user can see. Revocable anytime.
Read-only. Query access only; raw data stays in your warehouse.

Connect it from the docs →

05 · How it works

From raw events to the why, in four steps.

  1. 01

    Connect your warehouse

    BigQuery or Snowflake. Read-only-friendly; your data never leaves it.

  2. 02

    Define your model once

    Map events → properties → metrics in a friendly, formula-driven editor. Game-standard metrics come scaffolded.

  3. 03

    Explore (no SQL)

    Point-in-time cohorts, funnels (event sequences), and dashboards, all speaking the same definitions.

  4. 04

    Decompose the why

    Break any KPI move into UA / onboarding / core-game, and look forward with predictive LTV & retention.

Asemic compiles all of it to SQL that runs in your warehouse.

06 · Built for F2P

A game-shaped model, out of the box.

The metrics and cohorts you actually use, scaffolded and correct by construction. That curated library of F2P primitives is the hard part an AI can’t reliably improvise, and why a studio gets a working model fast.

DAU / MAUStickinessRetention by cohort dayARPDAUIAP + ad revenueLTVPayer segmentsRegistration & activity cohorts
I’m technical. Show me everything semantic layer · point-in-time engine · SeQL · causal engine

Semantic layer & compilation

Raw event tables → reusable properties → metrics, defined formula-style. Every chart, cohort, and funnel compiles to dialect-correct SQL pushed down to your warehouse, safe defaults included (÷ becomes SAFE_DIVIDE on BigQuery, NULLIF-guarded division elsewhere). The safe default is invisible; overrides are explicit and legible.

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.

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.”

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.

Access & governance

Read-only-friendly warehouse connection; queries run in your project under your permissions and audit logs. Definitions are centrally owned, versioned, and legible enough to review.

Want the full detail? Read the documentation →

Know why your numbers move.

See causal decomposition on your own game data.