Audit trail

Full traceability

Every number on the dashboard traces to a layer, an execution mode, and a modeling assumption — nothing is a black box. Source: Yelp (Demo Mode) · captured 2026-06-27T00:00:00.000Z

New Restaurants · iOS · NYC
activerisk 97

Data Sufficiency / Validation

{
  "eligible": true,
  "reasons": [],
  "sufficiency": {
    "users7d": {
      "current": 12400,
      "required": 500
    },
    "users28d": {
      "current": 41200,
      "required": 2000
    },
    "events7d": {
      "current": 89000,
      "required": 10000
    },
    "nonZeroDays28d": {
      "current": 28,
      "required": 20
    },
    "historyDays": {
      "current": 92,
      "required": 28
    }
  }
}

Deterministic Metrics

{
  "currentRate": 41,
  "baseline": 50.2,
  "variance": 4.4,
  "projected": {
    "d7": 38.8,
    "d14": 36.5,
    "d30": 31.4
  },
  "declineProbability": 0.95,
  "selfRecoveryProbability": 0,
  "escalationProbability": 0.81,
  "riskScore": 97,
  "impact": {
    "value": 18770,
    "unit": "reviews",
    "description": "~18,770 fewer reviews",
    "horizonDays": 30
  }
}

Forecast Array (p10/p50/p90, 30 days)

[
  {
    "day": 1,
    "p10": 37.5,
    "p50": 40.6,
    "p90": 43.9
  },
  {
    "day": 2,
    "p10": 37.1,
    "p50": 40.4,
    "p90": 43.6
  },
  {
    "day": 3,
    "p10": 36.8,
    "p50": 40,
    "p90": 43.2
  },
  {
    "day": 4,
    "p10": 36.5,
    "p50": 39.7,
    "p90": 42.9
  },
  {
    "day": 5,
    "p10": 36.2,
    "p50": 39.4,
    "p90": 42.7
  },
  {
    "day": 6,
    "p10": 35.8,
    "p50": 39.1,
    "p90": 42.3
  },
  {
    "day": 7,
    "p10": 35.5,
    "p50": 38.8,
    "p90": 42
  },
  {
    "day": 8,
    "p10": 35.1,
    "p50": 38.4,
    "p90": 41.8
  },
  {
    "day": 9,
    "p10": 34.7,
    "p50": 38.1,
    "p90": 41.4
  },
  {
    "day": 10,
    "p10": 34.5,
    "p50": 37.8,
    "p90": 41.2
  },
  {
    "day": 11,
    "p10": 34.1,
    "p50": 37.5,
    "p90": 40.8
  },
  {
    "day": 12,
    "p10": 33.7,
    "p50": 37.2,
    "p90": 40.6
  },
  {
    "day": 13,
    "p10": 33.3,
    "p50": 36.8,
    "p90": 40.3
  },
  {
    "day": 14,
    "p10": 33.1,
    "p50": 36.5,
    "p90": 40.1
  },
  {
    "day": 15,
    "p10": 32.7,
    "p50": 36.2,
    "p90": 39.8
  },
  {
    "day": 16,
    "p10": 32.2,
    "p50": 35.9,
    "p90": 39.5
  },
  {
    "day": 17,
    "p10": 31.9,
    "p50": 35.5,
    "p90": 39.2
  },
  {
    "day": 18,
    "p10": 31.5,
    "p50": 35.2,
    "p90": 39
  },
  {
    "day": 19,
    "p10": 31.2,
    "p50": 34.9,
    "p90": 38.7
  },
  {
    "day": 20,
    "p10": 30.8,
    "p50": 34.6,
    "p90": 38.4
  },
  {
    "day": 21,
    "p10": 30.4,
    "p50": 34.3,
    "p90": 38.2
  },
  {
    "day": 22,
    "p10": 30,
    "p50": 34,
    "p90": 37.9
  },
  {
    "day": 23,
    "p10": 29.7,
    "p50": 33.7,
    "p90": 37.7
  },
  {
    "day": 24,
    "p10": 29.3,
    "p50": 33.3,
    "p90": 37.4
  },
  {
    "day": 25,
    "p10": 28.8,
    "p50": 33,
    "p90": 37.1
  },
  {
    "day": 26,
    "p10": 28.5,
    "p50": 32.7,
    "p90": 36.9
  },
  {
    "day": 27,
    "p10": 28.1,
    "p50": 32.4,
    "p90": 36.6
  },
  {
    "day": 28,
    "p10": 27.8,
    "p50": 32.1,
    "p90": 36.3
  },
  {
    "day": 29,
    "p10": 27.4,
    "p50": 31.7,
    "p90": 36.1
  },
  {
    "day": 30,
    "p10": 27,
    "p50": 31.4,
    "p90": 35.9
  }
]

