A human-in-the-loop agent system for storm-response home services

Which customers were under the storm.

A hailstorm moves through a town, and a roofing company has about a day to work out which of its past customers were under it. Alfonso built Rainmaker to read the weather data and rank those customers. The first thing a customer receives is official safety guidance with no model writing it. Every message after that waits for a person to approve it.

1stof ~350 capstones
6components, all live
Every sendwaits on a person
Request a walkthrough →

The system runs in a Databricks workspace behind a login. Alfonso walks through it live.

The moment

Three jobs on one desk. He automated two of them.

When a hailstorm crosses a county, a roofer usually hears about it from a customer calling in. By then the work is being quoted by whoever got there first. Reaching the rest means someone sitting with a radar app and a spreadsheet, working the phones for as long as the storm is still on people's minds.

Alfonso automated two parts of that work. Rainmaker reads the weather and ranks who was actually hit, then hands back a queue with the messages already drafted. The writing and the sending stay with the person.

The mechanism

He chose where the model runs.

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
Rainmaker's five stages: live National Weather Service alerts; a Spark job scoring who the storm touched from 0 to 1; a safety-first gate that sends official guidance with no ask and no model in the loop; an agent whose four tools draft, send and book, each of them writing to the record; and an inspection booked after a person approves the send.
The five stages Rainmaker runs, and the six components behind them.
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.

The receipt
1st

First of about 350 capstones.

Rise of the AI Data Engineer, DataExpert.io, August 2026. Rainmaker took first place and earned the founder's recommendation. A home-services operation is in audit as its first prospective deployment.

The organizers' own description of the software. It does not mention the approval step.

Weather-driven demand engine for home-services companies (roofing, plumbing). Watches live NWS alerts, matches storm footprints to CRM customers, ranks damage likelihood, drafts outreach, and books inspections.

DataExpert.io · winners slide, Rise of the AI Data Engineer

DataExpert.io livestream. The announcement, then Zach Wilson walking through the demo Alfonso submitted. Two segments, played back to back. Hosted on YouTube.

See it running

Walkthrough available on request.

The storm queue, a drafted message, and the approval step, walked through live. It is the same pattern he would build for a department. The record sits in one place and the scoring happens inside the workflow. On the walkthrough he also names the parts he decided not to automate, and why.

Request a walkthrough → All builds →