← Files 8gnc — Brand Growth DiagnosticARCHIVED FILE

skills/productprint-tier-b/references/output-schema-tier-b.md

11.2 KB · Sep 30, 2026 · 23:15 UTC

↓ Download file

# Productprint Tier-B — Output Schema (Layer 3)

The final deliverable is a single JSON object with the shape below. This object (together with the Tier-A JSON carried forward from Layer 2) is the seed input for `productprint-tier-c` (Layer 4) — Layer 4 specifically needs the strategic bets, roadmap horizons, and risk register to produce deployment-ready positioning elements.

## Field Reference

| Field | Type | Description |
|---|---|---|
| `product_name` | string | Product or platform being researched |
| `topic` | string | Topic/category scope |
| `audience` | string | Audience definition used |
| `backbone_refs_used` | array | Which Backbone/Tier-A evidence was reused (no re-research) |
| `tierB_results` | object | All 5 elements, each with at least one behavioral proxy test where a signal is testable |
| `sources` | array | Citation list (carried forward + any new lightweight evidence) |
| `audit_log` | array | Phase-by-phase record of actions and decisions |

## Schema Skeleton

```json
{
  "product_name": "string",
  "topic": "string",
  "audience": "string",
  "backbone_refs_used": ["source_id or Tier-A element ref"],
  "tierB_results": {
    "strategic_bets": {
      "bets": [
        {
          "name": "string (short bet label)",
          "hypothesis": "string (if we do X, we will achieve Y, as evidenced by Z)",
          "kill_criterion": "string (the observable signal that invalidates this bet — if X happens, we stop)",
          "tied_to_capability": "string (required_capability ref from Tier-A Sprint 8)"
        }
      ],
      "proxy_test": "string (behavioral signal design to pressure-test the leading bet before committing full resources)",
      "claim_sheet": {
        "statement": "string (the claim these bets assert)",
        "boundaries": "string (conditions under which this bet set is valid)",
        "counter_evidence": "string (what evidence would break these bets)",
        "confidence": "low | medium | high",
        "sources": ["source_id"]
      }
    },
    "roadmap_horizons": {
      "now": ["bet_name (horizon 0-6 months)"],
      "next": ["bet_name (horizon 6-18 months)"],
      "later": ["bet_name (horizon 18+ months)"],
      "sequencing_logic": "string (explains WHY the order is correct — must cite dependencies between bets and kill-criterion thresholds, not intuition)",
      "dependencies": [
        {
          "from_bet": "string",
          "to_bet": "string",
          "dependency_type": "prerequisite | risk-gate | resource-constraint | learning-gate"
        }
      ],
      "proxy_test": "string (leading indicator to track in Now horizon that would trigger a Now→Next promotion or a bet kill)",
      "claim_sheet": {
        "statement": "string",
        "boundaries": "string",
        "counter_evidence": "string",
        "confidence": "low | medium | high",
        "sources": ["source_id"]
      }
    },
    "build_buy_partner": {
      "decisions": [
        {
          "capability": "string (required_capability ref from Tier-A Sprint 8)",
          "choice": "build | buy | partner",
          "rationale": "string (why this choice wins over the alternatives — cost, speed, defensibility, integration risk)"
        }
      ],
      "claim_sheet": {
        "statement": "string",
        "boundaries": "string",
        "counter_evidence": "string",
        "confidence": "low | medium | high",
        "sources": ["source_id"]
      }
    },
    "prioritization_model": {
      "items": [
        {
          "bet_ref": "string (bet name from strategic_bets)",
          "impact": "1-5 (evidence-backed, tied to Tier-A JTBD outcomes or economic engine)",
          "confidence": "1-5 (based on proof density and Tier-A claim sheet confidence)",
          "effort": "1-5 (1=lowest effort, 5=highest effort)",
          "score": "number (impact × confidence / effort)"
        }
      ],
      "method": "string (scoring method description — impact × confidence / effort, with notes on how each dimension was rated)",
      "proxy_test": "string (the smallest observable signal that would shift the top-priority bet's impact or confidence score)",
      "claim_sheet": {
        "statement": "string",
        "boundaries": "string",
        "counter_evidence": "string",
        "confidence": "low | medium | high",
        "sources": ["source_id"]
      }
    },
    "risk_register": {
      "risks": [
        {
          "risk": "string (plain-language risk statement)",
          "likelihood": "low | medium | high",
          "severity": "low | medium | high",
          "leading_indicator": "string (observable early signal BEFORE the risk materializes — this is the management-system hook)",
          "mitigation": "string (concrete action to take when the leading indicator fires)",
          "tied_to_assumption": "string (the Tier-A assumption or bet this risk threatens)"
        }
      ],
      "claim_sheet": {
        "statement": "string",
        "boundaries": "string",
        "counter_evidence": "string",
        "confidence": "low | medium | high",
        "sources": ["source_id"]
      }
    }
  },
  "sources": [
    {
      "id": "source_id",
      "title": "string",
      "publisher": "string",
      "url": "string",
      "access_date": "YYYY-MM-DD",
      "evidence_note": "string",
      "stance": "supports | contradicts | contextual"
    }
  ],
  "audit_log": [
    { "phase": "string", "actions": "string", "decisions": "string" }
  ]
}
```

## Element Descriptions

### 1. `strategic_bets`

Each bet is a falsifiable hypothesis tied to a required capability from Tier-A Sprint 8. A bet without a kill criterion is a wish, not a bet. The `proxy_test` is a behavioral signal — not a survey — designed to stress-test the leading bet before full resource commitment.

**Example:**