Layer Trace

{
  "l1": {
    "summary": "Reachability simulated against current system configuration.",
    "constraints": [
      {
        "description": "New listings visible in search but not reviewable until verification completes",
        "value": "31% of new listings"
      },
      {
        "description": "iOS review-submit flow contains additional gating steps vs Web",
        "value": "+2 steps"
      }
    ]
  },
  "l2": {
    "method": "OLS trend over last 21d, prediction interval from SE(β) × 1.34 misspecification allowance, 20,000-path Monte Carlo → p10/p50/p90",
    "cohort": "Consumers × New Listings × iOS × NYC"
  }
}
New Restaurants · Web · NYC
activerisk 71

Data Sufficiency / Validation

{
  "eligible": true,
  "reasons": [],
  "sufficiency": {
    "users7d": {
      "current": 22000,
      "required": 500
    },
    "users28d": {
      "current": 78000,
      "required": 2000
    },
    "events7d": {
      "current": 142000,
      "required": 10000
    },
    "nonZeroDays28d": {
      "current": 28,
      "required": 20
    },
    "historyDays": {
      "current": 92,
      "required": 28
    }
  }
}

Deterministic Metrics

{
  "currentRate": 26,
  "baseline": 28.4,
  "variance": 1.7,
  "projected": {
    "d7": 25.4,
    "d14": 24.8,
    "d30": 23.5
  },
  "declineProbability": 0.81,
  "selfRecoveryProbability": 0.07,
  "escalationProbability": 0.47,
  "riskScore": 71,
  "impact": {
    "value": 1676,
    "unit": "reviews",
    "description": "~1,676 fewer reviews",
    "horizonDays": 30
  }
}

Forecast Array (p10/p50/p90, 30 days)

