Unwrapped

Legacy SaaS dossier · mixpanel

Mixpanel

Mixpanel

CategoryProduct analyticsMixpanel Enterprise, 8M monthly tracked usersSite ↗

An events table, three chart types, and a funnel calculator, sold at MTU-tier pricing that doubles every time your product grows.

01 · Data

Data the SaaS sits on

Event stream
Event streamYours
Users table
Users tableYours
Snowflake / BigQuery
Snowflake / BigQueryYours

Internal Build Score

0.76

Feasibility of a useful internal substitute for the actually-used 20% of this SaaS, built with Claude and your own data layer.

IBS = 0.25·U + 0.25·C + 0.20·D + 0.15·I + 0.15·Mthis record · 76%
  • U

    User adoption gap

    weight 0.250.60

    How much licensed surface area sits idle.

  • C

    Core simplicity

    weight 0.250.82

    How small the actually-used 20% is when re-implemented honestly.

  • D

    Data portability

    weight 0.200.85

    How clean the exit is, exports, formats, audit lock.

  • I

    Integration burden (inverse)

    weight 0.150.70

    How few external systems must keep working through the SaaS.

  • M

    Moat erosion

    weight 0.150.85

    How much the original differentiator has been commoditised by LLMs + cheap infra.

Editorial heuristic. Not investment advice, not a procurement recommendation.

03 · Feature usage

Commonly used vs. rarely touched

Commonly used

05

  • Event tracking with properties
  • User profiles with traits
  • Funnel + retention reports
  • Cohort builder
  • Trend charts over time

Rarely touched

07

  • MTU-tier pricing that punishes growth
  • Boards / Dashboards as separate sub-products
  • Lexicon, a paid feature for naming events
  • Notebooks / Insights / Signal, three half-overlapping query surfaces
  • Group analytics as a paid tier
  • Data pipelines + reverse ETL upsells
  • AI Spark, a Claude call billed per query

Internal build

Build it yourself

01 · Stack & flow

PostHog (OSS)
PostHog (OSS)
DuckDB / ClickHouse
DuckDB / ClickHouse
Segment-style emitter
Segment-style emitter
Claude API
Claude API
Metabase
Metabase

Internal build map

Data in

Event emitter
User table
Warehouse

Agent layer

SQL writer
Chart picker

Logic

ingest events
schema validate
funnel / retention
/ask routing

Outputs

Funnel chart
Retention curve
/ask answer
Build time
5 weeks
Run cost
$3/seat·mo
vs. SaaS
$96K / yr

Build outline

  1. Event emitter SDK, same shape across web + server
  2. ClickHouse / DuckDB sink
  3. PostHog OSS for funnel + retention UI
  4. Metabase for ad-hoc SQL dashboards
  5. Claude /ask endpoint over a defined event schema

02 · Build it

Paste into Cursor or Claude Code in an empty repo. It scaffolds the working core, with the AI step embedded.

Build prompt · Mixpanel

// Build: internal product analytics (Mixpanel replacement) # Paste into Cursor or Claude Code in an empty repo. Build internal product analytics covering the part of Mixpanel we use: event tracking, funnels, retention, and a natural-language /ask. Own the warehouse so growth doesn't inflate the bill. Stack: an event emitter SDK (web + server) -> ClickHouse; PostHog OSS for funnel/retention UI; Metabase for SQL dashboards; Claude for /ask. Build, in order: 1. A typed emitter (same shape web + server) writing events to ClickHouse. 2. Define the event schema (names + property types); validate on ingest. 3. Funnel + retention via PostHog OSS; ad-hoc dashboards in Metabase. 4. AI /ask, natural-language to SQL. Call Claude: """ Given a PM's question, the event schema, and the user-properties schema (warehouse: ClickHouse), return JSON { sql, description, x_axis, y_axis }. Default to last 30 days. Never invent event/property names. One query only. """ Skip: MTU-tier pricing, Lexicon, the overlapping query surfaces, the per-query AI add-on. Done when: events flow into your warehouse and a PM can ask "day-7 retention for X" and get a chart.

03 · Result

Day-7 retention for users who hit 'aha_moment' last week
warehouse:clickhouse#events.aha_moment

62.4% (n=3,118), SQL plotted by day; baseline last-30-days retention is 41.8%.