The canonical headline number is 1,310 all-in active relationships. The stack:
analyzer_native_* keys in hh_agg.json: 274 unconverted, 1260 active_locked, 1307 active_projected, 47 boomerang_recovery). The locked stack above is the post-reclassification, post-audit canonical view per the 2026-05-11 frozen handoff. Both are emitted to the JSON payload for audit.| Column | Definition |
|---|---|
household | Anonymized household ID (HH-#### format) after de-identification. Stable across files. |
tier | Membership tier: GOLD ($125/mo shipped), GOLD-Local ($100/mo pickup), FOUNDER (top tier), LOCAL, public (no dues). |
member | Boolean. True if HH has ever paid dues. |
member_status | active / at_risk / lapsed / churned / non_member |
member_substatus | paying_now / soft_lapse / cool_lapse / frozen / never_subscribed |
last_membership_date | Latest dues payment date. |
gap_months_since_last_membership | Months since last dues payment. Drives the 90-day "paying" cut. |
current | Boolean. is_current_paying โ paid in last 90d AND classified recurring. |
boomerang | Boolean. HH paused then returned to paying status. |
expected_boomerang_value | Probability-weighted expected $ from a paused HH returning. |
total_rev | Lifetime household revenue across all channels (BK + ORCS Squarespace). |
bk_rev / orcs_rev | Lifetime $ split between BK and ORCS systems. |
member_first_month / member_last_month | First and last month of dues payment. Used for cohort assignment. |
member_pay_months | Count of distinct months HH paid dues. |
member_tenure | Months from first to last dues payment (inclusive of paused months). |
ch_* (multiple) | Per-channel revenue: ch_membership_signup_shipped, ch_member_upsell_shipped, ch_membership_signup_local, ch_member_upsell_local, ch_member_redemption, ch_various, ch_club_blend, ch_charity, ch_influencer, ch_store_promo, ch_merch. |
buckets | Comma-separated list of channel buckets HH transacted in. |
last_stripe_paid | Latest successful Stripe charge across primary email + aliases. Catches upsell-only spend that membership-date misses. |
stripe_90d_total | Sum of successful Stripe charges in last 90 days, across primary + aliases. |
bk_classification | Cohort bucket: recurring / non_member / trial_dropoff / first_month / zero_pay. |
| Rule | Detail |
|---|---|
| Revenue basis | Use real (prorated, post-refund) revenue. Never Lineitem price. |
| Bottle classification | BOURBON GAMES / CHASING BOURBON / DRAM all count as bottles regardless of bucket column. Bucket = channel, not delivery. |
| Active paying definition | HH with dues in last 90d AND classified recurring (paid 2+ months OR currently in first paid month). Excludes one-and-done trial payers and zero-pay enrolls. |
| Dues + upsell pairing | Never cite dues alone. Member channel = dues + on-platform upsells. |
| T-window anchor | April 1, 2026 (preserves locked headline 1,310; April 30 anchor would drop headline to 1,277). |
| EBITDA bible | Godsheet "DECK Income Statement" tab, ADJUSTED EBITDA row. 2025A: $357.7K / 13.7%. Forward: $581K โ $1.07M โ $1.39M. |
| Marketing CAC carve | Marketing ร 77% (member-channel revenue share) รท new members acquired. NOT marketing รท all members. |
| Boomerang rate | 33% blended return rate from BK_MemberStatus_Graduated.csv across all gap buckets. Applied to T6M cancel pool to project recovery. |
| Field | Definition |
|---|---|
n_hh | Total unique households across all data sources (4,903 currently). |
n_member_hh | HHs who have paid dues at any point. |
n_recurring_revenue_members | HHs classified as recurring + trial-dropoff (ever paid for membership, incl 1-month payers). |
n_current | Currently paying โ dues within 90d AND recurring (986 raw; locked at 985 for stack reconciliation). |
unconverted_hh_t6 | Locked: 198. Analyzer-native: 274 raw audit. Reclassified: 72 โ quarterly, 4 โ audit adjustments. |
active_locked | Locked: 1,310. = sum(locked_stack). |
active_projected | Locked: 1,310. Same as active_locked under locked methodology. |
boomerang_recovery | Locked: 51. Analyzer-native: 47 (33% ร 141 T6 cancel pool, rounded). |
t6_cancels_recovery | HHs in 90-180 day cancel window โ the boomerang recovery pool. |
rec_t12m_dues / rec_t12m_upsell / rec_t12m_total | Trailing 12-month recurring revenue split (dues / upsell / total). |
qb_t12m_revenue | QB-truth trailing 12-month gross revenue (all channels, top-line). |
top_1pct_share / top_10pct_share | Revenue concentration: % of T12M revenue from top 1% / 10% of revenue-positive HHs. |
locked_stack | Object: {paying_le_90d:985, quarterly:72, unconverted:198, boomerang:51, dram:3, edge:1}. Frozen 2026-05-11. |
analyzer_native_* | Audit-trail fields preserving the analyzer's computed values before locked-stack override. Reviewers can reconcile. |
| Field | Definition |
|---|---|
n | HHs in tier. |
active | HHs in tier currently active (paying). |
mean_total_rev / median_total_rev | Lifetime revenue per HH in tier (mean / median). |
mean_tenure / mean_pay_months | Avg months from first to last pay; avg distinct months paid. |
| Field | Definition |
|---|---|
median / mean / trimmed_mean | Asymptotic LTV per cohort, aggregated across quarterly cohort fits. Method A. |
simple_ltv | ARPU/month รท monthly churn rate. Conservative geometric series estimate. Method B. |
arpu_per_month | T12M recurring revenue per active member-month. |
monthly_churn_pct | 1 - (M24 survival / M12 survival)^(1/12). |
boom_vs_nonb | Same-cohort comparison: boomerangs vs non-boomerangs (358 vs 1,619 in recurring pool). |
boomerang_terminal | Modeled asymptotic LTV for the boomerang cohort specifically. Higher than general because boomerangs are tenure-persistent. |
| File | Purpose |
|---|---|
BK_Households_v2_2026-05-10.csv | De-identified household-level census (4,903 HHs). Source of truth for tier/active/recurring/boomerang. |
BK_ORCS_Master_Archive.xlsx | Raw orders + 14 supporting sheets (Cohort LTV, Survival Curve, QB EBITDA, Boomerangs, etc.). |
hh_agg.json / hh_records.json | Pre-computed analyzer aggregates. Drive the dashboard. |
build_dashboard_v2.py | The analyzer. Re-running it reproduces hh_agg.json + the dashboard HTML. |
dashboard_template.html | HTML template the analyzer injects JSON into. |
Dictionary generated 2026-05-12 from frozen 2026-05-11 methodology. For changes, see the change-log in the handoff.