Skip to content
Ehsan Mazaheri Tehrani

Lead Data ScientistToronto, CanadaOpen to new roles

I turn noisy data into systems that hold up in production.

Lead Data Scientist. Six years owning ML systems from data pipeline to canary rollout. PhD in Electrical Engineering, 2026.

CH1Selected work

Case files, with the numbers and how they were checked.

Each project is written up the same way: the problem, the constraint that made it hard, the approach, and the result with its verification. Compare them side by side.

file 01Energentis2025 to present

Decade-scale grid capacity planning

Physics-informed transformer that forecasts power system capacity needs 10 to 20 years out.

0%
MAPE on decade-scale forecastsverified: against the incumbent capacity-planning baseline
0+
sources in the lakehouseverified: automated ETL, schema validated
  • PyTorch
  • Transformers
  • Azure Data Lake
  • Data Factory
  • Python
Generation buildout+0 MW
HUBWINDSOLARGAS
Where
Existing grid
When
2026 baseline
What type
Existing fleet
What capacity
No additions yet
Illustrative locations and capacities. Select a year to explore the buildout.
Problem
Utilities plan infrastructure on horizons where demand, weather, policy and technology all move at once. Incumbent tools extrapolate.
Constraint
Fifty-plus data sources with different cadences and geographies, and time-correlated data where an ordinary random split leaks the future into training.
Approach
Extended a transformer to multimodal inputs (time series, spatial, and spatio-temporal features) with physical constraints in the loss. Built an Azure lakehouse with automated ETL, chronological splits, and train-only scaling statistics.
file 02IEMS Solutions for Honeywell Forge2024

ML platform for distributed energy resources

Cloud-native microservices that run ML models against 20,000 devices across 200 utilities.

0%
peak demand reductionverified: per feeder and utility segment, not aggregate only
0
DERs under load testverified: across 200+ utilities
  • FastAPI
  • Kubernetes
  • Docker
  • MLflow
  • DVC
  • LangChain
  • PyTest
Illustrative sequence

Shaping the demand curve

Coordinated devices shift demand away from the peak.
Problem
Utilities needed to forecast and shape virtual power plant capacity in near real time, and the models had to be updated without risking live grid operations.
Constraint
Every prediction had to be traceable to its training data and commit. Updates could not be trusted until proven against live traffic.
Approach
FastAPI services on Kubernetes with shadow and canary rollout. Models disaggregate EV charging from feeder load and regroup DERs. MLflow and DVC version models and data; schema and range validation guard the feature pipelines.
file 03DigiNext, DigiKala Ventures2022 to 2024

CheeGol: plant identification at scale

Co-founded an AI SaaS that identifies plants from user photos and recommends care.

0%
accuracy on user-submitted photosverified: 8,000+ species, real uploads
$0k
pre-seed raisedverified: DigiKala Ventures
  • PyTorch
  • YOLO
  • FastAPI
  • Docker
  • React Native
  • MongoDB
  • Node.js
Illustrative sequence

From pixels to plant care

01 LOCATE02 IDENTIFY03 INSPECT
Locate the plant, identify it, then inspect for disease symptoms.
Problem
Photos from real users are blurry, cropped, and badly lit. A model that scores well on a clean split fails in the field.
Constraint
Inference had to run cheaply enough for a pre-seed startup, on small instances, for 8,000 species.
Approach
Trained and fine-tuned CV models in PyTorch, added YOLO-based disease symptom detection, quantized and containerized for low-latency serving. Led a React Native app and MERN web platform around it.

CH2How it ships

Tools, placed where they sit in a loop that never stops turning.

Shipping a model is not a one-way pipeline. It is a lifecycle that closes on itself at two speeds: fresh data goes round in hours, a wrong objective takes weeks. No proficiency bars. Each stage is a place a model can fail in production, and each tool is listed where I have used it to stop that.

  • Evaluate back to Data, error analysis, before it ships
  • Observe back to Data, data iteration, hours to days
  • Observe back to Frame, objective and model iteration, weeks to quarters

stage 01

Frame

Turn a business complaint into inputs, outputs and an objective, with a non-ML baseline that has to be beaten first.

  • Problem framing
  • Non-ML baselines
  • Objective decoupling
  • Metric design
  • Cost of a wrong prediction
Define the objective
quality ↑cost →over budgetbaselinetarget

CH3Timeline

Seventeen years on one axis.

