NOAA severe weather alerts in Slack for every job site

By General Input

Every 20 minutes during the workday, check NOAA for severe weather at each site in your Google Sheet, and post a crew-ready alert in the right Slack channel.

Integrations

  • NOAA Weather
  • Google Sheets
  • Slack

Type

Agentic Task

Categories

  • Operations

Build me an agent workflow that monitors severe weather at our active job sites and pushes alerts into the right Slack channel per site. It should run on a schedule during the workday and act on official National Weather Service alerts, not on raw weather readings.

Trigger: cron, every 20 minutes between 6am and 7pm local time, Monday through Saturday. Skip overnight and Sundays.

Site registry lives in Google Sheets. Use Google Sheets Get Values to read a tab called 'Sites' with these columns: site_name, latitude, longitude, slack_channel_id, and severity_floor (one of Minor, Moderate, Severe, Extreme; default Moderate when blank). Each row is one active site. Treat blank rows as the end of the registry.

For each site row, call the NOAA Weather Get Active Alerts action filtered by point using the row's latitude and longitude. NOAA's coordinates use four decimal places, so round if needed. NOAA tags every alert with a severity of Minor, Moderate, Severe, or Extreme and an event type like 'Tornado Warning' or 'Flash Flood Warning'. Drop any alert whose severity ranks below the site's severity_floor. Drop alerts that have already expired.

Deduplicate against alerts you have already announced earlier the same day. Treat each NOAA alert ID as the unique key. Updates and cancellations to an already-announced alert ID should be threaded as a reply on the original Slack message, not posted as a fresh top-level alert. If a site has no qualifying alerts on this run, skip it silently.

Post to Slack using the Slack Send a Message action. Group results by slack_channel_id so a channel that's getting multiple alerts in the same run receives one parent message ('Active weather alerts for [site or sites]') and one threaded reply per alert, instead of several separate top-level posts. If a single channel only has one alert, post it as a normal channel message.

Each per-alert message should be short, scannable, and written for a foreman or crew lead. Include the site name in bold, the NWS event type (e.g. 'Severe Thunderstorm Warning'), the headline, the effective and expiration times in the site's local timezone, the severity, and one concrete recommended action drawn from the hazard type (examples: 'stop crane operations', 'shelter in place', 'delay pour', 'pause roof work', 'secure scaffolding'). Use Slack mrkdwn formatting.

Expose these settings at the top of the workflow so I can tune them without editing prompts: the Google Sheet ID and tab name; the cron expression and active-hours window; the default severity floor; and the per-hazard action playbook mapping NWS event types to recommended actions.

Important constraints. Use the NOAA Weather integration (noaa-weather), not a generic weather provider, because we want the official NWS severity and event taxonomy. Use the user-token Slack integration so messages are attributed to the operations lead who set this up. Do not post 'all clear' or heartbeat messages on quiet runs. Do not post advisories below the configured severity floor.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats