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
}