01 · The weather
Live National Weather Service alerts, polled straight from the public feed for the states the customer record covers. Malformed alerts are skipped rather than raised. A statewide polygon gets a capped radius so one alert cannot sweep in the entire customer list.
api.weather.gov · free, no key
02 · The match
A Spark job joins each storm footprint against the customer record and scores exposure from 0 to 1. Distance from the footprint outweighs account size, so a large account well outside it does not outrank a small one under it.
Spark · exposure score 0–1
03 · The human gate
He kept the model out of the first message. Safety guidance goes out as official National Weather Service text with no model in the loop, and the inspection offer comes second. The agent drafts everything after that against campaigns that booked jobs before, and every message that reaches a customer waits for a person to approve it.
first message · no model in the loop
Stated plainly
Real, synthetic, and simulated.
Real. The weather alerts and their narrative text. The Spark scoring. The vector index and every retrieval against it. Every database write the agent makes. The change feed and the rollup computed from it.
Synthetic. The customer record. 61 customers and prospects across six regional tenants, placed where their hazard actually occurs. Real customer data cannot be used for a demo.
Simulated. Inbound replies. Production would take Twilio webhooks. A seeded stand-in does it here, so the demo behaves the same way every run. Everything downstream of a reply is real, including the classification, the booking, and the status write.
The dollar figures inside the demo are seeded inputs. He decided they do not belong on this page, because they would read as a result and they are not one.