Everything in the app, not just the alert

Warned before the storm. Covered long after it.

SWRainAlert didn't stop at "tell me when it rains." Below is the forecast warning that reaches you while there is still time to act, the dashboard your compliance manager opens on Monday, the year of rainfall history behind every threshold, the archive an auditor gets pointed at, and the API that puts all of it where your other project data lives.

Compliance dashboard: 1 inspection overdue, 3 items overdue, 3 sites breached, 3 inspections due, 2 sites with no rainfall data and 1 lawful deferral, followed by ranked attention rows and open-item ageing buckets.
Exposure first, ranked by what is actually overdue — not an alphabetical site list.

The compliance manager's screen

See the whole portfolio, not one site at a time.

The dashboard opens on exposure: how many inspections are overdue, how many corrective actions are overdue, how many sites are breached right now, and how many sites have gone dark — no reading from either NOAA source, which is a gap the dashboard names, not a silent zero.

  • Ranked attention rows. Sites are sorted by how overdue they are, not by name or by when they were added, so the worst problem is always the first row.
  • Open-item ageing. Corrective actions are bucketed by how long they've been open — a silt fence repair open 2 days reads differently from one open 3 weeks, and the dashboard shows the difference instead of one flat "open" count.
  • Weekly trend, not a daily chart. Inspections cluster around storms, so a daily series is mostly zeros with spikes. The trend is opened-versus-closed corrective actions by week, with the net change — the one question a tile count can't answer: is the backlog growing or shrinking?
  • Drill-down. Tap any attention row to land on the site, the open item, or the overdue inspection directly — the dashboard is a way in, not a dead end.

The inspector's screen — and their inbox

Every day, in deadline order, whether or not you open the app.

My Day is one inspector's own list: what's past deadline, what's due today, which open corrective actions are theirs, and which of their assigned sites the radar can't currently see. Nothing from another inspector's list, and nothing missing because it's a "quiet day" — a quiet day says so.

The morning digest is the same view, emailed at 6am in the timezone of the sites that inspector covers — not a shared org-wide time that puts a Georgia inspector's day on the wrong clock. It's sent even when nothing is due, because an inspector who gets nothing can't tell "quiet day" from "the job silently died overnight."

Never doubled, never dropped. You get exactly one digest per inspector per day — never two for the same morning because a server restarted, and never a silent gap because a send was missed.

My Day screen: one site past deadline, two due today with hours remaining, a divergence note on one of them, one open corrective action three days overdue, and one site with no rainfall data.
Past deadline, due today, open corrective actions, and sites gone dark — one screen, one inbox.

Before the storm, not only after it

An advance warning when the forecast reaches your trigger.

Observed rainfall tells you an inspection is now due. A forecast tells you to move a crew, stabilise a slope or empty a basin while there is still time to do it. SWRainAlert reads the National Weather Service alongside the two NOAA observation products.

The 24-hour advisory

When the forecast total for a site reaches that site’s own permit trigger inside 24 hours, the people who cover it get one email. One per episode — not a fresh warning every hour the forecast still says so.

NWS watches and warnings

Active National Weather Service products for each site’s own grid cell, filtered to the rain-relevant ones. A flash flood warning over a site you are responsible for is not something to find out about from the radio.

Did the forecast hold up?

Every hourly forecast is kept and later scored against what actually fell — hits, misses, false alarms, and the average error. You can see how much to trust the warning before you act on it, per site and across the fleet.

A forecast creates no obligation. Your permit triggers on rain that fell, and nothing here changes that. An advisory is a heads-up so the work can be planned; the inspection clock starts only when an observed reading crosses the threshold. We keep the two in separate records for the same reason — a forecast that did not materialise is not a rain event, and must never look like one.

Rainfall history chart, 30 days: 6.53 inches total, 4 days over the trigger, 4 days with no reading, a bar chart of NOAA Stage IV and MRMS with hollow markers for missing days, and an export-as-spreadsheet button.
A gap in the chart is a hollow mark, never a bar at zero.

Not just the current storm

A year of rainfall, both sources, every day accounted for.

Every site carries 7/30/90/365-day views of its own accumulation history — both NOAA products, side by side, exactly as recorded when the evaluator ran. Nothing is recomputed after the fact to make a chart look tidier than the record.

  • Days with no reading are blank, never zero. A radar outage cannot quietly count as a dry day in a total, on a chart, or in the exported file.
  • Both sources, never averaged — the same rule that governs the live alert governs history, computed by the same code path so the two can't disagree.
  • CSV export for the day it needs to leave the app: a client report, an insurance question, or a permit renewal conversation.
  • Tap a day for the hour-by-hour reading — when it actually fell, not just the daily total.

The open items nobody was tracking before

A corrective action is a clock, not a to-do note.

"Fix the silt fence" written on a clipboard has no memory. Raised in SWRainAlert it has an open timestamp, a site, an age, and — when it's done — who closed it and when.

Raised any time

Not only during a formal inspection — an item can be opened the moment someone notices it, which is most of the time how it actually happens on site.

Closed as a record

Closing an item stores who closed it and when — it's a record appended to, never a row deleted, so the history of what happened stays intact.

Trended, not just counted

The dashboard's weekly chart plots items opened against items closed, with the net change — so a backlog that's quietly growing shows up before it's ninety days old.

When a records request lands on your desk

Find any filed inspection in seconds. Export a range as one file.

The archive searches filed inspections across every site an account can see — by date range, by site, or across the whole portfolio — and exports the result as a single PDF, because a records request rarely wants one report at a time.

  • Drafts are never included. An unfinished form sitting in an evidence pack reads as a claim that an inspection happened. Only filed, signed inspections appear in the archive and in any export.
  • Immutable once filed. A submitted inspection cannot be edited — a correction is a new record, so the trail of what was actually filed, and when, is never rewritten after the fact.
  • Rendered from its own snapshot, including any state-specific questions your organization added at the time it was filed — not re-rendered from today's form, which could silently change what an old record appears to say.
