Trigger designer

Pick a template. Tune the thresholds. Ship the spec.

Template
Pick a structure. Tune from there.

Solar generation and retail loss events with multiple signals

Core tune
The four knobs that change the shape
Advanced controlsObjective, horizon, zoning, datasets, governance
PayoutTiered · 2 bandsGuards2Inputs2Reviewers2
Live spec
The contract the worker and pack will consume
Every keystroke revalidates against the Zod schema.
{
  "condition": {
    "combine": "all",
    "guards": [
      {
        "comparator": ">=",
        "input": "rainfall_window",
        "op": "threshold",
        "value": 50
      },
      {
        "comparator": ">=",
        "input": "secondary_signal",
        "op": "threshold",
        "value": 2
      }
    ]
  },
  "governance": {
    "basisRiskDisclosureRequired": true,
    "dataLineageRequired": true,
    "reviewersRequired": 2
  },
  "inputs": [
    {
      "datasetRef": "dataset:kma-jongno-rainfall:v2026-04-01",
      "key": "primary_rainfall",
      "provider": "KMA",
      "stationRef": "JONGNO",
      "variable": "rainfall_mm"
    },
    {
      "datasetRef": "dataset:era5-2m-temperature:v2026-04-01",
      "key": "secondary_dataset",
      "provider": "ERA5",
      "variable": "temperature_c"
    }
  ],
  "metadata": {
    "currency": "KRW",
    "hedgeHorizonMonths": 3,
    "projectType": "traditional_market_bi",
    "zoneLabel": "Gwangjang Market"
  },
  "name": "Gwangjang Rainfall and Heat BI v1",
  "objective": "Protect traditional-market merchants against rainfall-led business interruption with a secondary heat stress gate to cut false positives.",
  "payout": {
    "mode": "tiered",
    "tiers": [
      {
        "payoutPercent": 0.3,
        "threshold": 50
      },
      {
        "payoutPercent": 0.65,
        "threshold": 60
      }
    ]
  },
  "transforms": [
    {
      "input": "primary_rainfall",
      "op": "rolling_sum",
      "unit": "day",
      "window": 3
    },
    {
      "days": 2,
      "input": "secondary_dataset",
      "op": "consecutive_days_above",
      "threshold": 32
    }
  ],
  "version": 1
}