Roles above the line, degrees below, awards marked on it. Scroll to sweep the cursor and read what was true at each point.

  1. 2025

    Lead Data Scientist

    Energentis · Sep 2025 to Present

    • Architected a physics-informed transformer for 10 to 20 year capacity expansion planning over multimodal grid, weather, demand and regulatory data.
    • Reached 17% MAPE on decade-scale horizons against the incumbent baseline.
    • Designed an Azure lakehouse with automated ETL for 50+ sources, chronological splits and train-only scaling to prevent leakage.
  2. 2024

    Lead Data Scientist

    IEMS Solutions · Jan 2024 to Dec 2024

    • Led ML integration into Honeywell Forge's DERMS platform.
    • Built a FastAPI, Docker and Kubernetes microservices platform load-tested to 20,000 DERs across 200+ utilities, with shadow and canary rollout.
    • Disaggregated EV charging and optimized DER grouping, cutting peak demand 30% per feeder.
  3. 2022

    Software Engineer, AI

    DigiNext, DigiKala Ventures · Feb 2022 to Mar 2024

    • Co-founded CheeGol, an AI plant identification SaaS, and raised $100k pre-seed.
    • Trained and deployed CV models holding 95% accuracy across 8,000+ species on real user photos.
    • Quantized and containerized inference to run on smaller instances.
  4. 2017

    Machine Learning Researcher

    University of Tehran · Aug 2017 to Aug 2019

    • Systematic review of applied ML for fault diagnosis in electrical machines.
    • Built fault diagnosis models in Python and PyTorch.
  5. 2019

    PhD, Electrical Engineering

    University of Tehran · Sep 2019 to Sep 2026

  6. 2014

    MSc, Electrical Engineering

    University of Tehran · Sep 2014 to Jul 2017

  7. 2009

    BSc, Electrical Engineering

    Isfahan University of Technology · Sep 2009 to Sep 2013

CH4Lab

Research you can run, one lab per page.

Each lab rebuilds a piece of my research to run in the browser, so the claim can be checked rather than taken on trust. Open one to run it.

Runs a trained modelONNX Runtime Web
  1. Healthy
  2. Demagnetization
  3. Eccentricity
  4. Inter-turn short
Illustration: motion slowed, geometry exaggerated.

Motor-fault classifier

Pick a fault, watch its signature appear in the spectrum, and see a 1D CNN call it from the raw current.

Open the lab

Added Sep 2026

Trains in your browserWeb Worker
Replay of the reference run, window 120, from a deliberately wrong start.

Inverse PINN flux observer

A physics-informed network is trained from scratch in your browser to find a motor's magnet strength from its terminals alone.

Open the lab

Added Sep 2026

Every lab runs client-side. Nothing leaves your browser.

All labs

Open source

Tools I built and use, in the open.

Side projects with public code. Every number on a card is quoted from the project's own README and tests, with where to check it.

Python · MITmacOS · iOS
Agent run
Replay of a real run on an iOS 27 simulator, timing compressed.

ios-agent

Give an AI agent an iPhone. It checks every step it takes.

243 tokens
per screen on a physical iPhone, from 140 raw nodesREADME, measured on iOS 26.6 over Wi-Fi
39/39
tasks passed, 41 observations against a floor of 39README, 13 tasks x 3 runs
1,061
tests that run offlineREADME, CI badge
  • Python
  • MCP
  • LangGraph
  • XCUITest
  • Textual

Book

A book on diagnosing permanent magnet machines.

A 448-page monograph from Wiley-IEEE Press on why faults in permanent magnet machines leave the signatures they do: lumped-parameter and finite element models of demagnetization, eccentricity and winding faults, the machine learning built on top of them, and the experiments that check both.

Hover or tap for the printed jacket.

Wiley-IEEE Press1st edition2026

Fault Diagnosis of Permanent Magnets Machines

Written with Jawad Faiz and Bashir-Mahdi Ebrahimi for engineers who keep permanent magnet machines running, and for graduate courses on condition monitoring. It sets each fault against its induction-machine counterpart, and closes with repair strategies and what it takes to run these diagnostics in the field.

Authors
Jawad Faiz, Ehsan Mazaheri-Tehrani, Bashir-Mahdi Ebrahimi
Status
In press, due Nov 24, 2026
Extent
448 pages, hardcover
ISBN
978-1-394-42497-9

Pre-order from

WileyAmazon

Research and credentials

Physics-informed learning when data is scarce.

The dissertation asks how much a fault-diagnosis model can borrow from the physics of the machine when it cannot borrow from data. The Lab above is a small working answer.

Dissertation

Methodology of applying physics-informed machine learning for fault diagnosis in permanent magnet synchronous machines under scarcity of data.

PhD, Electrical Engineering. University of Tehran, expected 2026.

Google Scholar

Awards

  • 2009Top 0.3% of 300,000+ · Nationwide university entrance exam, mathematics and physics branch.
  • 2019PhD admission through the talent program · University of Tehran.
  • 2019Scientia PhD Scholarship · UNSW, Australia. $52,000 AUD per year.

Certifications

Contact

If this matches a problem you have, write to me.

Based in Toronto, open to lead and senior roles in ML engineering and data science, on site or remote.