For the past several weeks, I’ve been building an interactive dashboard to explore how Maine’s fisheries have changed over time. The Gulf of Maine Fisheries Dashboard brings together public data from the Maine Department of Marine Resources (DMR) and transforms it into a visual, easy-to-navigate interface.
This project began as a way to make sense of large, complex datasets — like lobster landings, total revenue, and regional trends — and evolved into a broader experiment in data storytelling, visualization design, and usability.
Project Overview
The dashboard is built with Streamlit, a Python framework that makes it simple to turn data analysis into interactive web apps. Under the hood, it uses Pandas for data processing, Plotly for dynamic visualizations, and PyDeck for map-based views.
Here’s what it currently includes:
- Time Series Trends:
Displays annual totals of landed weight and revenue, with support for selecting one or more ports.
Users can compare individual ports or view totals across all ports at once. - Choropleth Map:
Visualizes lobster landings by management zone using Maine’s official Lobster Zone GeoJSON.
Hover tooltips show the zone name and associated metrics. - KPIs & Summaries:
Highlight key performance indicators, such as total pounds landed and year-over-year change.
Everything updates in real time as users interact with filters and dropdowns — allowing exploration of the data from different regional or economic perspectives.

Behind the Scenes
Before anything could be visualized, the data needed cleaning and transformation.
I wrote a lightweight ETL (Extract, Transform, Load) pipeline in Python to normalize column names, validate missing values, and prepare multiple processed datasets for analysis — one for all species and others filtered by species like lobster or alewife.
The dashboard structure itself is modular: visualization logic, KPI queries, and data loading are kept in separate source files. This approach makes the app easier to maintain and scale as I add more features (such as filtering by species, gear type, or month).
Design in Progress
The current layout focuses on clarity — clean data tables, responsive charts, and minimal distractions.
In upcoming iterations, I plan to refine the UI to create a more cohesive look and feel, add contextual metadata (like data sources and notes), and experiment with how best to present ecological context alongside economic data.
Tech Stack
| Layer | Tools / Libraries |
|---|---|
| App Framework | Streamlit |
| Visualization | Plotly, PyDeck |
| Data Processing | Pandas |
| Storage | CSV (local) |
Next Steps
- Improve consistency in KPI presentation
- Add contextual tooltips and metadata
- Explore combined port + zone views
The Gulf of Maine Fisheries Dashboard is an evolving project — part data science and part design experiment.
You can view the source code on GitHub or explore it live at https://maine-fisheries-dashboard-fioux6svearezohv9ahzzv.streamlit.app/.


Leave a Reply