// Traction Forecasting Template . Worked example: "RigShare"
// Fictional B2B equipment rental marketplace (excavators, lifts, generators)
// Stage: Post-launch, validating positioning. Operating in Ontario, expanding to QC + BC.
const TRACTION_EXAMPLE = {
  meta: {
    name: 'RigShare',
    category: 'B2B equipment rental marketplace',
    geography: 'Canada (ON, expanding QC + BC)',
    stage: 'Post-launch, 8 months live',
    horizonMonths: 24,
    monetization: {
      takeRateOn: true,
      takeRate: 12, // % of GMV
      supplySubOn: false,
      supplySubMonthly: 49, // $/mo per active supplier
      demandSubOn: false,
      demandSubMonthly: 0, // $/mo per active buyer
    },
  },
  supply: {
    label: 'Equipment owners (suppliers)',
    startSize: 18, // new suppliers per month at start
    growthMoM: 22, // % monthly growth in acquisition
    activationRate: 65, // % of acquired who list at least one rig
    retention: { m1: 88, m6: 62, m12: 48 }, // % retained
    listingsPerActive: 2.4, // average rigs listed per active supplier
    cac: 380, // $
  },
  demand: {
    label: 'Contractors (buyers)',
    startSize: 110, // new buyers per month at start
    growthMoM: 18,
    activationRate: 32, // % who complete first rental
    retention: { m1: 75, m6: 45, m12: 30 },
    transactionsPerActive: 1.6, // rentals per active buyer per month
    cac: 95,
  },
  liquidity: {
    matchRate: 68, // % of buyer searches resulting in booking
    avgBookingValue: 1850, // $
    timeToMatchHours: 14,
  },
  unitEconomics: {
    avgMargin: 12, // % take rate
    paymentProcessing: 2.9, // %
    supportCostPerTx: 8, // $
    refundRate: 1.5, // %
  },
};

Object.assign(window, { TRACTION_EXAMPLE });
