Skip to content
Ahmad BukhariBook a 25 min call

PLG engine: Find where new workspaces stall before choosing an intervention.

Workspace-level activation, product-qualified accounts, usage limits and the MRR bridge, with a nudge you can send to the exact workspaces stuck on one step. Shown as the workspace for Cadenza, a scheduling API for product teams.

The problem

Individual signups are a poor proxy for product adoption when value is created by a workspace. One user’s activity can hide an inactive team, and lifecycle messages can continue after activation or payment. This system is designed to connect product events, workspace identity, activation rules, intervention eligibility and recurring-revenue movements.

How the system is built

  1. SourcesPostHog events, Segment identity, Customer.io delivery events and Stripe.
  2. IngestionDesigned event consumers, billing webhooks and daily reconciliation workers.
  3. NormalizationCanonical user/workspace IDs, event contracts and billing mappings.
  4. StoragePostgres event ledger, workspace aggregates, rule versions and MRR movements.
  5. DecisionsActivation, product-qualified accounts and intervention suppression.
  6. DashboardWorkspace adoption, activation evidence, interventions and revenue bridge.
  7. Write-backsApproved Customer.io audience changes and lifecycle attributes.

The dashboard

13 views: Today, Growth summary, Product-qualified leads, Support handoffs, Signup funnel, Activation cohorts, Workspaces, Usage limits, Upgrades, Sales assist, Revenue, Experiments, Event stream.

The activation ladder: five milestones as bars to scale, each with the stack of workspaces currently stuck there and how long they have been waiting.

State lives in the URL (view, filters, date range), records open in drawers with their history, and every action that changes something is written to an activity log and is safe to repeat.

Data model

  • workspaces(id, created_at, plan, stripe_customer_id)
  • users(id, workspace_id, segment_id, consent_state)
  • product_events(id, event_id, workspace_id, user_id, name, occurred_at)
  • activation_states(id, workspace_id, rule_version, achieved_at)
  • pqa_states(id, workspace_id, rule_version, state, evidence)
  • interventions(id, workspace_id, campaign_id, state, sent_at)
  • subscriptions(id, stripe_id, workspace_id, mrr_cents, status)
  • mrr_movements(id, subscription_id, type, delta_cents, effective_at).

Rules in the backend

  1. Proposed activation: within 14 days, a workspace imports data, completes a core action and records participation by two distinct members.
  2. Proposed PQA: activated workspace with three weekly active members and five core actions in the trailing seven days.
  3. Recompute affected aggregates when late events arrive; never count duplicate event_id values.
  4. Suppress activation nudges after activation, opt-out or account closure; cap designed interventions at one per workspace per 72 hours.
  5. MRR bridge: opening MRR plus new, expansion and reactivation, minus contraction and churn, equals closing MRR. Exclude one-time charges.

Storage

Recommend Supabase Postgres with tenant/workspace RLS. Retain raw application events for 90 days and aggregates for 24 months, subject to consent and contractual requirements. Minimize event properties and prohibit secrets or sensitive free text.

Reliability

Handle out-of-order events, webhook redelivery and billing reconciliation. Use an intervention outbox, bounded retries and a dead-letter queue. Display “Synced” timestamps, incomplete event windows, identity failures and provisional revenue calculations.

Security and access

Workspace-scoped authentication separates product analysts, lifecycle operators and approvers. Clients receive read-only views. Billing and messaging keys remain server-side; identity merges require review and audit evidence.

Cost

PostHog event volume, Segment usage, Customer.io profiles/messages, database processing and Stripe fees vary by plan and usage. Adoption or revenue gains are not established.

Use it

The window above runs the full workspace. Pause the tour and click through it, or open it full screen.

Technology stack

  • PostHog
  • Segment
  • Customer.io
  • Stripe
  • Intercom
  • HubSpot
Source & context

Designed and built by Ahmad Bukhari in November 2026.

The working interface represents workspace activation and revenue logic; production event contracts, messaging and billing integrations remain designed connections.

Built: 2026-11-03

Map a workflow like this

Start with the handoffs your team already runs and where they break.

Discuss a workflow →