How we built it
The backend is Python with FastAPI and Uvicorn. A detector compares each sensor against the rest of its group and decides whether a change is isolated to one sensor or shared across the group. The frontend is HTML, CSS, and JavaScript with Chart.js for the live graphs.
The explanation step calls the NVIDIA Nemotron model nvidia/nemotron-3.5-super-vl-120b-a12b at runtime through NVIDIA's OpenAI-compatible API. The prompt contains only the detector's output: the verdict, confidence, flagged sensors, group-wide level change, and the detector's reasoning. We tell the model not to invent numbers or facts, so the explanation stays grounded in what the detector found.
The detector makes the decision, and the language model only explains it. That keeps the verdict reliable and testable. If the model call fails, the app falls back to a built-in template explanation, so the dashboard never goes blank.
NVIDIA models used
NVIDIA Nemotron (nvidia/nemotron-3.5-super-vl-120b-a12b) generates the plain-language explanation and recommended next step for every Sensor Fault, Real Event, and Uncertain verdict. Setup uses the NVIDIA_API_KEY and NVIDIA_MODEL_ID environment variables described in the README.
Log in or sign up for Devpost to join the conversation.