CoastClean Lite: project overview

Inspiration

Volunteer beach cleanups are often organized by habit or a hunch: the beach the group went to last time, or the one closest to home. Meanwhile, NOAA runs a program that surveys shoreline litter at sites along the Texas Coast, but the data is hard for a small team to read, so it mostly goes unused. We wanted to close that gap and give a small group of volunteers a way to use real data to decide where to go, in what order, and what they can realistically get done.

(If there's a personal story behind this, such as a cleanup you took part in or a stretch of coast you care about, add a sentence or two here. It will land better than anything generic.)

What it does

CoastClean Lite is a web app with two pages. The Cleanup planner takes real NOAA litter surveys from eight Coastal Bend and Padre Island sites, calculates each site's litter density (items per 100 m²), and builds a time-limited route for each crew based on volunteers, hours, and meeting point. It compares the plan with a simple "drive to the nearest site" baseline. The Tide predictions page shows hourly NOAA tide predictions for Bob Hall Pier, Port Aransas, and Rockport to help with timing.

How we built it

  • Python and Streamlit for the interface, with pandas for data and pydeck for the route map.
  • NOAA's MDMAP data: the app ships with eight original NOAA export files and recomputes everything from them. It can also refresh live data from NOAA or accept an uploaded NOAA export.
  • NOAA's Tides & Currents API for tide predictions.
  • A separate planner module that uses a greedy method: from its current position, each crew picks the next stop with the most estimated items per minute of driving plus cleanup, until time runs out.
  • Three clean layers: one file for the interface, one for data validation and ranking, one for NOAA requests, and one for the planner, so each person on the team could work on a different part.
  • No API key, paid service, or machine learning model. NOAA requests are cached for an hour, and the bundled snapshot keeps the app working if NOAA is unavailable.
  • Deployed on Streamlit Community Cloud from a public GitHub repository.

Challenges we ran into

  • Getting the data right. NOAA's exports are detailed, and it's easy to count things twice. Material totals already include their subcategories, a separate back-barrier file covers a different survey zone, and different protocols shouldn't be mixed. We built validation to keep only the MDMAP 2.0 protocol, reject conflicting duplicates, and only assign a density when a survey has at least four valid transects and a measured area.
  • Being honest about what NOAA doesn't measure. NOAA counts litter on survey transects; it doesn't measure how fast volunteers pick things up or how many bags a beach holds. Rather than invent numbers, we made the pickup rate, beach area, driving speed, and road factor editable assumptions, and labeled the outputs as estimates.
  • Keeping the app reliable. NOAA's public export route could change or time out, so the app keeps the bundled snapshot as a fallback, shows clear error messages, and never shows made-up tide values.
  • Deployment. Getting the app live took more than clicking Deploy. Our first upload to GitHub flattened the folder structure, so the app couldn't find its bundled NOAA files in data/raw. We fixed it by pushing the project with its correct folders intact and rebooting the app.

What we learned

  • Real public data is messy. Most of the work was understanding NOAA's survey method well enough to use it fairly.
  • Streamlit reruns the whole script on every interaction, so caching and session state aren't optional. They decide whether the app feels fast and whether results survive a click.
  • A simple, transparent method (a greedy route and basic arithmetic) can be more useful, and easier to explain and trust, than a complicated one.
  • Being clear about limits makes a tool more credible. Our app says up front that it's a planning aid built on historical surveys, not a live litter report.
  • Small details of project structure, like where the data files sit in a repository, can decide whether a deployment works.

What's next

  • Use real driving routes instead of straight lines.
  • Factor tides into the plan, since the planner currently treats tides as separate context.
  • Let volunteers log what they actually collected, so the pickup-rate assumption can be tuned from real cleanups.

Built with

Python, Streamlit, pandas, pydeck, NOAA Marine Debris Monitoring and Assessment Project (MDMAP), NOAA CO-OPS Tides & Currents API, GitHub, Streamlit Community Cloud

Independent student prototype; not endorsed by NOAA.

Built With

Share this project:

Updates

Submission history