DEV Community

Cover image for Meterminder
Aneesh Hebbar
Aneesh Hebbar

Posted on

Meterminder

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady Submission 🦥

MeterMinder: Finding the Electricity Readings Worth a Second Look ⚡

An open-source AI prototype for exploring energy consumption and investigating unusual usage patterns.

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady.

What I Built

Electricity data can tell us how much energy was consumed. But when you have thousands of meter readings, figuring out which hours deserve a closer look can become another tedious task.

I built MeterMinder, an AI-assisted energy-analysis prototype that helps users explore electricity-consumption data and identify readings worth investigating.

The goal is simple instead of manually scrolling through rows of meter data, a user should be able to upload a compatible hourly-reading CSV, understand the consumption patterns, and review a ranked list of readings flagged by a machine-learning model.

Here's what MeterMinder currently does:

  • Explore consumption: Upload hourly readings, inspect consumption trends, and examine peak-usage periods.
  • Check data quality: Identify duplicate readings, missing values, and gaps in hourly timestamps.
  • Generate experimental anomaly scores: Use TabPFN to score compatible readings and sort them for investigation.
  • Inspect individual readings: View timestamps, observed values, model scores, and neighbouring readings to understand the surrounding context.
  • Evaluate the model: Compare TabPFN against a simpler baseline using held-out, labelled energy data.

The initial prototype focuses on hourly smart-meter CSV files rather than electricity-bill PDFs. It is designed for people who manage or investigate building energy use and need a quicker starting point than manually inspecting an entire time series.

One distinction matters: an unusual reading is not necessarily wasted electricity. It could represent legitimate building activity, an equipment schedule, or something worth investigating. MeterMinder currently helps surface patterns; it does not establish their physical cause or guarantee energy savings.

Demo

Demo video: [https://youtu.be/WpRzZSBcMzY]

The walkthrough demonstrates the current workflow:

  1. Open MeterMinder and choose the demo-data option.
  2. Inspect the selected building, time range, data coverage, and consumption chart.
  3. Generate experimental TabPFN anomaly scores using the saved model.
  4. Review the ranked readings and inspect an individual reading's context.
  5. Open the Model Performance page to see how TabPFN compares with the baseline.

The demo uses a 14-day window containing 336 hourly readings from a building in the LEAD evaluation dataset.

The current application is a prototype, and the anomaly scores are experimental. The demo illustrates the working analysis pipeline rather than claiming that the detector is ready for operational energy-management decisions.

Code

GitHub repository: [https://github.com/Aneesh-0108/meterminder]

The repository includes the Streamlit application, data-validation utilities, feature-engineering pipeline, TabPFN inference code, benchmark scripts, and tests.

The raw Kaggle competition files, credentials, and local fitted-model reference are not included in the repository.

How I Built It

I built MeterMinder with Python, Pandas, Streamlit, scikit-learn, and Prior Labs' TabPFN Client.

Why TabPFN?

Energy-consumption readings are structured, tabular data. I wanted to investigate whether a tabular foundation model could identify unusual usage patterns more effectively than a simpler baseline.

MeterMinder uses the hosted tabpfn-client API with the v3.5_default classifier. I fitted the model once using a deterministic sample of 20,000 labelled readings spanning 200 buildings from the LEAD dataset. I then saved the account-bound model reference and feature schema so subsequent predictions could reuse the fitted model rather than repeat the training request for every upload.

The feature pipeline generates 24 ordered features from the readings, timestamps, historical lags, rolling statistics, and missing-reading information. It handles timestamp gaps and missing readings explicitly, rather than silently treating missing measurements as zero.

For the demo, the saved model was loaded and used to score 336 eligible readings from a 14-day window. All 336 returned finite scores. The model was not refitted for this prediction run.

What did the evaluation show?

I evaluated the model on a separate sample of 2,500 readings from 20 held-out buildings. The sample contains 55 labelled anomalies, or 2.2% of the readings.

Metric Baseline TabPFN v3.5
ROC-AUC 0.6480 0.7170
Average Precision 0.03431 0.04204

Both metrics show that TabPFN performed better than the baseline on this particular sample. Average Precision is especially useful here because anomalous readings are rare.

However, the results also revealed a limitation I do not want to hide.

When I examined fixed-size review queues, TabPFN found:

Number of readings reviewed Baseline anomalies found TabPFN anomalies found
Top 25 1 0
Top 50 1 1
Top 100 4 2

The model therefore showed better overall ranking metrics, but its top-ranked alerts were not reliably useful at these small review budgets. Its selected classification threshold also failed to transfer well to the held-out buildings.

This is why MeterMinder presents its scores as experimental signals for investigation rather than confirmed anomalies. The current evaluation is limited and does not establish that the model will generalize to arbitrary buildings or real-world energy-management settings.

The prototype's next technical challenge is to improve the consistency of its anomaly rankings across unseen buildings and establish whether those rankings actually save users time.

Why Does Open Innovation Matter?

Open innovation matters here because it gives developers access to a tabular foundation model that can be incorporated into a specific, inspectable prediction workflow.

Rather than treating an LLM as a general-purpose answer generator, I could use TabPFN for structured-data classification and compare its behaviour against an explicit baseline. The preprocessing, feature engineering, train/validation separation, metrics, and application code are all visible parts of the system that can be tested and improved.

It also made experimentation approachable for a student project. The hosted TabPFN Client let me test a model on a small, controlled training sample without first setting up local model-weight inference on my CPU-only laptop. The saved-model reference then allowed subsequent demo predictions without fitting the model again.

There is an important trade-off: the current version uses hosted inference, not fully local inference. The readings submitted for prediction are processed by Prior Labs, so the project does not yet provide an entirely offline or local-data-only workflow.

The longer-term direction is to investigate a suitable local deployment, subject to the model's licensing and hardware requirements. For now, the implementation makes the model integration and its limitations explicit.

Alignment with the UN Sustainable Development Goals 🌍

MeterMinder aligns with UN Sustainable Development Goal 7: Affordable and Clean Energy, particularly Target 7.3, which focuses on improving energy efficiency, and Goal 12: Responsible Consumption and Production, which promotes the efficient use of resources. By helping users explore electricity consumption patterns and investigate unusual meter readings, MeterMinder aims to support more informed energy-management decisions. As the project is still a prototype, its contribution is a potential one; actual energy savings and emissions reductions would need to be validated through real-world use.

Learn more: UN SDG 7 · UN SDG 12

Prize Categories

  • Best Use of TabPFN: TabPFN v3.5 is the core predictive model used to classify energy readings. I fitted it on labelled data, reused the saved fitted-model reference for inference, and compared its results against a simpler baseline on held-out buildings.

Top comments (0)