๐Ÿ“– BK Data Dictionary

Field definitions, locked methodology, and source-of-truth references for the Old Road Aperitif analyzer

1. Locked active-member stack (frozen 2026-05-11)

The canonical headline number is 1,310 all-in active relationships. The stack:

985 paying ≤90dlast successful dues payment within 90 days, classified recurring
72 quarterlyrecurring bottle-pickers with 3+ purchases in T6M
198 unconvertedpublic HHs with ≥2 bottle purchases in T6M, no dues
51 boomerang33% recovery projection from T6M cancel pool (141 HHs)
3 dramlegacy active Dram tier (shuttered, residual)
1 edgeedge-case audit reconciliation
= 1,310 all-in active
Analyzer-native vs locked: The script computes its own bucket sizes (preserved under 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.

2. Key BK_Households CSV columns

ColumnDefinition
householdAnonymized household ID (HH-#### format) after de-identification. Stable across files.
tierMembership tier: GOLD ($125/mo shipped), GOLD-Local ($100/mo pickup), FOUNDER (top tier), LOCAL, public (no dues).
memberBoolean. True if HH has ever paid dues.
member_statusactive / at_risk / lapsed / churned / non_member
member_substatuspaying_now / soft_lapse / cool_lapse / frozen / never_subscribed
last_membership_dateLatest dues payment date.
gap_months_since_last_membershipMonths since last dues payment. Drives the 90-day "paying" cut.
currentBoolean. is_current_paying โ€” paid in last 90d AND classified recurring.
boomerangBoolean. HH paused then returned to paying status.
expected_boomerang_valueProbability-weighted expected $ from a paused HH returning.
total_revLifetime household revenue across all channels (BK + ORCS Squarespace).
bk_rev / orcs_revLifetime $ split between BK and ORCS systems.
member_first_month / member_last_monthFirst and last month of dues payment. Used for cohort assignment.
member_pay_monthsCount of distinct months HH paid dues.
member_tenureMonths 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.
bucketsComma-separated list of channel buckets HH transacted in.
last_stripe_paidLatest successful Stripe charge across primary email + aliases. Catches upsell-only spend that membership-date misses.
stripe_90d_totalSum of successful Stripe charges in last 90 days, across primary + aliases.
bk_classificationCohort bucket: recurring / non_member / trial_dropoff / first_month / zero_pay.

3. Locked methodology rules

RuleDetail
Revenue basisUse real (prorated, post-refund) revenue. Never Lineitem price.
Bottle classificationBOURBON GAMES / CHASING BOURBON / DRAM all count as bottles regardless of bucket column. Bucket = channel, not delivery.
Active paying definitionHH 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 pairingNever cite dues alone. Member channel = dues + on-platform upsells.
T-window anchorApril 1, 2026 (preserves locked headline 1,310; April 30 anchor would drop headline to 1,277).
EBITDA bibleGodsheet "DECK Income Statement" tab, ADJUSTED EBITDA row. 2025A: $357.7K / 13.7%. Forward: $581K โ†’ $1.07M โ†’ $1.39M.
Marketing CAC carveMarketing ร— 77% (member-channel revenue share) รท new members acquired. NOT marketing รท all members.
Boomerang rate33% blended return rate from BK_MemberStatus_Graduated.csv across all gap buckets. Applied to T6M cancel pool to project recovery.

4. AGG payload reference (hh_agg.json)

totals

FieldDefinition
n_hhTotal unique households across all data sources (4,903 currently).
n_member_hhHHs who have paid dues at any point.
n_recurring_revenue_membersHHs classified as recurring + trial-dropoff (ever paid for membership, incl 1-month payers).
n_currentCurrently paying โ€” dues within 90d AND recurring (986 raw; locked at 985 for stack reconciliation).
unconverted_hh_t6Locked: 198. Analyzer-native: 274 raw audit. Reclassified: 72 โ†’ quarterly, 4 โ†’ audit adjustments.
active_lockedLocked: 1,310. = sum(locked_stack).
active_projectedLocked: 1,310. Same as active_locked under locked methodology.
boomerang_recoveryLocked: 51. Analyzer-native: 47 (33% ร— 141 T6 cancel pool, rounded).
t6_cancels_recoveryHHs in 90-180 day cancel window โ€” the boomerang recovery pool.
rec_t12m_dues / rec_t12m_upsell / rec_t12m_totalTrailing 12-month recurring revenue split (dues / upsell / total).
qb_t12m_revenueQB-truth trailing 12-month gross revenue (all channels, top-line).
top_1pct_share / top_10pct_shareRevenue concentration: % of T12M revenue from top 1% / 10% of revenue-positive HHs.
locked_stackObject: {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.

tier_summary[tier]

FieldDefinition
nHHs in tier.
activeHHs in tier currently active (paying).
mean_total_rev / median_total_revLifetime revenue per HH in tier (mean / median).
mean_tenure / mean_pay_monthsAvg months from first to last pay; avg distinct months paid.

terminal_ltv

FieldDefinition
median / mean / trimmed_meanAsymptotic LTV per cohort, aggregated across quarterly cohort fits. Method A.
simple_ltvARPU/month รท monthly churn rate. Conservative geometric series estimate. Method B.
arpu_per_monthT12M recurring revenue per active member-month.
monthly_churn_pct1 - (M24 survival / M12 survival)^(1/12).
boom_vs_nonbSame-cohort comparison: boomerangs vs non-boomerangs (358 vs 1,619 in recurring pool).
boomerang_terminalModeled asymptotic LTV for the boomerang cohort specifically. Higher than general because boomerangs are tenure-persistent.

5. Source files (in this audit pack)

FilePurpose
BK_Households_v2_2026-05-10.csvDe-identified household-level census (4,903 HHs). Source of truth for tier/active/recurring/boomerang.
BK_ORCS_Master_Archive.xlsxRaw orders + 14 supporting sheets (Cohort LTV, Survival Curve, QB EBITDA, Boomerangs, etc.).
hh_agg.json / hh_records.jsonPre-computed analyzer aggregates. Drive the dashboard.
build_dashboard_v2.pyThe analyzer. Re-running it reproduces hh_agg.json + the dashboard HTML.
dashboard_template.htmlHTML 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.