Skip to content

Goals & KPIs

The actionable thresholds and pricing anchors that marketing agents reference, plus a pointer to where the real metrics live.

Most operational metrics are already computed. They live in the analytics.* schema views and on Metabase dashboards. Marketing agents read those — they don't reinvent measurement.


Source of truth: existing analytics infrastructure

All occupancy, utilization, tour funnel, retention, and revenue metrics are already defined and computed. See the engineering/infrastructure/analytics for the full catalog. Headline pointers:

Metric Analytics view (analytics.*) Dashboard
Monthly occupancy occupancy_monthly Owner → Monthly Studios; CM → Occupancy
Hourly utilization utilization_daily Owner → Hourly Studios; CM → Utilization
Tour funnel & conversion tour_events, tour_pipeline Owner → Tours; CM → Tour Pipeline
Monthly churn churn_monthly Owner → Monthly Studios
Tenure / active subs subscription_months, active_subscriptions Owner → Monthly Studios
MRR mrr_monthly Owner; Bookkeeping → Revenue
Hourly revenue & bookings hourly_bookings, hourly_revenue_by_source Owner → Hourly Studios
Booking patterns booking_heatmap, booking_hours CM dashboard
Insurance penetration insurance_monthly, insurance_by_tier Owner → Insurance

Metabase: http://homelab:3100. Read-only Postgres role: metabase_readonly. Formula definitions (occupancy, utilization, tour conversion, MRR, churn) live in the analytics page (docs/engineering/infrastructure/analytics.md) — agents must use those formulas, not invent their own.

Rule: If a metric exists in an analytics view, agents query the view. If it doesn't, agents flag the gap rather than computing a new definition on the fly.


Actionable marketing thresholds

The operational rules that drive when and how we invest in marketing.

Trigger Threshold Action
Per-location monthly occupancy drops below... 90% Kick in marketing investment for that location.
New location time-to-fill 90 days Target. Cherry City currently behind (5+ months in). See paid-meta.md Funnel strategy for the catch-up plan.
Tour → Member close rate ~80% (historical) Informational — sets the funnel expectation. Reports flag deviations.
Current paid-Meta tour generation 4–6 tours/month Baseline from minimal historical ad spend. Attribution caveats apply (see paid-meta.md).

Per-location occupancy is the single most important marketing trigger. When a location dips below 90%, marketing investment for that location goes up. When the network is at or above 90% across locations, paid spend can scale back to maintenance levels.


Pricing & LTV anchors

Used for ad copy, agent CAC reasoning, and pricing claims.

Anchor Value Source
Lowest monthly studio price $285/mo Settled. Reflected in copy as "from $285/mo."
Lowest hourly studio price $15/hr Settled. Reflected in copy as "from $15/hr."
Monthly price range $285–$500+ depending on size + location Per STUDIO_SIZES enum + /monthly page.
Member LTV (gut estimate) ~$12,000 Aaron's working number. Use for CAC reasoning.

CAC reasoning rule of thumb (until we set ceilings explicitly): acquisition cost above ~10% of LTV (~$1,200) deserves scrutiny. This isn't a hard rule — it's the point where an agent flags the campaign for human review.


Marketing automation system meta-KPIs

Captured in the Asana foundation task. Not duplicated here. Headline: 0 hard-guardrail violations, ~$0 marginal cost, time-saved + draft-quality assessed qualitatively until we have data.


How to use this doc when generating reports (AI agents, read this)

  1. For any metric, check the analytics views first. If analytics.occupancy_monthly answers the question, query it. Don't reinvent the calculation.
  2. Lead reports with the per-location occupancy view. That's the metric that drives marketing decisions. Locations below 90% are the call-to-action; locations at or above are the proof-of-product.
  3. Pricing claims must match the anchors above. $285/mo and $15/hr. Update this doc the same time the underlying minimums change.
  4. Don't pad reports with metrics that aren't already measured. If you find yourself wanting a number that isn't in the analytics views or the thresholds above, flag the gap for human decision rather than generating a new definition.
  5. Attribution-related metrics defer to paid-meta.md until the attribution investigation produces a grounded methodology.