```json
"bets": [
  {
    "name": "SMB Self-Serve Onboarding",
    "hypothesis": "If we ship a 5-step guided onboarding flow, SMB activation rate will exceed 60% within 30 days, as evidenced by comparable B2B SaaS benchmarks showing 55-65% rates for guided vs. 30% for unguided flows.",
    "kill_criterion": "If 30-day activation stays below 40% after two iteration cycles (≤90 days), shut down self-serve and revert to high-touch onboarding for SMB.",
    "tied_to_capability": "guided_onboarding_engine"
  }
]
```

### 2. `roadmap_horizons`

The marquee output of Tier-B. Now/Next/Later ordering is REQUIRED to be justified by `sequencing_logic` citing inter-bet dependencies and kill-criterion thresholds. An unjustified sequence fails the gate. `dependencies` make the ordering auditable — each edge names its type (prerequisite, risk-gate, resource-constraint, or learning-gate).

**Example:**

```json
"now": ["SMB Self-Serve Onboarding"],
"next": ["Expansion Revenue Loop"],
"later": ["Enterprise Tier Launch"],
"sequencing_logic": "SMB Self-Serve Onboarding must ship first because (1) it is the prerequisite for the Expansion Revenue Loop (expansion requires activated users to expand) and (2) its kill criterion provides a learning gate — if activation stays below 40%, the Enterprise Tier bet's ICP assumption is invalidated before we commit enterprise sales resources.",
"dependencies": [
  { "from_bet": "SMB Self-Serve Onboarding", "to_bet": "Expansion Revenue Loop", "dependency_type": "prerequisite" },
  { "from_bet": "SMB Self-Serve Onboarding", "to_bet": "Enterprise Tier Launch", "dependency_type": "learning-gate" }
]
```

### 3. `build_buy_partner`

One decision per required capability from Tier-A Sprint 8. The `rationale` must address why the chosen path wins on at least two of: cost, speed-to-capability, defensibility, and integration risk. "Build" chosen purely for control without a defensibility argument does not clear the gate.

**Example:**

```json
"decisions": [
  {
    "capability": "guided_onboarding_engine",
    "choice": "build",
    "rationale": "Onboarding logic is deeply tied to our data model and user state machine — no off-the-shelf tool integrates without a full middleware layer. Build cost is 6-8 weeks; buying and integrating a vendor solution is estimated at 10-12 weeks plus $18K/yr licensing. Building keeps the activation data in-product, compounding into the personalization flywheel (defensibility)."
  }
]
```

### 4. `prioritization_model`

Impact × Confidence / Effort scoring. All three dimensions must be evidence-backed — no vibes. Impact ties to Tier-A JTBD outcomes or economic engine metrics. Confidence ties to proof density in the relevant Tier-A claim sheet. Effort is grounded in team capacity and build/buy/partner decisions. The `proxy_test` names the smallest observable signal that would move the top bet's score.

**Example:**

```json
"items": [
  {
    "bet_ref": "SMB Self-Serve Onboarding",
    "impact": 5,
    "confidence": 4,
    "effort": 3,
    "score": 6.67
  }
],
"method": "Impact rated 1-5 against Tier-A JTBD outcome importance scores. Confidence rated 1-5 from Tier-A claim sheet confidence (high=4-5, medium=3, low=1-2). Effort rated 1-5 from build/buy/partner rationale (1=partner/buy, 3=build light, 5=build complex). Score = (impact × confidence) / effort."
```

### 5. `risk_register`

Each risk maps to a specific Tier-A assumption or bet it threatens and carries a `leading_indicator` — an early observable signal that fires before the risk materializes. This is the management-system hook: when the indicator fires, the `mitigation` is the pre-planned response. Severity × Likelihood without a leading indicator is just a list; the indicator makes the register actionable.

**Example:**

```json
"risks": [
  {
    "risk": "Guided onboarding adoption stays below 30%, signaling ICP mismatch",
    "likelihood": "medium",
    "severity": "high",
    "leading_indicator": "Week-2 onboarding completion rate drops below 50% for three consecutive cohorts",
    "mitigation": "Trigger qualitative interview pass (min 10 non-completers within 5 days); pause further onboarding feature investment pending findings; escalate to strategy review if pattern holds for two additional cohorts",
    "tied_to_assumption": "SMB segment has sufficient activation motivation without high-touch support (Tier-A Sprint 4 WTP proxy)"
  }
]
```

## Validation Rules

- Every element in `tierB_results` carries at least one behavioral proxy signal where a signal is testable (`strategic_bets`, `roadmap_horizons`, and `prioritization_model` each require a `proxy_test`; `build_buy_partner` and `risk_register` use structural evidence in lieu of a behavioral proxy).
- `roadmap_horizons.sequencing_logic` MUST cite inter-bet dependencies and kill-criterion thresholds — an unjustified sequence fails the gate.
- Every `risk_register` entry requires a `leading_indicator` and a `tied_to_assumption` — a risk without an early warning signal is not actionable.
- Every `build_buy_partner` decision requires a `rationale` addressing at least two of: cost, speed, defensibility, integration risk.
- Any element that conflicts with Tier-A output must be revised or carry explicit boundary conditions — record the conflict in the `audit_log`.
- Proxy tests must be designed fresh — do not copy Tier-A proof points verbatim as proxy tests.
- `prioritization_model` scores must be computed from evidence-backed impact, confidence, and effort ratings — "no vibes" means every dimension cites its source (JTBD outcome rank, claim-sheet confidence level, build/buy/partner estimate).

SHA-256: af2ab3545b4ef3111ec3fa4858ea0edd8003266856ddb6f349d4a139291cff49