[
  {
    "day": 1,
    "p10": 24.4,
    "p50": 26,
    "p90": 27.5
  },
  {
    "day": 2,
    "p10": 24.2,
    "p50": 25.8,
    "p90": 27.4
  },
  {
    "day": 3,
    "p10": 24.2,
    "p50": 25.7,
    "p90": 27.3
  },
  {
    "day": 4,
    "p10": 24.1,
    "p50": 25.7,
    "p90": 27.2
  },
  {
    "day": 5,
    "p10": 24,
    "p50": 25.6,
    "p90": 27.2
  },
  {
    "day": 6,
    "p10": 23.9,
    "p50": 25.5,
    "p90": 27.1
  },
  {
    "day": 7,
    "p10": 23.8,
    "p50": 25.4,
    "p90": 27.1
  },
  {
    "day": 8,
    "p10": 23.7,
    "p50": 25.3,
    "p90": 27
  },
  {
    "day": 9,
    "p10": 23.6,
    "p50": 25.2,
    "p90": 26.9
  },
  {
    "day": 10,
    "p10": 23.5,
    "p50": 25.2,
    "p90": 26.8
  },
  {
    "day": 11,
    "p10": 23.4,
    "p50": 25.1,
    "p90": 26.7
  },
  {
    "day": 12,
    "p10": 23.3,
    "p50": 25,
    "p90": 26.7
  },
  {
    "day": 13,
    "p10": 23.2,
    "p50": 24.9,
    "p90": 26.6
  },
  {
    "day": 14,
    "p10": 23.1,
    "p50": 24.8,
    "p90": 26.6
  },
  {
    "day": 15,
    "p10": 23,
    "p50": 24.8,
    "p90": 26.5
  },
  {
    "day": 16,
    "p10": 22.9,
    "p50": 24.7,
    "p90": 26.5
  },
  {
    "day": 17,
    "p10": 22.8,
    "p50": 24.6,
    "p90": 26.4
  },
  {
    "day": 18,
    "p10": 22.7,
    "p50": 24.5,
    "p90": 26.3
  },
  {
    "day": 19,
    "p10": 22.6,
    "p50": 24.4,
    "p90": 26.3
  },
  {
    "day": 20,
    "p10": 22.4,
    "p50": 24.3,
    "p90": 26.2
  },
  {
    "day": 21,
    "p10": 22.3,
    "p50": 24.2,
    "p90": 26.2
  },
  {
    "day": 22,
    "p10": 22.2,
    "p50": 24.1,
    "p90": 26.1
  },
  {
    "day": 23,
    "p10": 22.1,
    "p50": 24,
    "p90": 26.1
  },
  {
    "day": 24,
    "p10": 22,
    "p50": 24,
    "p90": 26
  },
  {
    "day": 25,
    "p10": 21.9,
    "p50": 23.9,
    "p90": 25.9
  },
  {
    "day": 26,
    "p10": 21.7,
    "p50": 23.8,
    "p90": 25.9
  },
  {
    "day": 27,
    "p10": 21.6,
    "p50": 23.7,
    "p90": 25.8
  },
  {
    "day": 28,
    "p10": 21.5,
    "p50": 23.6,
    "p90": 25.8
  },
  {
    "day": 29,
    "p10": 21.4,
    "p50": 23.6,
    "p90": 25.7
  },
  {
    "day": 30,
    "p10": 21.3,
    "p50": 23.5,
    "p90": 25.7
  }
]

Layer Trace

{
  "l1": {
    "summary": "Reachability simulated against current system configuration.",
    "constraints": [
      {
        "description": "Web has no push re-engagement for consumers who viewed but didn't review",
        "value": "—"
      }
    ]
  },
  "l2": {
    "method": "OLS trend over last 21d, prediction interval from SE(β) × 1.34 misspecification allowance, 20,000-path Monte Carlo → p10/p50/p90",
    "cohort": "Consumers × New Listings × Web × NYC"
  }
}
New Restaurants · Android · LA
activerisk 66

Data Sufficiency / Validation

{
  "eligible": true,
  "reasons": [],
  "sufficiency": {
    "users7d": {
      "current": 8200,
      "required": 500
    },
    "users28d": {
      "current": 26000,
      "required": 2000
    },
    "events7d": {
      "current": 51000,
      "required": 10000
    },
    "nonZeroDays28d": {
      "current": 27,
      "required": 20
    },
    "historyDays": {
      "current": 92,
      "required": 28
    }
  }
}

Deterministic Metrics

{
  "currentRate": 35,
  "baseline": 38.3,
  "variance": 2,
  "projected": {
    "d7": 34.3,
    "d14": 33.6,
    "d30": 31.9
  },
  "declineProbability": 0.76,
  "selfRecoveryProbability": 0.12,
  "escalationProbability": 0.44,
  "riskScore": 66,
  "impact": {
    "value": 1407,
    "unit": "reviews",
    "description": "~1,407 fewer reviews",
    "horizonDays": 30
  }
}

Forecast Array (p10/p50/p90, 30 days)

