maiven gateway · online··
manifest · 2d ago
Sign in
Back to catalog
MAIVENmodelmarts

mart_customer_support_health

certified
mart table 1 PII columns

Who are our customers right now, and which ones are at risk.

Definition

Point-in-time view of every customer with a derived health flag. Joins lifetime revenue (from mart_customers) with support footprint (tickets, resolution, CSAT). `at_risk` fires on any of: CSAT ≤ 2.5, ≥3 currently-open tickets, or ≥5 lifetime high-priority tickets. Snapshot — not a time series.

What it means
Watch out for
  • highTreating the heuristic as a model output

    `health_segment` is a hand-tuned rule, not a prediction. Reasoning about churn risk over time requires a real model; this flag is a triage signal.

  • mediumFiltering on PII columns from AI personas

    `email` is excluded from AI personas via column grants and is not declared as a filter on this metric — filtering on it returns 400. Row-level access is gated by row policies (e.g. region_us_analyst sees only country='US').

  • mediumUsing this metric for a trend

    Snapshot only. For trend, pair with `revenue` + `support_volume` and read the moving picture from the time-grained metrics.

Questions this answers
  • “How many at-risk customers do we have in the US?”
  • “At-risk share by segment.”
  • “Average lifetime revenue for enterprise customers signed up after 2024.”
Related metrics
  • revenue

    Trend view of the revenue that this snapshot rolls up per-customer. Pair when answering "is at-risk share growing faster than revenue?"

  • support_volume

    Queue-side input that feeds the at-risk heuristic.

  • consent_state

    DPO-only — pair to answer "do at-risk customers still have active marketing consent?"

17 of 17
Column
Type
Description
Tests · PII
customer_id
UInt64
Primary key — UInt64.
email
String
Customer email (carried from `mart_customers`). PII — hidden from AI personas via column-level grants.
PII
country
Nullable(String)
ISO-2 customer country. Drives the `region_us_analyst` row policy.
segment
Nullable(String)
Customer segment — `consumer`, `business`, or `enterprise`.
signup_date
Date
Date the customer first registered.
orders_count
UInt64
Lifetime count of revenue-eligible orders (from `mart_customers`).
lifetime_revenue
Decimal(14, 2)
Sum of revenue-eligible order totals across the customer's history. Decimal(14,2).
2 tests
last_order_at
DateTime64(6)
Timestamp of the customer's most recent revenue-eligible order.
tickets_total
UInt64
Lifetime count of support tickets opened by this customer (zero if none).
2 tests
tickets_high_priority
UInt64
Of `tickets_total`, how many were `high` or `urgent` priority.
tickets_open
UInt64
Currently in `open` status (not yet picked up).
tickets_resolved
UInt64
Currently in `resolved` or `closed` status.
avg_resolution_hours
Nullable(Float64)
Mean hours-to-resolution across this customer's resolved tickets. Null when none have been resolved.
avg_csat_score
Nullable(Float64)
Mean CSAT (1..5) across this customer's rated tickets. Null when none have been rated.
first_ticket_at
DateTime64(6)
Timestamp the customer's first ticket was opened. Null for customers with no tickets.
last_ticket_at
DateTime64(6)
Timestamp the customer's most recent ticket was opened. Null for customers with no tickets.
health_segment
String
Derived flag — `at_risk` if any of: avg CSAT ≤ 2.5, ≥3 currently-open tickets, or ≥5 lifetime high-priority tickets; otherwise `healthy`. A simple heuristic the Phase 4 AI assistant can reason over.
2 tests