StormTrust follows a weather-to-action lifecycle. Every stage remains independently inspectable:
Forecast intelligence
│
▼
Radar evidence
│
▼
Ground observations
│
▼
Evidence fusion
│
▼
Storm event and revision
│
▼
Hail swath
│
▼
Property intersection
│
▼
Impact assessment
│
▼
Prioritization
│
▼
Action plan
/ \
▼ ▼
Field Campaign
\ /
▼ ▼
Outcome
│
▼
AttributionEvery meaningful weather or impact claim carries a classification:
| Label | Meaning |
|---|---|
predicted |
Forecast-oriented future expectation |
radar-derived |
Result derived from radar or radar-composite data |
modeled |
Result produced by an algorithm or inference model |
report-observed |
Result based on an external observation or report |
field-confirmed |
Result confirmed by an authorized field workflow |
human-reviewed |
Result reviewed by a qualified human |
third-party-verified |
Result verified by an approved independent party |
A record may contain several evidence items. A displayed summary label must not destroy the individual lineage.
Confidence and classification are separate dimensions:
{
"classification": "radar-derived",
"confidence": 0.91
}Confidence answers how strongly StormTrust supports a conclusion. Classification answers what type of evidence supports it.
Future confidence models may use radar quality, source agreement, spatial and temporal agreement, ground support, algorithm reliability, and data completeness. Every operational formula must be versioned through an algorithm release.
Illustrative formulas must not appear as approved operational algorithms.
Every important derived record should be traceable:
{
"derivedObjectId": "impact_123",
"algorithmRelease": "impact-v1.3.0",
"eventRevision": 4,
"sources": [
{
"source": "noaa-mrms",
"asset": "CONUS/MESH/...",
"observedAt": "2026-08-16T19:14:00Z",
"acquiredAt": "2026-08-16T19:16:07Z"
}
]
}Provenance supports debugging, customer trust, historical replay, audits, algorithm comparison, corrections, reports, and third-party review.
A StormEvent is a durable identity. A StormEventRevision records evolving
understanding:
StormEvent: ST-2026-08-16-KC-001
Revision 1
Estimated 1.25 in hail.
Revision 2
Estimated maximum increases to 1.75 in.
Boundary expands northeast.
Revision 3
Ground report records 1.50 in hail.
Revision 4
Event swath reconciled.
Revision 5
Property impacts recalculated.Downstream systems identify which revision informed an action.
Property impact follows a deliberate progression:
Property
↓
Parcel
↓
Structure
↓
Roof
↓
Storm exposure
↓
Damage likelihood
↓
Confidence
↓
Opportunity
↓
Eligibility
↓
PriorityExposure means a property intersects or sits near storm evidence. Damage likelihood estimates whether conditions could produce relevant damage. Opportunity represents business value. Eligibility determines whether an action is allowed. Priority orders eligible opportunities.
An action plan translates intelligence into recommended operations:
{
"eventId": "ST-2026-08-16-KC-001",
"revision": 3,
"strategy": "field-deployment",
"zones": [
{
"name": "Northwest",
"priority": 1,
"candidateProperties": 381,
"assignedCapacity": 4
}
]
}Action plans are versioned, explainable, editable, reviewable, freezeable, and comparable against outcomes.
StormTrust connects actions to results:
Storm event
↓
Property impact
↓
Action plan
↓
Assignment
↓
Visit or campaign
↓
Lead
↓
Inspection
↓
Opportunity
↓
Signed job
↓
RevenueAttribution supports event, property, territory, salesperson, campaign, channel, tenant, source, and algorithm-release analysis.
Every tenant-owned object has a clear tenant boundary. Isolation applies to database queries, object keys, caches, queue messages, Durable Object addresses, exports, reports, tokens, webhooks, audiences, contact data, and audit history.
Tenant context is explicit. StormTrust does not infer authorization from a client-controlled identifier alone.
StormTrust uses coordinated state only when coordination is required. Potential Durable Object responsibilities include a live storm actor, collaborative territory state, WebSocket fan-out, live revision distribution, and controlled single-writer transitions.
Use Cloudflare Durable Objects for coordinated state rather than generic stateless request handling.