NOAA API • River Data • Google Apps Script • Email Automation

Potomac River Play Spot Alert System

A working river monitoring prototype that retrieves the latest available Potomac River level from NOAA’s BRKM2 gauge, compares it against kayaking play spot ranges, and supports scheduled email alerts for daily planning.

This project turns public river gauge data into a practical decision-support tool for kayaking: which features may be working now, what may be working after work, and whether the water is expected to rise, drop, or stay about the same.

Live Data Alert System

Gauge NOAA BRKM2
Decision Logic Play spot min / max ranges
Forecast Target 6:30 PM
Email Automation Google Apps Script

Turning river gauge data into a kayaking planning tool.

This project is a working prototype for an automated river monitoring system designed around a real kayaking decision: which Potomac River play spots may be working today.

Instead of checking the NOAA gauge manually and comparing the level against a separate play spot table, the system retrieves the latest available BRKM2 level, checks the forecast for 6:30 PM, and compares both values against a stored list of play spot ranges.

The result is a dashboard and email alert design that can show which features are currently in range, which features may be in range after work, and whether the water is expected to rise, drop, or stay about the same.

River levels change, and each play spot works at a different range.

Potomac River kayaking features do not all work at the same level. A river level that is good for one wave or hole may be too low or too high for another. This creates a repeated manual process: check the river gauge, compare the number to multiple ranges, then decide whether it is worth going.

This is especially useful for after-work kayaking. A morning email can help with planning the day, while a 4:00 PM update can help decide whether it is worth preparing to paddle around 6:30 PM.

  • Each Potomac play spot has a different minimum and maximum level.
  • Manual checking takes time and can be easy to forget.
  • The water may rise or drop before the user is available to kayak.
  • A scheduled alert can support faster and better planning.

Live gauge check, forecast comparison, and play spot matching

The system checks NOAA’s NWPS API for the BRKM2 gauge, reads the latest available river level, checks the forecast level closest to 6:30 PM, and matches those levels against all stored play spot ranges.

01

Call NOAA API

JavaScript requests observed and forecast stage data for gauge BRKM2.

02

Read Levels

The system extracts the latest current level and the forecast value closest to 6:30 PM.

03

Match Play Spots

Each level is compared against every play spot minimum and maximum range.

04

Send Alert

Google Apps Script runs privately on a schedule and sends email summaries at 6:00 AM and 4:00 PM.

Current level and 6:30 PM forecast

This dashboard retrieves the latest available NOAA BRKM2 river gauge data when the page loads. It compares the current level with the forecast value closest to 6:30 PM.

Current BRKM2 Level

Live NOAA Data

Loading...

Checking current play spots...

6:30 PM Forecast

Loading...

Checking forecast...

Water Trend

Loading...

Last Updated

Loading...

Data source: NOAA National Water Prediction Service gauge BRKM2 . Always verify weather, river conditions, access, and personal safety before kayaking.

Which features are in range?

The table below compares the live BRKM2 level against each play spot range. Rows highlighted in green are currently in range.

Play Spot Range Boat Status Now
Loading play spot data...

Daily planning emails at 6:00 AM and 4:00 PM.

Separating the public dashboard from the private email automation.

The project uses two separate components: a public dashboard and a private automation workflow. The public website displays live river information, while the email notification runs separately through Google Apps Script.

This separation is important because the website is public. Sending email directly from the browser would expose private credentials or email service keys. Instead, Google Apps Script runs privately from a Google account and can be scheduled to execute automatically.

In the implemented workflow, Google Apps Script checks the NOAA BRKM2 gauge data, reads the current river level, checks the forecast value closest to 6:30 PM, compares those values against the stored Potomac play spot ranges, and sends an email summary to the selected recipient.

  • GitHub Pages displays the public river dashboard.
  • Google Apps Script runs the private email automation.
  • The script checks NOAA BRKM2 observed and forecast data.
  • Alerts are scheduled for 6:00 AM for daily planning and 4:00 PM for after-work decision-making.
  • Email permissions remain private and are not exposed on the website.

How the system decides what to report

Current Level

The system retrieves the latest available BRKM2 stage value from NOAA and checks which play spots are currently within range.

6:30 PM Forecast

The system searches the NOAA forecast values and selects the forecast reading closest to 6:30 PM, which is the target time for after-work kayaking.

Trend

If the 6:30 PM forecast is more than 0.10 ft higher than the current level, the water is reported as rising. If it is more than 0.10 ft lower, it is reported as dropping.

Email Schedule

The private automation sends one email in the morning for daily planning and another in the afternoon for an updated after-work decision.

Designed around a real repeated decision

Live Data Retrieval

Retrieves the latest available river gauge value from NOAA’s NWPS API.

Feature-Specific Ranges

Compares the river level against each Potomac play spot’s minimum and maximum range.

Forecast Decision Support

Checks which features may be working around 6:30 PM, not just at the current moment.

Scheduled Email Automation

Uses Google Apps Script to send scheduled river condition emails securely.

Tools and skills used

NOAA NWPS API JavaScript Fetch JSON Parsing Forecast Matching Conditional Logic Threshold Alerts Google Apps Script Scheduled Email Automation GitHub Pages

API endpoints used by the dashboard: https://api.water.noaa.gov/nwps/v1/gauges/BRKM2/stageflow/observed and https://api.water.noaa.gov/nwps/v1/gauges/BRKM2/stageflow/forecast

A small system that turns public data into action.

This project demonstrates how a simple information system can turn live public data into a useful personal decision-making tool.

Instead of only displaying a river level, the system connects data to a real decision: whether specific kayaking features are likely to be working now or after work.

The same logic could be applied to facilities monitoring, equipment alerts, inventory thresholds, weather notifications, or any process where users need to know when data reaches a specific condition.

What this project shows

This project shows the ability to identify a real-world need, connect to an external data source, process live and forecast data, apply decision logic, and display a result through a user-friendly interface.

It also demonstrates an important system design decision: separating the public front-end from the private automation layer. The website can safely display NOAA data, while Google Apps Script can run privately on a schedule and send email alerts without exposing credentials.

The same architecture could be applied to facilities monitoring, equipment alerts, inventory thresholds, weather notifications, or any process where users need to know when data reaches a specific condition.

Back to the main portfolio

View more projects focused on information systems, operations analytics, automation, and data analysis.

View All Projects