SAIDI, SAIFI, and CAIDI KPIs; customer base and period context; Priority Assets; and alert/outage/maintenance summaries.
03 / UTILITIES / OPERATIONAL INTELLIGENCE
Blue River Grid Intelligence
Bring reliability metrics, asset history, maintenance context, utility documents, and grounded AI together in one operational investigation experience.
Working prototype · synthetic utility environment
View public GitHub repository →Overview
Operational intelligence with evidence, not a generic chatbot.
Blue River Grid Intelligence is a synthetic utility-operations application built around three connected experiences: Reliability Command Center, Asset 360, and Operations Intelligence. It combines governed structured data with utility-document retrieval so operators can move from portfolio-level reliability signals to an individual asset investigation and a source-linked AI synthesis.
The problem
Reliability KPIs, asset events, work orders, outages, and engineering documents often live in separate systems. An operations user needs a fast way to connect those signals without letting an LLM invent operational facts.
My contribution
Designed and built the Databricks-centered application architecture, structured evidence layer, AI Search retrieval path, FastAPI/React experience, and grounding controls. The AI layer uses Databricks-managed ai_query with system.ai.gpt-oss-20b; it does not call the OpenAI API directly.
Architecture
Structured facts and document evidence converge before generation.
The application reads existing governed data and the existing knowledge index. AI explanation is constrained by retrieved evidence and validated citation labels.
Application views
Portfolio signal → asset investigation → grounded synthesis.
The deployed experience is intentionally operational rather than conversational-first. Each screen has a distinct job and shares the same synthetic Blue River Power context.
Utilization, top-oil temperature, thermal alerts, outages, risk band, event timeline, work orders, and related documents.
Retrieves operational facts and utility documents in parallel, then produces a source-linked synthesis with evidence chips, warnings, and an insufficient-evidence state.

Reliability Command Center
A system-level starting point for SAIDI, SAIFI, CAIDI, priority assets, outages, alerts, and maintenance signals.

Asset 360 context
Moves from portfolio signal to the selected asset's operating condition, priority score, outages, and related evidence.

Timeline and evidence
Connects event history, maintenance work, and engineering documents so an investigation stays anchored in context.

Grounded operational synthesis
Combines governed facts with retrieved utility documents, then returns a concise response with evidence labels.

Citation drill-down
Lets the operator inspect the structured records and document excerpts that support the generated answer.

Safe unknown-asset state
Refuses to guess when an asset identifier is not found and guides the user back to governed asset context.
Grounding & safeguards
-
Hybrid retrieval: structured Delta facts become
[S1]while AI Search returns document evidence as[D1..Dn]. - Citation validation: unknown document labels, missing structured evidence, or zero document citations produce warnings instead of being silently accepted.
- Insufficient-evidence path: the application can stop or explicitly report insufficient evidence when supporting documents are unavailable.
- Validated asset context: explicit asset IDs are checked against governed data; the resolver never guesses an asset when the question is ambiguous.
- Synthetic environment: Blue River Power is a portfolio environment, not a real utility or production operations system.
Why the design matters
The model is used for synthesis, not as the source of operational truth. Reliability metrics, asset facts, and document excerpts are retrieved first; the generated answer is expected to cite that evidence and surface warnings when the evidence is incomplete.
The app was deployed and validated in Databricks, then intentionally stopped when not in use. Public repository and screenshots use synthetic data.