Goal: Ship paid Pro tier ($49/mo) for HAQQ Legal AI by 2026-05-26. Objectives (weights): ship-speed (0.4) · revenue-quality (0.3) · reversibility (0.2) · brand-fit (0.1) Confidence horizon: 6 steps · Branching factor: 3 · Critic: /codex challenge @ depth 3
flowchart TD
G["Ship HAQQ Pro tier in 3 weeks"]
N0["Branch A: Usage-based"]
N1["Branch B: Flat-tier ✓"]
N2["Branch B.1: Self-serve Stripe portal ✓"]
N3["Step B.1.a: Stripe webhook → entitlements DB ✓"]
N4["Step B.1.b: Polling Stripe API"]
N5["Branch B.2: Sales-led onboarding"]
N6["Branch C: Hybrid"]
G --> N0
G --> N1
N1 --> N2
N2 --> N3
N2 --> N4
N1 --> N5
G --> N6
classDef chosen fill:#1f6feb,color:#fff,stroke:#fff,stroke-width:2px;
classDef speculative fill:#3a3a3a,color:#aaa,stroke-dasharray: 5 5;
class N1,N2,N3 chosen;
Forkcast convention: branches use pure markdown indentation; children sit immediately under their parent. Section headers go at the top, not between branches. This is what makes
scripts/mermaid.tsreliable.
Fork 1: Pricing model · branches scored against goal + objectives above
- Branch A: Usage-based (per-doc, per-token) — score 6.4 · cumul 0.85 [grounded][3/3]
- Risks: bill-shock churn (40%), legal buyers hate variable bills
- Grounding:
~/Documents/Code/HAQQ_userflow/pricing-research.md:18
- Branch B: Flat-tier (Pro $49/mo, Business $149/mo) — score 8.2 ← chosen · cumul 0.91 [grounded][3/3]
- Risks: leaves money on the table for power users
- Grounding:
project_haqq_plan_names.mdmemory; HubSpot deal-size avg - Fork 1.B: Onboarding gate
- Branch B.1: Self-serve Stripe portal — score 7.9 ← chosen · cumul 0.86 [grounded][3/3]
- Grounding: existing
stripeintegration in roadmap.dashable.dev; HubSpot pipeline auto-created already - Fork 1.B.1: Entitlements path
- Step B.1.a: Stripe webhook → entitlements DB — score 8.4 ← chosen · cumul 0.78 [grounded][3/3]
- Grounding:
project_hubspot_posthog_state_2026_05_05.md(Stripe-auto pipelines exist) - Predicted forward path (depth 4–6):
- Step 4 [grounded]: Pro feature flag flips on for paying customer (cumul 0.69)
- Step 5 [grounded]: First Pro customer hits limit, upgrade flow visible in PostHog (cumul 0.55)
- Step 6 [speculative]: Conversion to Business tier within 30 days (cumul 0.42
⚠️ horizon) ⚠️ Critic flag: assumes activation-rate parity with current Starter cohort; no historical data
- Grounding:
- Step B.1.b: Polling Stripe API — score 5.5 · cumul 0.73 [grounded][2/3]
- Risks: rate limits, latency, ugly
- Grounding: existing
- Branch B.2: Sales-led onboarding — score 6.0 · cumul 0.81 [grounded][3/3]
- Risks: kills self-serve volume; conflicts with HubSpot Inbound-nuked decision
- Branch C: Hybrid (flat base + metered overage) — score 5.1 · cumul 0.72 [grounded][2/3]
- Risks: complex for first launch; billing edge cases
⚠️ Critic flag: assumes Stripe metered billing is set up; not validated against codebase
Chosen path: Flat-tier → Self-serve Stripe → Webhook entitlements Predicted ship date: 2026-05-22 (4 days under deadline) Cumulative confidence at horizon: 0.42 — re-run at step 4 with actual entitlement data Open questions for human:
- Confirm Pro/Business price points ($49 / $149) match HubSpot deal-size data
- Validate Stripe webhook latency assumption before committing
- Decide whether to run a /grill-me on the Business tier upgrade hypothesis
- Check a box to lock that branch as a hard constraint.
- Uncheck a box to re-open the decision (the box currently checked under that fork becomes "considered, not chosen" instead of erased).
- Edit a score to override Forkcast's ranking with your taste — re-run will respect human-set scores.
- Add a constraint anywhere as
> Constraint: ...and re-run; Forkcast will prune branches that violate it. - Re-run from any node:
Run /forkcast from Fork 1.B.1regenerates only the subtree below.
Run /forkcast --linearize to emit a flat tasks/todo.md from the chosen path, ready for /yalla.