🌊 ReefWatch AI The ocean is dying. We built an AI that never stops watching.
⚠️ LIVE ALERTS FIRING RIGHT NOW: Southern Tonga 90% · Nauru 92% · Galapagos 98% These are real NOAA stations. Real bleaching events. Real autonomous alerts, no human triggered them.
Inspiration
Growing up, I was fascinated by the ocean. Marine life, coral ecosystems, the sheer alien beauty of what lives beneath the surface, it captured my imagination early and never let go. Now I'm studying Computer Science with a focus on AI, and that became its own obsession.
At some point I asked myself: why keep these two loves separate? AI is the most powerful problem-solving tool humanity has built. The ocean is facing one of its worst crises in recorded history. Coral reefs support 25% of all marine life and over 1 billion people depend on them, yet since 1950 we've lost half of them, mostly to thermal bleaching driven by rising ocean temperatures.
NOAA satellite data exists globally, but translating it into actionable conservation intelligence requires more human hours than the entire global conservation community can provide. That gap felt like exactly the kind of problem AI should be solving.
ReefWatch AI is my attempt to build something the world actually needs, not a demo, not a toy, but a real autonomous system working 24/7 to protect ecosystems I've cared about.
What it does
ReefWatch AI is a fully autonomous coral reef conservation intelligence platform. It:
- Monitors 221 NOAA reef stations globally in real time, color-coded by bleaching risk
- Fires real email alerts when stations cross bleaching thresholds — Southern Tonga 90%, Nauru 92%, Galapagos 98%
- Generates full scientific conservation briefs using Gemini 2.5 Flash, downloadable as PDF
- Runs a self-improvement loop nightly — Gemini acts as LLM as a Judge, evaluating its own outputs across 4 quality dimensions and automatically rewriting its system prompt if quality drops below 0.75
- Queries its own Arize Phoenix observability data at runtime via Phoenix MCP tool calling, the agent reads its own traces mid-inference to reason about its performance.
NOAA Coral Reef Watch provides the data; ReefWatch AI turns it into actionable conservation intelligence. Researchers can select reefs they care about, add them to a watchlist, and allow ReefWatch AI to continuously monitor them in the background. When bleaching risk rises or critical thresholds are crossed, the system automatically generates alerts and delivers email notifications, ensuring researchers stay informed without manually checking NOAA datasets.
Researchers can explore live reef conditions, compare regions, analyze historical trends, generate scientific conservation briefs, and ask questions through the Researcher Workspace. Meanwhile, ReefWatch AI operates autonomously 24/7, monitoring reefs, generating reports, and improving the quality of its own analyses over time.
During development, ReefWatch AI experienced real quality regressions in its reef assessments. The self-improvement loop detected the degradation, evaluated the failure modes, generated a revised system prompt, and deployed the update automatically. This autonomous improvement cycle is shown live in the demo video.
ReefWatch AI's goal is not simply to monitor reefs, but to become a continuously improving conservation agent. Arize Phoenix was needed because autonomous improvement requires measurement. Without Phoenix, the system could generate assessments but would have no reliable way to evaluate their quality, detect regressions, or determine when intervention was required. Phoenix provides the observability foundation that makes ReefWatch AI's self-improvement loop possible.
How we built it
The system has four layers working together:
Data layer: NOAA Coral Reef Watch API feeds live SST, SST Anomaly, and Degree Heating Week data for 221 stations into a SQLite cache updated nightly.
AI layer: Built with Google Cloud Agent Development Kit (ADK), the ReefWatch agent is defined as an official ADK Agent using Gemini 2.5 Flash, registered in Google Cloud Agent Platform Registry. The Researcher Workspace routes all queries through the ADK agent natively, with Phoenix MCP tools wired as ADK-native function tools. Deployed on Cloud Run via FastAPI.
Observability layer: Arize Phoenix Cloud receives all traces (3,392+ logged). The Phoenix MCP server is wired as callable Gemini function tools, so the agent can call query_phoenix_traces and query_phoenix_quality_metrics at runtime to reason about its own performance. This is bidirectional observability, not just log shipping.
Self-improvement layer: Nightly, the LLM-as-a-Judge pipeline evaluates recent reef assessments. If quality drops below threshold, the system rewrites its own system prompt automatically. No human intervention required. Before/after scores are visible on the dashboard.
Infrastructure: Google Cloud Run (min-instances=1) keeps the agent warm 24/7. Cloud Scheduler pings every 4 minutes to prevent cold starts. Firebase Hosting serves the React frontend.
Challenges we ran into
- Keeping the agent warm: Cold starts on Cloud Run would break the 24/7 alert SLA. Solved with min-instances=1 and a Cloud Scheduler health ping every 4 minutes.
- Cost at scale: Running Gemini across 221 stations nightly was adding up fast. Implemented deduplication and prompt caching, bringing the cost down to under $0.10/day, a significant reduction that made the 24/7 model sustainable.
- Bidirectional MCP: Getting Phoenix MCP wired not just for sending traces but for the agent to read its own trace data at runtime required careful function tool schema design and response parsing.
- Self-improvement loop stability: The LLM-as-a-Judge needed careful prompt engineering to produce consistent numeric scores (not just qualitative feedback) that could reliably trigger automated prompt rewrites.
Accomplishments that we're proud of
- The self-improvement loop is fully autonomous, it has already rewritten its own prompts without human intervention
- 94% hallucination avoidance on live environmental data
- Real email alerts firing for real reef stations in crisis
- 95.8% AI service success rate (46/48 requests) running 24/7
- Cost significantly reduced
- Phoenix MCP integration is genuinely bidirectional: the agent queries its own observability data mid-inference
- Agent registered in Google Cloud Agent Platform Registry with Phoenix MCP server, fully compliant with Google Cloud Agent Builder requirements
- Nightly self-evaluation runs autonomously via Cloud Scheduler, no manual triggers required
What we learned
- LLM-as-a-Judge is a powerful pattern but requires precise output schema design to be actionable
- Arize Phoenix MCP unlocks a qualitatively different kind of agent , one that is self-aware about its own performance, not just monitored externally
- Real-world environmental data is messy; caching and deduplication are not optional at scale
What's next for ReefWatch AI
- Expand to ARGO float data for subsurface temperature monitoring
- Add image analysis of underwater survey photos for direct bleaching detection
- Publish conservation briefs directly to reef management organizations via API
- Open source the self-improvement loop as a standalone pattern for other teams
- Add full researcher accounts and team workspaces so organizations can manage monitored reefs, alert recipients, saved reports, and historical watchlists across multiple users
Tech Stack
Frontend
- React 18 + TypeScript
- Vite
- Tailwind CSS
- @vis.gl/react-google-maps
- Custom glassmorphism design system
AI & Agent Layer
- Google Cloud ADK (
google-adk) — Agent class, Runner, async tool dispatch - Google Cloud Agent Platform Registry — registered ReefWatch ADK agent
- Gemini 2.5 Flash — primary reasoning model
google-generativeaiSDKopeninference-instrumentation-google-genaiopeninference-instrumentation-google-adk- FastAPI (Python) — AI service host
Observability & Self-Improvement
- Arize Phoenix Cloud — production tracing, LLM-as-a-Judge evaluations
- Phoenix MCP Server (
@arizeai/phoenix-mcp) — runtime self-introspection - OpenInference (OpenTelemetry-compatible) — auto-instrumentation
arize-phoenix-otel- LLM-as-a-Judge pipeline — 7-dimension quality scoring
- - Autonomous improvement pipeline — benchmark datasets, controlled experiments, promotion gates, rejection handling, and audit trails
Data
- NOAA Coral Reef Watch CoralTemp API
- NOAA Virtual Station Network (221 stations)
- Live SST, SST Anomaly, Degree Heating Weeks
Infrastructure
- Google Cloud Run — 24/7 deployment, min-instances=1
- Firebase Hosting — React frontend
- Cloud Scheduler — health pings every 4 min + nightly data refresh
- SQLite — station cache, zero-dependency, architected for Cloud SQL migration
- Google Cloud Storage — benchmark datasets, prompt versions, experiments, audit history, researcher profiles
Live Runtime Verification
These are real API responses from the live Cloud Run deployment, captured June 10th 2026, confirming all three required technologies are invoked at runtime — not mocked, not simulated.
ADK Agent + Gemini — System Status Query:
{
"response": "ReefWatch AI is currently operational with an average
confidence of 87.4%. We've processed 48 traces, with an average
latency of 3200 ms. The error rate stands at 4.17%, and our cache
hit rate is 25%. We've used a total of 18500 tokens.",
"session_id": "adk-1780990061954",
"agent": "reefwatch_agent",
"model": "gemini-2.5-flash",
"latency_ms": 1866.25
}
ADK Agent + Phoenix MCP — Live Trace Retrieval:
{
"response": "Here are the last 5 inference traces from ReefWatch AI:
Trace ID: U3BhbjozMjk= — 2026-06-09T07:28:20.069051+00:00
Trace ID: U3BhbjozMjg= — 2026-06-09T07:28:20.070007+00:00
Trace ID: U3BhbjozMjc= — 2026-06-09T07:28:21.141816+00:00
Trace ID: U3BhbjozMjY= — 2026-06-09T07:28:21.142115+00:00
Trace ID: U3BhbjozMjU= — 2026-06-09T07:28:20.082254+00:00",
"session_id": "adk-1780990130127",
"agent": "reefwatch_agent",
"model": "gemini-2.5-flash",
"latency_ms": 3060.05
}
ADK Agent + Phoenix MCP — Confirmed Tool Invocation:
{
"response": "Here are the last 5 inference traces from the ReefWatch
AI, retrieved from Phoenix. Timestamp: 2026-06-10T02:03:29 —
Duration: 37.20 seconds. Input: coral reef AI assessments scored on
7 dimensions. Output: accuracy 90, specificity 95, actionability 90,
scientific_reliability 90...",
"session_id": "adk-1781096006256",
"agent": "reefwatch_agent",
"model": "gemini-2.5-flash",
"latency_ms": 4860.45,
"tools_called": ["query_phoenix_traces"]
}
What this proves:
- ✅
"agent": "reefwatch_agent"— Google Cloud ADK running in production - ✅
"model": "gemini-2.5-flash"— Gemini invoked at runtime, not a wrapper - ✅ Trace IDs with timestamps of
2026-06-10T02:03:xx— real Phoenix production traces retrieved live via MCP, not cached or mocked - ✅
"tools_called": ["query_phoenix_traces"]— Phoenix MCP genuinely invoked as a runtime tool call, not a background process - ✅ Deployed at https://project-9b3e2672-8819-4fa5-afe.web.app
- ✅ All three required technologies verified in production: Gemini, Google Cloud ADK, and Phoenix MCP
How Arize Powers ReefWatch AI
Arize Phoenix is not just used for monitoring in ReefWatch AI, it is part of the agent’s decision-making and self-improvement architecture.
Every reef assessment, conservation brief, alert generation, and researcher interaction is traced through Phoenix using OpenInference instrumentation. These traces are stored in Phoenix Cloud, giving the system complete visibility into how the agent behaves in production.
ReefWatch AI then uses the Phoenix MCP Server to access its own operational history at runtime. Through MCP tool calls, the agent can inspect recent traces, review evaluation results, identify recurring failure patterns, and understand where its outputs are weakest.
This creates a bidirectional observability loop:
Agent → Phoenix → Agent
The system does not simply emit telemetry. It can actively reason about that telemetry and use it to improve future behavior.
Autonomous Self-Improvement Architecture
ReefWatch AI includes a fully autonomous self-improvement loop built on top of Phoenix observability and LLM-as-a-Judge evaluations.
The nightly workflow is:
Production Traces → Phoenix Evaluation → Weakness Detection → Prompt Optimization → Validation → Production Deployment
Recent reef assessments are evaluated across multiple scientific quality dimensions including:
- Scientific Reliability
- DHW Interpretation
- Hallucination Avoidance
- Uncertainty Communication
- Recommendation Specificity
- Actionability
When recurring weaknesses are detected, the system automatically generates an improved prompt configuration and deploys it into future assessments.
All evaluations, scores, weaknesses, prompt revisions, and improvement decisions are stored and visualized through the ReefWatch AI dashboard.
This allows the agent to continuously improve without human intervention while maintaining full transparency into why changes were made.
Alignment with the Arize Track
ReefWatch AI directly implements the core concepts highlighted by the Arize challenge:
✅ OpenInference instrumentation
✅ Phoenix Cloud observability
✅ Phoenix MCP runtime introspection
✅ LLM-as-a-Judge evaluations
✅ Autonomous quality monitoring
✅ Self-improvement driven by production traces
✅ Continuous evaluation of agent performance
✅ Production deployment on Google Cloud Run
✅ Built with Google Cloud Agent Builder (ADK runtime, Agent Platform Registry)
Rather than treating observability as a debugging tool, ReefWatch AI uses observability as an active component of the agent itself, enabling a conservation agent that can monitor, evaluate, and improve its own performance over time.
How to test it
- Open the Live Reef Map and select reefs to actively monitor.
- Go to Settings, enter your email, enable alert types, and click Save Alert Settings.
- Return to the map/dashboard — ReefWatch AI will monitor only your selected reefs.
- Use Trigger Alert Demo or wait for scheduled monitoring to receive an email alert when a selected reef crosses a bleaching or thermal-stress threshold.
- Open Researcher Workspace and ask questions like “Which monitored reefs are at highest risk right now?”
- Visit Dashboard to see self-improvement history and prompt optimization results.
Built With
- arize-phoenix-cloud
- cloud-scheduler
- fastapi
- firebase-hosting
- gemini-2.5-flash
- google-cloud-run
- google-maps-javascript-api
- noaa-coral-reef-watch-api
- openinference
- phoenix-mcp-server
- python
- react
- tailwind-css
- typescript
- vite
Log in or sign up for Devpost to join the conversation.