Inspiration: We Just Want to Breathe Easy 😮‍💨

Let's be honest: our team is over the pollution struggle. Seriously, some of us grew up breathing this air, and one of us has asthma—so we're personally invested in making things better.

That's why we built EcoCT.

We decided that managing your environmental safety shouldn't be a chore. Why check five different apps when you could check one? EcoCT is your comprehensive helper, handling everything from air quality to marine tides to simple rain or shine weather.

Powered by AI-agents on Agentverse (Fetch.ai), we've put all the essential info in one convenient spot. Think of us as your peace-of-mind portal. We're just trying to make it easier for everyone—including ourselves—to stay safe and enjoy the day!

What it does

EcoCT is a conversational environmental dashboard:

  • Natural language Q&A about environmental concerns (air quality, marine conditions, climate change, etc.)
  • Live data (Open‑Meteo, OpenAQ) with seamless CSV fallback for offline demos
  • Instant insights: concise answers, KPI tiles, and charts
  • Safety and planning: sea state and small‑craft advisory cues; AQI categories and trends
  • Prediction: predict the near future

How we built it

Frontend

  • Streamlit App (Python) – interactive chat interface + real-time environmental dashboard
  • Responsive UI with insight cards, AQI history chart, and geo map
  • Reusable components for query input, result summaries, and agent messages
  • Plotly for time-series visualizations (AQI, PM2.5, wind correlation)
  • Mapbox for location-based pollutant overlays and hotspot mapping
  • Minimal UX latency via async API calls to the agent network

Backend

  • Python backend using uAgents runtime for autonomous messaging
  • Inference + Orchestration with Fetch.ai Agentverse for agent discovery & routing
  • REST bridge using FastAPI to expose /ask and /insights endpoints
  • Typed messaging via Pydantic schemas for safe agent communication
  • Robust fallback caching to handle API rate limits or offline mode

🤖 Fetch.ai Agent Network (Core Logic)

We designed a multi-agent architecture using Fetch.ai where each agent has a focused role and communicates autonomously:

Agent Purpose
AirAgent Open‑Meteo Air Quality API, multi‑pollutant, AQI categories
MarineAgent Open‑Meteo Marine API, waves and sea state
Climate comparison Open‑Meteo Climate API, baseline vs recent
Frontdoor agent CSV ingestion, anomaly hints, and micro‑actions
Forecast Agent Predicts short-term air quality trends using historical data and Gemini-powered reasoning to generate localized AQI forecasts
  • AirAgent (Open‑Meteo Air Quality API, multi‑pollutant, AQI categories)
  • MarineAgent (Open‑Meteo Marine API, waves and sea state)
  • Climate comparison (Open‑Meteo Climate API, baseline vs recent)
  • Frontdoor agent (CSV ingestion, anomaly hints, and micro‑actions)

Challenges we ran into

  • We tried making two agents converse, one agent calling an LLM agent, but it failed due to incorrectly formatted input data. To address the problem, we use Gemini instead of the LLM agen from fetch.ai.
  • This is the first time we use fetch.ai, we decided to create a more complicated agents. We spent a lot of time perfecting the APIs and parsing data.

Accomplishments that we're proud of

  • Clean end‑to‑end experience: upon asking a question, users can see the map and trend in one flow
  • Robust fallbacks: runs offline with sample CSV, gracefully degrades if APIs fail
  • Climate comparison integration with meaningful, confidence‑scored summaries
  • Thoughtful visual polish: themed UI, helpful placeholders, and debug expanders

What we learned

  • Keep agent modules composable: fetch + shape data; defer UI logic to the app
  • Normalize chart inputs early; add categorical fallbacks for non‑temporal comparisons

What's next for EcoCT

  • Sidebar controls for climate baseline/recent periods and unit preferences
  • Richer Dashboard: pollutant tiles (PM10, O₃, NO₂, CO), and a time‑window slider
  • Persistent caching and simple history for chat and snapshots
  • Optional distributed agents via uAgents for collaboration and resilience
  • Lightweight mobile‑friendly web bundle for broader reach

Built With

Share this project:

Updates