PredictionMLCalibrationWave Detection

Ignition — Predictive Scoring Engine

A scoring engine that predicts product-adoption outcomes across 5 weighted dimensions and self-calibrates against real results. Built to decide where to spend the next month of work.

Ignition — Predictive Scoring Engine preview

The Problem

I wanted to predict which products would achieve explosive adoption — not just “good” growth, but the kind of rapid, viral traction that makes or breaks a product. The question: can you score a product across measurable dimensions and predict its adoption trajectory with real accuracy?

The Architecture

Ignition scores products across 5 weighted pillars, each containing multiple features:

PillarWeight (v7)What It Measures
Foundation0.00Team, funding, timing
Product0.10UX, speed, delight, activation
Distribution0.11Virality, channels, network effects
Environment0.31Market timing, frustration, wave alignment
Moat0.38Network effects, switching costs, data lock-in

The surprise: Moat is the strongest predictor (weight 0.38, pillar correlation r=0.73). Who the team is (Foundation) matters almost nothing for adoption prediction — what matters is whether the product creates structural advantages that compound.

18-table SQLite schema with full audit trail, change tracking, and calibration history.

7-signal wave detection: Tracks search velocity, incumbent frustration, technology maturity, regulatory shifts, investment patterns, creator density, and cultural indicators. Fires alerts when 4+ signals accelerate simultaneously >15% week-over-week.

Weight Learning

The system doesn’t use static weights. It learns from outcomes:

  1. Score a product across all pillars
  2. Record the actual outcome (dead, slow_burn, spike_and_die, steady_growth, explosion)
  3. Run weight optimization to minimize prediction error
  4. Accept new weights only if correlation improves by 3%+ (prevents overfitting to noise)

v7 calibration (current): correlation 0.799, tier accuracy 65%, ±1 tier accuracy 93%.

Outcome distribution across 671 cases:

  • 151 steady_growth, 137 spike_and_die, 137 dead, 126 slow_burn, 120 explosion

Key Decisions

Why environment-normalized scoring: LLM-generated batch cases systematically inflated certain features (incumbent_frustration +20pp, wave_strength +8-20pp). Rather than discarding the data, I applied global scale normalization (0.67x and 0.87x) anchored to hand-scored ground truth. This preserved the valuable signal while correcting the bias.

Why honest accuracy reporting: The system reports 65% exact tier accuracy, not 93%. The 93% is ±1 tier. Both numbers are useful, but leading with the exact number keeps the system honest. If I only reported the forgiving metric, I’d lose the pressure to improve.

Why slow_burn is structurally hard: slow_burn outcomes overlap with both steady_growth and spike_and_die in their IQR ranges. This isn’t a model failure — it’s a real property of the data. Products that grow slowly look statistically similar to products that either die or take off. The model is honest about this ambiguity.

What I Learned

  • Calibration must compute from scratch. An early bug read stale accuracy values from a calibration_summary table instead of recomputing. The system appeared to be improving when it wasn’t. Apples-to-apples comparison on every calibration run is non-negotiable.

  • Feature importance surprises you. I expected Product quality to be the top predictor. It’s not even close — Moat and Environment dominate. The data says: it matters less how good your product is than whether the market conditions and structural advantages are in your favor.

  • 671 cases is enough to learn, not enough to be certain. The correlation is strong (0.80) but the confidence intervals on individual predictions are wide. I could add more cases, but the marginal accuracy gain decreases with each batch. The honest answer is: this system is useful for relative ranking, not absolute prediction.