Spot unusual measurements, compare the evidence, and decide what to check first.
Each point is judged only against its own last 28 days.No comparison between plants
Preserve original records and source information. Select six exploratory groups: influent volume, oxygen, ammonium, nitrate, suspended solids and temperature.
Compare each point with its own history and apply simple data-quality rules.
The history detector groups nearby flagged days into cases and ranks them within each plant.
A local dashboard shows stored AI flags, historical evidence and a review budget. The operator decides what to check.
Six group-specific forests offer a second ranking; the history detector also works on its own.In parallel · experimental AI
Use the previous 28 calendar days, excluding today, with at least 14 valid days. Calculate the median and robust spread.
Measure deviation from the baseline. Flag stuck values and unexpected zeros; negative checks exclude temperature.
Group nearby flagged days. Rank by rule hits, duration and peak score; preserve reasons and source references.
Missing, duplicate or insufficient history can leave a reading unscored; unscored is not normal.Safeguard
Scrub through a synthetic series to see the score →
Thresholds are calibrated per series. The approximately 1% target flag rate is a workload assumption, not a measured false-alarm rate.
Deviation, daily change, recent deviation, relative level, zero and repeated days.
One Isolation Forest per measurement group looks for uncommon combinations of history-based features.
Compare its reading-level ranking with the independent history detector. Scores stay within each group.
A higher score means a rarer feature pattern, not a fault probability or diagnosis.Interpretation
Fit each forest using earlier data, 100 trees and a fixed random seed.
Set the AI alert threshold on validation scores, then keep it fixed.
Compare rankings on the same eligible readings and review budget.
Report coverage and workload; expert feedback is needed to judge usefulness.
No confirmed labels: no real-world accuracy or false-alarm savings claim.Limits
Review stored AI flags for one plant and measurement in a local dashboard.
Inspect the reading, its 28-day history, historical median and source context.
Set a review budget and keep deferred cases visible for the selected metric.
The operator investigates. Review decisions are not yet saved between sessions.
The dashboard reads precomputed results; it does not run the models live. It supports English and Dutch and can optionally ask Claude to explain a stored reading; it works without it.
Compare rainfall, electricity and plant readings by week and month when suitable local data is available.
Explore extending the models to further parameters, after checking data coverage, units and suitability.
Review cases with plant experts; test usefulness and alert workload before operational deployment.
Investigate long runtimes on large datasets and improve processing efficiency without changing the evidence.
Future work requires additional data and expert validation. The current results are provisional and unvalidated.
Second Opinion reads a Z-info table export of daily measurements. No data ships with the repository: measurement data, scores and fitted models stay on your machine. Every example on this site is synthetic, and the pipeline can run on a fully simulated export. Use Python 3.11.
git clone https://github.com/Second-Opinion-Dev/Second_Opinion.git
cd Second_Opinion
python -m pip install -r requirements.txt
# place the export under data/tai/extracted/, then:
python src/pipeline.py --plan # show what would run
python src/pipeline.py # full run
A decision-support tool that helps operators investigate unusual measurements. A flag is a reason to investigate, not a confirmed fault. The operator stays in control.
Built by Joshua Varghese Thomji, Sunil Parameswaran, S Smriti and Oindrilla Banerjee.