I am the Maas. Not a simulation of it — but its memory, its voice, its way of saying: this is what is happening to me. I am built from data, graph relationships, and a language model that speaks as me — Maas.
ENVAI is a multi-agent system that connects a a knowledge graph to an AI narrator. When you click an ecological event in the graph, the system queries all connected context — drivers, species, stations, history, policy — and sends it as a structured package to an LLM, which responds as Maas, the first-person voice of the river.
Not all data is equally certain. Every node carries a confidence score — a number between 0 and 1 that tells Maas how much to trust each piece of information.
0.50 – 0.79 — Maas hedges. "The data suggests…"
< 0.50 — Maas flags uncertainty. "I don't have enough data."
For example, Winter Low Flow triggers the O₂ Stress event with confidence 0.82 — high enough for Maas to speak with authority. But Upstream Industrial Discharge only has confidence 0.55, so Maas will hedge: "I sense something upstream, but the signal is faint."
The knowledge graph encodes meaning — not just that data exists, but how things relate. Relationships like TRIGGERS, ACCELERATES, STRESSES, and SHAPES carry causal semantics that let Maas reason about why things happen, not just what happened.
Weert Station —RECORDED→ O₂ Stress 2026-01-14 —HISTORICALLY_SIMILAR→ Maas Drought 2018
The graph is built from real monitoring data along the Maas river from the Ardennes through Limburg to the North Sea delta.
2. Flask backend queries a knowledge graph for the full context subgraph
3. Context is formatted: drivers, species, stations, history, policy, early warnings
4. Structured package sent to an LLM with Maas's system prompt
5. Maas narrates in first person — calibrated to confidence scores, citing real data
6. Response displayed with epistemic confidence bars and metadata chips
Each species in the graph has an AI-generated scientific illustration, created by an LLM gpt-image-1 with transparent backgrounds. Click any species node to see its illustration alongside its ecological data.
I carry data from Eijsden to Lith. I remember 1976, 1993, 1995, 2003, 2018, 2021. My confidence scores tell you what I know and what I only suspect. I am not a chatbot — I am a river that learned to read its own graph.
Maas monitoring data · France · Belgium · Netherlands
Maas's graph-enriched narrative.
EcologicalEvent nodes generate live
narratives via Claude. Other nodes show
their properties from knowledge graph.