[
  {
    "day": 1,
    "p10": 32.5,
    "p50": 34.9,
    "p90": 37.3
  },
  {
    "day": 2,
    "p10": 32.4,
    "p50": 34.8,
    "p90": 37.2
  },
  {
    "day": 3,
    "p10": 32.3,
    "p50": 34.7,
    "p90": 37.1
  },
  {
    "day": 4,
    "p10": 32.2,
    "p50": 34.6,
    "p90": 37
  },
  {
    "day": 5,
    "p10": 32.1,
    "p50": 34.5,
    "p90": 36.9
  },
  {
    "day": 6,
    "p10": 31.9,
    "p50": 34.4,
    "p90": 36.8
  },
  {
    "day": 7,
    "p10": 31.8,
    "p50": 34.3,
    "p90": 36.7
  },
  {
    "day": 8,
    "p10": 31.7,
    "p50": 34.2,
    "p90": 36.6
  },
  {
    "day": 9,
    "p10": 31.6,
    "p50": 34.1,
    "p90": 36.6
  },
  {
    "day": 10,
    "p10": 31.5,
    "p50": 34,
    "p90": 36.5
  },
  {
    "day": 11,
    "p10": 31.3,
    "p50": 33.9,
    "p90": 36.4
  },
  {
    "day": 12,
    "p10": 31.2,
    "p50": 33.8,
    "p90": 36.3
  },
  {
    "day": 13,
    "p10": 31.1,
    "p50": 33.7,
    "p90": 36.2
  },
  {
    "day": 14,
    "p10": 30.9,
    "p50": 33.6,
    "p90": 36.2
  },
  {
    "day": 15,
    "p10": 30.8,
    "p50": 33.5,
    "p90": 36.1
  },
  {
    "day": 16,
    "p10": 30.6,
    "p50": 33.4,
    "p90": 36.1
  },
  {
    "day": 17,
    "p10": 30.5,
    "p50": 33.3,
    "p90": 36
  },
  {
    "day": 18,
    "p10": 30.4,
    "p50": 33.2,
    "p90": 35.9
  },
  {
    "day": 19,
    "p10": 30.3,
    "p50": 33.1,
    "p90": 35.8
  },
  {
    "day": 20,
    "p10": 30.1,
    "p50": 33,
    "p90": 35.8
  },
  {
    "day": 21,
    "p10": 30,
    "p50": 32.9,
    "p90": 35.7
  },
  {
    "day": 22,
    "p10": 29.8,
    "p50": 32.7,
    "p90": 35.7
  },
  {
    "day": 23,
    "p10": 29.6,
    "p50": 32.6,
    "p90": 35.6
  },
  {
    "day": 24,
    "p10": 29.5,
    "p50": 32.5,
    "p90": 35.6
  },
  {
    "day": 25,
    "p10": 29.4,
    "p50": 32.5,
    "p90": 35.5
  },
  {
    "day": 26,
    "p10": 29.2,
    "p50": 32.4,
    "p90": 35.5
  },
  {
    "day": 27,
    "p10": 29.1,
    "p50": 32.3,
    "p90": 35.5
  },
  {
    "day": 28,
    "p10": 28.9,
    "p50": 32.2,
    "p90": 35.4
  },
  {
    "day": 29,
    "p10": 28.7,
    "p50": 32.1,
    "p90": 35.4
  },
  {
    "day": 30,
    "p10": 28.6,
    "p50": 31.9,
    "p90": 35.3
  }
]

Layer Trace

{
  "l1": {
    "summary": "Reachability simulated against current system configuration.",
    "constraints": [
      {
        "description": "Android 14+ notification delivery reduced, weakening consumer re-engagement",
        "value": "-22% delivery"
      }
    ]
  },
  "l2": {
    "method": "OLS trend over last 21d, prediction interval from SE(β) × 1.34 misspecification allowance, 20,000-path Monte Carlo → p10/p50/p90",
    "cohort": "Consumers × New Listings × Android × LA"
  }
}
Established Restaurants · Cross-Platform · Top Metro
activerisk 11

Data Sufficiency / Validation

{
  "eligible": true,
  "reasons": [],
  "sufficiency": {
    "users7d": {
      "current": 34000,
      "required": 500
    },
    "users28d": {
      "current": 120000,
      "required": 2000
    },
    "events7d": {
      "current": 210000,
      "required": 10000
    },
    "nonZeroDays28d": {
      "current": 28,
      "required": 20
    },
    "historyDays": {
      "current": 92,
      "required": 28
    }
  }
}

