docs(ltv): plan the b2b_saas_ltv_v1 LTV dataset workstream [LTV-Pa]#102
Merged
Conversation
Solidify the customer-lifetime-value workstream design and roadmap before any package code lands. New recipe on the existing framework via a recipe_type: lifecycle dispatch hook — not a fork. - docs/ltv/design.md — single source of truth: locked decisions (D1-D5), new entities (subscription_events, health_signals, invoices), lifecycle mechanisms (churn/expansion/payment), motif families, leakage trap (mrr_change_full_period), absolute observation_date anchor, snapshot-safety contract, framework change inventory, difficulty profiles. - docs/ltv/roadmap.md — milestones LTV-M0..M7 and PRs LTV-Pa..Pn, with a planning notation deliberately distinct from GitHub #NNN numbering. - .agent-plan.md — add the LTV workstream as the next workstream pointer. - CLAUDE.md — link the LTV design + roadmap in Reference Docs. Locked decisions (2026-06-10): primary task churn_within_180_days; weekly simulation steps; independent generation (chaining later); staggered start dates + fixed absolute observation_date; bundle schema version 5 -> 6. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
pr-agent-context report: No unresolved review comments, failing checks, or actionable patch coverage gaps were found on PR #102 in repository https://github.com/leadforge-dev/leadforge. Treat this PR as all clear unless new signals appear.Run metadata: |
There was a problem hiding this comment.
Pull request overview
Planning/documentation PR for the new b2b_saas_ltv_v1 customer lifetime value (post-conversion lifecycle) dataset workstream, establishing the design “single source of truth” plus a milestone/PR roadmap and updating project reference docs to point to them.
Changes:
- Add LTV workstream design spec (
docs/ltv/design.md) covering entities, mechanisms, snapshot-safety/leakage traps, and planned framework touchpoints. - Add LTV workstream roadmap (
docs/ltv/roadmap.md) with milestonesLTV-M0…M7and PR breakdownLTV-Pa…Pn. - Reference the new LTV docs from
CLAUDE.mdand update.agent-plan.mdto reflect the next workstream.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
docs/ltv/roadmap.md |
Introduces the milestone/PR execution plan for the LTV dataset workstream. |
docs/ltv/design.md |
Defines the LTV dataset design, constraints (snapshot-safety), and intended framework changes. |
CLAUDE.md |
Adds the LTV docs under “Reference Docs” for discoverability. |
.agent-plan.md |
Updates the “Next Workstream” section to the LTV planning effort and links the source-of-truth docs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+12
to
+14
| - **Milestones** — `LTV-M1` … `LTV-M7`. A milestone is a coherent capability. | ||
| - **PRs** — `LTV-Pa`, `LTV-Pb`, … (sequential letters, globally unique across | ||
| the whole roadmap). Each PR maps to exactly one milestone. |
Comment on lines
+40
to
+41
| Total: ~13 PRs across 8 milestones (LTV-M0 = planning). Comparable in scope to | ||
| the original M4–M9 framework build. |
Comment on lines
+23
to
+25
| **Roadmap (milestones/PRs):** `docs/ltv/roadmap.md` — planning notation | ||
| `LTV-M1…M7` (milestones) / `LTV-Pa…Pn` (PRs), kept distinct from GitHub `#NNN`. | ||
| **GitHub milestone:** `dataset: leadforge-ltv-v1` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Planning PR (
LTV-Pa, milestoneLTV-M0) for the newcustomer-lifetime-value workstream. Docs only — no package code.
Adds the design (single source of truth) and a milestone/PR roadmap for
b2b_saas_ltv_v1: a post-conversion subscription-lifecycle dataset (renewals,expansion, churn, payment failure, LTV) on the same Veridian vertical. It is a
new recipe on the existing framework via a
recipe_type: lifecycledispatch hook in
Generator.generate()— not a fork. CLI, bundle format, RNG,exposure modes, and the validation harness are reused.
Locked design decisions (2026-06-10)
churn_within_180_days(binary);ltv_bucket_6mas secondary task in the same bundleobservation_date(varying tenure-at-observation)BUNDLE_SCHEMA_VERSION5 → 6D4 is load-bearing: the lifecycle path filters events by an absolute
observation_date, not the lead-scoring path's per-entity relativesnapshot_day. The customer snapshot builder is a separate function so thelead-scoring path is untouched.
What's inside
docs/ltv/design.md— entities (subscription_events,health_signals,invoices+ extendedcustomers/subscriptions), lifecycle mechanisms(Weibull churn hazard w/ renewal spike, expansion propensity, payment
failure + dunning), 5 retention motif families, the
mrr_change_full_periodleakage trap, snapshot-safety contract, frameworkchange inventory, difficulty profiles.
docs/ltv/roadmap.md— milestonesLTV-M0…M7, PRsLTV-Pa…Pn.Planning notation
Work items use an
LTV-prefix so they never collide with GitHub PR numbers:LTV-M1…M7(milestones) andLTV-Pa…Pn(PRs). Each merged PR recordsits GitHub
#NNNback into the roadmap table — the two namespaces staydistinct.
Scope / non-goals
LTV-M1.CLAUDE.mdhard-constraint clause for lifecycle snapshot-safety landswith the recipe wiring (
LTV-M5), not here.🤖 Generated with Claude Code