Build a PEMS with Claude or Copilot — no code, no cost
Building a PEMS used to mean hiring someone who could write the model. We built one on real plant data using Claude, and recorded every step. Four short videos show the workflow: preparing the data, describing the objective in plain English, and checking the results against the training scores.
KeeWee -

A predictive emissions monitoring system estimates your stack emissions from process data you already record — no analyzer on the stack. It is an accepted alternative monitoring method in Canada and the US.
Building one has always meant hiring someone who could write the model. That is the part that just disappeared. With an AI assistant — Claude, Microsoft Copilot, ChatGPT — you describe the task in plain English and it writes the code, trains the models and checks the accuracy. No data scientist, no software licence, no development fee.
What follows is a demonstration, not a product. We did exactly this on real plant data using Claude, and recorded the whole thing, so you can see that a facility can develop a model itself. Below is each step, with the short video that shows it happening.
Step one: pair the data
The first step isn't modelling, it's assembling one table. Process tags on one side — load, fuel gas flow, fuel gas temperature, combustion air flow, exhaust gas temperature — and the measured emissions on the other, paired row by row on timestamp.
Then hold part of it back. Seventy percent trains the model; thirty percent is kept aside and never shown to it during training. In this example the data was shuffled in whole-hour blocks rather than row by row — NOx readings a minute apart are nearly identical, so splitting individual rows would leave almost every held-out minute sitting beside a training minute, and the test would flatter the model.

Three things cause more trouble here than the modelling does:
- Remove downtime. Periods when the unit was offline aren't reportable and shouldn't be trained on.
- Remove substituted data. Backfilled values calculated under a prescribed method aren't measurements.
- Watch for instrumentation noise. Negative readings are sensor artefacts, not signal.
You don't have to do any of this by hand, and you don't have to write a line of code to get it done. You describe what you want; the assistant does the preparation.
Step two: describe the objective
This is the step that used to require a specialist. You describe the modelling task in plain English — no code, no configuration, no libraries to install — and the assistant writes the script, fits the models, and scores them against each other.
The entire instruction was one paragraph:

Claude read the dataset, wrote a training script, and in this example tried four different algorithms — a neural network, random forest, AdaBoost and XGBoost — then scored them side by side on the held-back data.

All four landed close together — within about seventeen percent of each other on average error — so the ranking alone was not much to go on. The more useful number was sitting beside it.
Step three: check it against the training scores
Every model looks accurate on data it has already seen. The check that matters is what happens on data it has not. So we asked Claude to put each model's training score beside its held-out score, and to plot both.
The gap was consistent and large. XGBoost scored 0.39% average error on the rows it trained on and 4.25% on the nine hours it had never seen. The other three moved by a similar factor. That difference is the honest cost of holding out whole hours — a row-level shuffle would have hidden most of it.

This is the number that matters for a monitoring system. A model scored only on data it trained on will always look better than it is; the held-out figure is what a facility would actually see in service.

What a regulator needs to see
Accuracy alone isn't the standard. US EPA Performance Specification 16 assesses precision through three tests — a bias test, a Pearson correlation of at least 0.8 against the reference method, and an F-test on variance — then adds 95% availability, sensor validation with substitute data, an alarm system, daily checks that the model hasn't been modified, and periodic accuracy audits after certification. Europe's CEN/TS 17198:2018 covers similar ground.
In Canada, requirements vary by jurisdiction. Alberta sets high-level requirements for PEMS in its CEMS Code.
The science is proven. The method is new.
Predictive emissions models built with open-source libraries already meet the regulatory precision standards. KeeWee's team published that work years ago:
- Development of Predictive Emissions Monitoring System Using Open Source Machine Learning Library – Keras (IEEE Access, 2019)
- Development of a predictive emissions model using a gradient boosting machine learning method (Environmental Technology & Innovation, 2020)
What has changed since those papers is not the maths. It is that you no longer need anyone who can write the code — the assistant writes it for you.
Try it yourself
Everything above was done with an AI assistant your team can already use — Claude, Microsoft Copilot or ChatGPT. You supply the process data and describe what you want in plain English. There is no code to write, no licence to buy, and no fee for the model itself.
If you'd like to talk about a PEMS at your facility, get in touch.