Deterministic Metrics

{
  "currentRate": 89,
  "baseline": 88.2,
  "variance": 0.9,
  "projected": {
    "d7": 89.3,
    "d14": 89.6,
    "d30": 90.2
  },
  "declineProbability": 0.25,
  "selfRecoveryProbability": 0.87,
  "escalationProbability": 0,
  "riskScore": 11,
  "impact": {
    "value": 0,
    "unit": "reviews",
    "description": "~0 fewer reviews",
    "horizonDays": 30
  }
}

Forecast Array (p10/p50/p90, 30 days)

[
  {
    "day": 1,
    "p10": 88,
    "p50": 89,
    "p90": 90.1
  },
  {
    "day": 2,
    "p10": 88.1,
    "p50": 89.1,
    "p90": 90.1
  },
  {
    "day": 3,
    "p10": 88.1,
    "p50": 89.1,
    "p90": 90.1
  },
  {
    "day": 4,
    "p10": 88.1,
    "p50": 89.2,
    "p90": 90.2
  },
  {
    "day": 5,
    "p10": 88.2,
    "p50": 89.2,
    "p90": 90.3
  },
  {
    "day": 6,
    "p10": 88.2,
    "p50": 89.3,
    "p90": 90.3
  },
  {
    "day": 7,
    "p10": 88.3,
    "p50": 89.3,
    "p90": 90.3
  },
  {
    "day": 8,
    "p10": 88.3,
    "p50": 89.3,
    "p90": 90.4
  },
  {
    "day": 9,
    "p10": 88.3,
    "p50": 89.4,
    "p90": 90.4
  },
  {
    "day": 10,
    "p10": 88.3,
    "p50": 89.4,
    "p90": 90.5
  },
  {
    "day": 11,
    "p10": 88.4,
    "p50": 89.4,
    "p90": 90.5
  },
  {
    "day": 12,
    "p10": 88.4,
    "p50": 89.5,
    "p90": 90.6
  },
  {
    "day": 13,
    "p10": 88.4,
    "p50": 89.5,
    "p90": 90.6
  },
  {
    "day": 14,
    "p10": 88.5,
    "p50": 89.6,
    "p90": 90.7
  },
  {
    "day": 15,
    "p10": 88.5,
    "p50": 89.6,
    "p90": 90.7
  },
  {
    "day": 16,
    "p10": 88.5,
    "p50": 89.7,
    "p90": 90.8
  },
  {
    "day": 17,
    "p10": 88.6,
    "p50": 89.7,
    "p90": 90.8
  },
  {
    "day": 18,
    "p10": 88.6,
    "p50": 89.7,
    "p90": 90.9
  },
  {
    "day": 19,
    "p10": 88.6,
    "p50": 89.8,
    "p90": 91
  },
  {
    "day": 20,
    "p10": 88.6,
    "p50": 89.8,
    "p90": 91
  },
  {
    "day": 21,
    "p10": 88.6,
    "p50": 89.8,
    "p90": 91.1
  },
  {
    "day": 22,
    "p10": 88.7,
    "p50": 89.9,
    "p90": 91.1
  },
  {
    "day": 23,
    "p10": 88.7,
    "p50": 89.9,
    "p90": 91.2
  },
  {
    "day": 24,
    "p10": 88.7,
    "p50": 90,
    "p90": 91.3
  },
  {
    "day": 25,
    "p10": 88.7,
    "p50": 90,
    "p90": 91.3
  },
  {
    "day": 26,
    "p10": 88.7,
    "p50": 90.1,
    "p90": 91.4
  },
  {
    "day": 27,
    "p10": 88.8,
    "p50": 90.1,
    "p90": 91.4
  },
  {
    "day": 28,
    "p10": 88.8,
    "p50": 90.1,
    "p90": 91.5
  },
  {
    "day": 29,
    "p10": 88.8,
    "p50": 90.2,
    "p90": 91.6
  },
  {
    "day": 30,
    "p10": 88.8,
    "p50": 90.2,
    "p90": 91.7
  }
]

