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 · Claude prompt

First, map what you actually use (optional)
Step 1 · usage audit prompt

// Mixpanel usage audit, scope the rebuild Input: the event schema with 90-day volume per event, the saved reports / boards with view counts, and the seats with last-login. ## Do 1. Keep events fired in the last 90 days; the long tail is dead schema. 2. Keep reports a human viewed in 90d; drop dashboards no one opens. 3. List the 3-5 questions the kept reports actually answer, those become the rebuilt /ask queries. ## Output JSON: { keep_events[], keep_reports[], core_questions[], drop[] }.

Step 2 · rebuild the core

// Product-analytics /ask, SQL writer over a defined event schema You receive (a) a natural-language question from a PM, (b) the event schema (event names + property types), and (c) the user-properties schema. The warehouse is ClickHouse. ## What you must do 1. Write one SQL query that answers the question, no joins to tables not in the schema. 2. Default the time window to "last 30 days" unless the question states otherwise. 3. Return the query, a 1-line plain-English description of what it computes, and the columns the chart should plot. ## What you do not do - Do not invent event names or property keys. - Do not return more than one query. - Do not suggest a "next question", just answer this one. ## Output JSON: { sql, description, x_axis, y_axis }.

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