CASE STUDY · DATA & AI

Buoy Analytics &
Navigation Risk Platform

A Streamlit data product connecting quality checks and preprocessing to LSTM validation, caching, risk rules and exportable outputs.

GitHub ↗
Role
Data & ML pipeline development
Scope
Data QA · LSTM · risk rules · Streamlit
Status
Public repository / case study
Stack
Python · Streamlit · Keras / LSTM
Year
2026

00 / Project framing

Project framing and engineering decisions

ProblemMarine observations need QA, missing-data handling and time-scale normalization before model output can become an interpretable risk signal.
DecisionConnect resampling, missing-data strategies, validation, caching, risk thresholds and exports in one analysis workflow.
EvidenceThe repository verifies 5 time scales, 4 missing-data strategies and 4 exports; model scores without a fixed benchmark are not presented as performance claims.
NextNext: establish a fixed benchmark dataset, add baseline/model comparisons and automate more of the data/validation pipeline.

01 / Verified metrics

5forecast time scales: hour / day / week / month / year
4missing-value strategies
4exports: CSV / HTML / TXT / ZIP
3cached artifacts per model configuration

These are repository-verifiable system capabilities, not cherry-picked model benchmark numbers.

02 / Architecture

Buoy Datastation, time, marine observations
Pipelineresample, missing data, smoothing, QA
LSTM2× LSTM + Dropout + Dense(1)
ProductRMSE / R / risk / downloads

03 / Risk & validation

Wave thresholdWarning 2.5, danger 4.0 for significant wave height.
Wind thresholdWarning 10.0, danger 17.0 for wind speed.
ValidationTemporal train/validation split with RMSE, correlation R and epsilon hit rate.
CacheConfiguration hash reuses the Keras model, scaler and training history.

04 / Runtime UI

ACTUAL APP · CI CAPTURE

The real Streamlit runtime, not a recreated mockup.

This keeps the original app.py interface running against a minimal fixture dataset, so the product surface stays connected to the data and model workflow shown earlier in the case study.

Actual Streamlit runtime
The original app.py is started in GitHub Actions and captured with Chromium using a minimal fixture dataset; this is the executable product surface rather than a design mockup.