7. Work Breakdown — Epic → Story Register
This is an excerpt. The complete work-breakdown register this method produces runs to 218 stories across 28 epics, organized into 10 domains. What follows is the full domain-level rollup (epic count, story count, phase mix) plus two re-derived sample stories per domain, chosen to show the shape and granularity of the underlying register — not the register itself. Full story titles and acceptance criteria stay out of this excerpt by design; see the transformation contract governing this directory.
7.1 How to read this excerpt
A production work-breakdown register gives every story a stable ID, a
one-line title, a phase tag, a primary persona, and a relative-effort tier,
with full acceptance criteria carried in a companion export. This excerpt
follows the same field shape for its sample stories, using invented IDs
(KB-<domain>-<n>) so they can't be mistaken for entries in a real
register. Phase tags follow the same convention an estimator would expect:
MVP (must ship for a first release), P1–P3 (sequenced phases after
MVP, roughly ordered by dependency and revenue impact).
7.2 Domain rollup (full)
The rollup below covers all 218 stories in the underlying register, aggregated to the domain level. Epic and story counts are the corpus shape counts and are stated as fact; nothing below this line is invented.
| Domain | Epics | Stories | MVP | P1 | P2 | P3 |
|---|---|---|---|---|---|---|
| Onboarding | 3 | 21 | 12 | 1 | 7 | 1 |
| Catalog | 4 | 30 | 9 | 7 | 10 | 4 |
| Purchase | 2 | 12 | 8 | 2 | 1 | 1 |
| Billing | 4 | 27 | 17 | 2 | 8 | 0 |
| Orders | 3 | 18 | 8 | 4 | 5 | 1 |
| Self-Service | 4 | 29 | 20 | 3 | 3 | 3 |
| Operations | 2 | 17 | 6 | 6 | 4 | 1 |
| Platform | 3 | 36 | 15 | 1 | 7 | 13 |
| Commerce | 2 | 21 | 6 | 6 | 4 | 5 |
| Trust | 1 | 7 | 3 | 1 | 3 | 0 |
| Total | 28 | 218 | 104 | 33 | 52 | 29 |
A few shape observations an estimator would draw from this table directly: Platform carries the widest phase spread (15 MVP stories against 13 P3 stories) because it holds both day-one notification plumbing and the wholesale-account enrollment work Kibble & Co. only needs if its B2B channel expands. Self-Service is the most MVP-heavy domain in absolute terms — a subscription program is not shippable if a subscriber can't pause, swap, or cancel their own order on day one.
7.3 Sample stories by domain
The stories below are re-derived for Kibble & Co.'s pet-supply catalog — they are not drawn from any real register and do not correspond to any real story ID, title, or acceptance criterion. Effort tiers (XS–XL) are illustrative — invented for this demonstration; they follow the same relative-sizing convention a real register would use (XS smallest, XL largest) but carry no basis in an actual estimate. Two samples per domain.
Onboarding
KB-ONB-1 — Activate subscriptions on the store Phase: MVP · Effort: M (illustrative) · Persona: Merchant Admin
As a merchant admin, I want to turn subscriptions on for my store so that I can start configuring recurring plans without engaging support.
- Enabling the capability does not alter any existing product, order, or customer record.
- A merchant can disable the capability later without losing subscriber history.
- The admin sees a clear confirmation once enablement finishes.
KB-ONB-2 — Connect a payment processor for recurring billing Phase: MVP · Effort: L (illustrative) · Persona: Merchant Admin
As a merchant admin, I want to connect a processor that supports tokenized recurring charges so that renewal billing can run without a human re-entering a card.
- The connection flow detects whether the store's existing processor supports token-based recurring charges before asking the merchant to reconnect anything.
- A failed connection attempt leaves the store in its prior, working state.
- The merchant can see which processor is active for recurring billing at a glance.
Catalog
KB-CAT-1 — Enable subscription on a kibble SKU Phase: MVP · Effort: M (illustrative) · Persona: Merchant Admin
As a merchant admin, I want to mark a specific dog-food SKU as subscribable so that shoppers can choose recurring delivery on that product.
- The subscription option only appears on the storefront once a plan has been configured for that SKU.
- Enabling subscription on a SKU does not change its one-time-purchase price or availability.
- A variant (e.g., a bag size) can be enabled or excluded independently of its parent product.
KB-CAT-2 — Build-your-own treat box Phase: P1 · Effort: XL (illustrative) · Persona: Subscriber
As a subscriber, I want to pick which treats go in my recurring box so that each delivery matches what my dog actually eats.
- The subscriber can swap any item in the box before the next charge date without contacting support.
- The box total recalculates immediately when an item is swapped for one at a different price.
- A merchant can cap how many items a box may contain.
Purchase
KB-PUR-1 — Subscribe-and-save widget on the product page Phase: MVP · Effort: L (illustrative) · Persona: Subscriber
As a shopper, I want to see the subscription price and delivery interval next to the one-time price so that I can decide which to buy without leaving the product page.
- The widget shows the discounted subscription price alongside the one-time price whenever a plan exists for that product.
- Choosing a delivery interval updates the displayed price before the item is added to the cart.
- The widget degrades to a one-time-purchase-only view if no plan is configured.
KB-PUR-2 — Capture subscription intent at checkout Phase: MVP · Effort: L (illustrative) · Persona: System
As the system, I need to carry a shopper's subscription choice through checkout so that the resulting order creates a subscription rather than a one-time sale.
- Subscription intent survives a guest checkout as well as a logged-in checkout.
- If checkout fails after intent is captured, no partial subscription is created.
- A cart containing both subscription and one-time items checks out as a single order.
Billing
KB-BIL-1 — Run the recurring charge for a delivery cycle Phase: MVP · Effort: XL (illustrative) · Persona: System
As the system, I need to charge a subscriber's saved payment method on their scheduled delivery date so that the next box ships on time.
- A charge only runs once per scheduled cycle, even if the job that triggers it runs more than once.
- A successful charge is what creates the downstream order — no order is created on a failed charge.
- Charge jobs are spaced so a retry never doubles up with a still-in-flight attempt for the same subscriber, and one renewal window's charges drain as a controlled queue rather than a single burst.
KB-BIL-2 — Retry a declined renewal charge Phase: MVP · Effort: L (illustrative) · Persona: System
As the system, I need to retry a declined recurring charge on a configurable schedule so that a temporary decline doesn't cancel a subscription outright.
- Retry timing and retry count are configurable, within bounds the vendor's solution design proposes and Kibble & Co. approves.
- A subscriber who updates their card mid-retry-sequence gets charged against the new card on the next attempt, not the old one.
- The subscriber is notified after each failed attempt, not only after the sequence exhausts.
Orders
KB-ORD-1 — Generate the store order from a successful renewal Phase: MVP · Effort: L (illustrative) · Persona: System
As the system, I need to create a normal store order once a renewal charge succeeds so that fulfillment, inventory, and reporting treat it like any other order.
- The generated order carries a reference back to the subscription that produced it.
- Order creation is idempotent — a retried job never produces two orders for the same charge.
- The order reflects the price, tax, and shipping calculated at the moment of the successful charge, not at plan creation.
KB-ORD-2 — Recalculate shipping and tax at renewal Phase: MVP · Effort: M (illustrative) · Persona: System
As the system, I need to recalculate shipping and tax at the time of each renewal so that a subscriber's charge reflects their current address and current rates, not the rates from their first order.
- A subscriber who has moved is charged shipping and tax for their current address on the next renewal.
- A rate change takes effect on the next renewal, never on an order that already generated.
- The recalculation runs before the charge executes, not after.
Self-Service
KB-SLF-1 — Sign in to the subscriber portal Phase: MVP · Effort: M (illustrative) · Persona: Subscriber
As a subscriber, I want to sign in to a self-service portal without creating a separate password so that managing my delivery is low-friction.
- Sign-in works from a link sent to the email on file for the subscription.
- A sign-in link expires after a bounded window and cannot be reused once redeemed.
- A subscriber with more than one subscription sees all of them after one sign-in.
KB-SLF-2 — Pause, skip, or swap an upcoming delivery Phase: MVP · Effort: L (illustrative) · Persona: Subscriber
As a subscriber, I want to pause, skip, or swap my next delivery from the portal so that I don't have to cancel outright when my dog's needs change.
- Skipping the next delivery moves the following charge date out by exactly one cycle; it does not shorten the subscription.
- A pause has a merchant-configured maximum duration, after which the subscriber is prompted to resume or cancel.
- A swap is only offered between products the merchant has marked as interchangeable.
Operations
KB-OPS-1 — Work the exception queue for failed renewals Phase: MVP · Effort: L (illustrative) · Persona: Support–Ops
As a support rep, I want a queue of subscriptions stuck on a failed renewal so that I can resolve them before the subscriber churns.
- A subscription enters the queue only after its automated retry sequence is exhausted.
- A rep can see the decline reason and prior attempt history without opening a separate tool.
- Resolving an item (retry, refund, or cancel) removes it from the queue.
KB-OPS-2 — Create a subscription manually for a phone order Phase: P2 · Effort: L (illustrative) · Persona: Support–Ops
As a support rep, I want to create a subscription on a customer's behalf so that I can honor a phone or email order the same way a self-service signup would work.
- A manually created subscription behaves identically to a self-service one for billing, portal access, and reporting.
- The rep must confirm the customer's consent to recurring charges before the subscription activates.
- The action is attributed to the rep's identity in the subscription's history.
Platform
KB-PLT-1 — Send renewal-confirmation email Phase: MVP · Effort: M (illustrative) · Persona: Subscriber
As a subscriber, I want an email confirming each successful renewal so that I know a charge happened and what's shipping.
- The email sends only after the order tied to the renewal exists, not at charge time.
- A failed send is retried and does not block order fulfillment.
- The merchant can edit the email template without engineering involvement.
KB-PLT-2 — Emit an outbound webhook on subscription events Phase: MVP · Effort: L (illustrative) · Persona: Developer
As a developer integrating with the store, I want a webhook fired on subscription lifecycle events (created, paused, cancelled, renewed) so that I can sync subscription state into other systems without polling.
- Each event delivers at least once; the payload includes an ID a consumer can use to de-duplicate.
- A webhook endpoint that fails repeatedly is flagged to the merchant rather than retried indefinitely.
- Event payload shape is documented and versioned.
Commerce
KB-COM-1 — Automatic subscribe-and-save discount Phase: MVP · Effort: M (illustrative) · Persona: Merchant Admin
As a merchant admin, I want subscribing to automatically apply a discount so that the savings are the incentive to subscribe, without a coupon code.
- The discount applies at the moment a shopper chooses the subscription option, before checkout.
- The discount is visible in the cart as a distinct line, not folded into the item price silently.
- Changing the discount percentage does not affect subscriptions already active at the old rate, unless the merchant explicitly re-prices them.
KB-COM-2 — Exclude perishable treats from subscription eligibility Phase: MVP · Effort: M (illustrative) · Persona: Merchant Admin
As a merchant admin, I want to exclude specific products from subscription eligibility so that items unsuitable for recurring delivery (short shelf life, seasonal) never appear as subscribable.
- An excluded product shows one-time-purchase options only, on both the product page and cart.
- Excluding a product does not affect subscriptions that already include it; the merchant is warned if any exist.
- Exclusion can be set at the category level and overridden per product.
Trust
KB-TRU-1 — Capture auto-renewal disclosure and consent Phase: MVP · Effort: M (illustrative) · Persona: Merchant Admin
As a merchant admin, I need the storefront to disclose auto-renewal terms and capture affirmative consent at signup so that the subscription program meets auto-renewal notice requirements.
- The disclosure is shown before the subscribing action completes, not after.
- Consent is timestamped and retrievable per subscription for as long as the subscription exists.
- The disclosure text is editable by the merchant without engineering involvement.
KB-TRU-2 — Handle a data erasure request from a former subscriber Phase: MVP · Effort: L (illustrative) · Persona: Subscriber
As a former subscriber, I want to request erasure of my personal data so that closing my subscription also closes out my data footprint, subject to records the merchant must legally retain.
- An erasure request is logged with its outcome, including any fields retained for legal or financial record-keeping and why.
- Erasure does not remove records required for tax, accounting, or dispute resolution.
- The subscriber receives confirmation once the request is processed.
Kibble & Co. is a fictional demo merchant. This package is an independent demonstration by Nino Chavez of a scoping method — not a BigCommerce product, and not a real procurement.