Layer Trace

{
  "l1": {
    "summary": "No blocking reachability constraints detected.",
    "constraints": []
  },
  "l2": {
    "method": "OLS trend over last 21d, prediction interval from SE(β) × 1.34 misspecification allowance, 20,000-path Monte Carlo → p10/p50/p90",
    "cohort": "Consumers × Established × Cross-Platform × Top Metro"
  }
}
Lapsed New Listings · Mobile · Suburban
monitoring

Data Sufficiency / Validation

{
  "eligible": false,
  "reasons": [
    "280 users in 7d (need 500+).",
    "1400 users in 28d (need 2000+).",
    "8200 events in 7d (need 10000+).",
    "18 active days in 28d (need 20+)."
  ],
  "sufficiency": {
    "users7d": {
      "current": 280,
      "required": 500
    },
    "users28d": {
      "current": 1400,
      "required": 2000
    },
    "events7d": {
      "current": 8200,
      "required": 10000
    },
    "nonZeroDays28d": {
      "current": 18,
      "required": 20
    },
    "historyDays": {
      "current": 24,
      "required": 28
    }
  }
}

Deterministic Metrics

{
  "currentRate": 4.2,
  "baseline": 4.3,
  "variance": 0.5,
  "projected": {
    "d7": null,
    "d14": null,
    "d30": null
  },
  "declineProbability": 0,
  "selfRecoveryProbability": 0,
  "escalationProbability": 0,
  "riskScore": 0,
  "impact": {
    "value": 0,
    "unit": "reviews",
    "description": "INSUFFICIENT SIGNAL",
    "horizonDays": 30
  }
}

Layer Trace

{
  "l1": {
    "summary": "No blocking reachability constraints detected.",
    "constraints": []
  },
  "l2": {
    "method": "Suppressed — INSUFFICIENT SIGNAL",
    "cohort": "Consumers × Lapsed 30d+ × Mobile × Suburban"
  }
}
New Restaurants · Android · International
insufficient

Data Sufficiency / Validation

{
  "eligible": false,
  "reasons": [
    "Only 6 days of history (need 14+).",
    "120 users in 7d (need 500+).",
    "340 users in 28d (need 2000+).",
    "890 events in 7d (need 10000+).",
    "5 active days in 28d (need 20+)."
  ],
  "sufficiency": {
    "users7d": {
      "current": 120,
      "required": 500
    },
    "users28d": {
      "current": 340,
      "required": 2000
    },
    "events7d": {
      "current": 890,
      "required": 10000
    },
    "nonZeroDays28d": {
      "current": 5,
      "required": 20
    },
    "historyDays": {
      "current": 6,
      "required": 28
    }
  }
}

Deterministic Metrics

{
  "currentRate": 0.4,
  "baseline": 0.5,
  "variance": 0.1,
  "projected": {
    "d7": null,
    "d14": null,
    "d30": null
  },
  "declineProbability": 0,
  "selfRecoveryProbability": 0,
  "escalationProbability": 0,
  "riskScore": 0,
  "impact": {
    "value": 0,
    "unit": "reviews",
    "description": "INSUFFICIENT SIGNAL",
    "horizonDays": 30
  }
}

Layer Trace

{
  "l1": {
    "summary": "No blocking reachability constraints detected.",
    "constraints": []
  },
  "l2": {
    "method": "Suppressed — INSUFFICIENT SIGNAL",
    "cohort": "Consumers × New Listings × Android × International"
  }
}
NarrativeEngine Contract (Layer 3)

Flow: Deterministic → LLM → UI. The LLM never computes a number; it only interprets the metrics above. On-demand only.

System Prompt (verbatim)

You are a behavioral simulation analyst. You explain what will likely happen NEXT if nothing changes. You do not compute metrics. You do not claim causation. You always express uncertainty. If signal is weak, say "INSUFFICIENT SIGNAL". Output JSON only.
Shadow — know what happens next, before it happens