Inspection records screen, filtered to all time: a button to export 2 filed records as one PDF, a note that drafts are never included, and a list showing two filed inspections and one draft clearly marked as not yet filed.
A draft is labelled a draft — it never quietly counts as a filed record.

The people who never sign in

The filed report reaches the owner, the engineer and the county by itself.

Most of the people who need a stormwater record will never open your software. The owner, the engineer of record, the county reviewer — they need the PDF in their inbox. Doing that by hand is how it stops happening in week three.

  • Recipients are per site. Add the owner and the county once; every inspection filed on that site emails them the signed PDF automatically.
  • The inspector can see who gets it before they file — the site screen shows how many contacts are actually emailed, so nobody signs a record not knowing it is about to reach the county.
  • Delivery is tracked per recipient, with the send state visible on the record and an admin retry after a corrected address. A report you believe went out and did not is a gap you find during an audit.
  • Filing never waits on the mail. The record commits first and the email is dispatched after, so a mail provider having a bad morning cannot fail an inspector’s submission in a parking lot.

And the ones who want less mail

Notification settings that cannot silence a deadline.

Everyone controls their own daily summary: on or off, which hour in their own local time, every day or weekdays only, or only on days something is actually owed. A pause for a holiday expires by itself rather than being forgotten.

One thing is deliberately not adjustable. Storm alerts go to the site’s own alert address, and nothing a person does to their own inbox can turn them off. Unsubscribing from a digest, or from the reports you receive as an external contact, never silences a regulatory deadline — and the unsubscribe page says so in as many words.

Built for a crew, not one phone

The permit has one name on it. The work never has one person on it.

Every site can be assigned to a named inspector, every organization can hold more than one user, and an admin can see what an individual inspector can't — the unassigned sites nobody has claimed yet.

Team accounts

More than one user per organization, with an admin role that can invite, promote, or deactivate — but never remove the last admin standing.

Invitations by email

An admin invites a colleague by email; they accept and set their own password. No shared logins, no handing a phone around the site trailer.

Sites assigned by name

Every site has an assigned inspector. Their My Day and their digest show exactly their sites — an admin's view additionally surfaces the ones nobody owns yet.

Import a fleet from a spreadsheet

Eighty sites in one upload. Every row is reviewed before anything is created, showing the state, timezone and trigger each coordinate derives — and a row near a state line is flagged, because half a mile is a different permit. One bad row costs that row, and downloads back as a fixable file.

Custom inspection questions

An admin can add an organization's own questions onto a state's permit form. Change the questions later, and inspections already filed keep the ones they were filed with.

A construction site rarely has good signal

Built to work when the site doesn't.

Offline mode

Cached fleet data paints before the network is even tried. A write outbox holds inspections and photos until a signal comes back, and a banner always says how old the cached data is — never pretending it's live when it isn't.

Add a site in seconds

Search an address or drop a pin on the map. State, timezone and the applicable threshold are derived from the coordinates — nobody has to look up a permit to register a site.

Photo & video evidence

Captured on the phone, downscaled on-device before upload, and attached to the inspection it belongs to — including while offline, via the write outbox.

Local breach alerts

A push notification with alarm sound and vibration fires the moment a site you're assigned to breaches — not just an email you might not see until you're back at a desk.

For the systems that already run your projects

Read it with an API key. Get pushed it with a webhook.

Compliance data is worth more where your other project data already lives. Both routes out are built, documented, and testable before you have an account.

Scoped API keys

Read-only or read-write, hashed at rest, with an expiry, a revocation switch and a last-used timestamp. Only an admin signed in with a password can mint one — a key that could mint keys would make the scope decoration.

Signed webhooks

Breaches, overdue and filed inspections, corrective actions opened and closed, forecast advisories and NWS alerts pushed to your endpoint, HMAC-signed with the timestamp inside the signed material. Retried with backoff, with a delivery log showing your own server’s response.

A sandbox, before any of it

Paste real coordinates and get the actual permit reasoning and the real dual-source rainfall for that point — the same grid cell a paying site would read. No account, no card, nothing created.

Reasoning over your own records

Ask what is overdue. Get an answer from your data, not a guess.

The useful application of a model here is not identifying a silt fence in a photograph. It is reasoning about permits, deadlines and the records you already filed.

The assistant

“Which sites are overdue?” “What does Georgia require after half an inch?” It reads your sites, open items, inspections and the permit rules — read-only, never across organisations — and shows you which of those it checked.

Inspection summaries

A plain-language summary of what a visit found, the items opened and closed, and what follows — generated after filing, never during it, and labelled on the report as AI-assisted. The answers you signed remain the record.

Photo analysis you approve

Point it at an evidence photo and it drafts a finding. The draft is never filed by itself — a person edits it and accepts it as a corrective action, or discards it. It is a first sentence, not a verdict.

What we will not claim. This does not decide whether your site is compliant, and a model’s reading of a photograph is not an inspection. Every AI-assisted output is labelled as one, the inspector’s own answers remain the record, and nothing generated is filed without a person accepting it.

Looking for the alerting engine itself? The dual-source rainfall monitoring, the five-minute evaluator, the dry-gap reset and the state permit thresholds that everything on this page sits on top of are covered in full on how it works. This page is what happens once that alert lands — the dashboard, the history, the records and the team around it.

See it running on your own sites, not a demo account.

Thirty days of the Complete plan, every feature on this page included, no card. Add your sites and the dashboard, the history and the archive start filling in from the next storm.