Khaja Moinuddin Mohammed

Data Scientist & ML Engineer, Seattle

I build models thathold up on messy,real-world data.

Not just on a benchmark. The hard part is rarely the model, it is deciding what would count as proof: picking a metric that can actually fail, then building the evaluation that makes the answer worth trusting.

  • Six months of production ML at a public utility
  • Led a three-person team on contract classification
  • Eleven projects across text, audio, tabular, geospatial and mobile

M.S. Data Science, Seattle University · Available from August 2026

Thirteen years of it, across 367 separate files.

152K+
Records consolidated

from 367 source files into one production pipeline

0.93
Macro F1

on legal clause classification, leading a team of three

<50 ms
Latency budget

for real-time siren detection on embedded hardware

Availability

M.S. Data Science, Seattle University, graduated June 2026. Available for full-time Data Scientist, ML Engineer, and Data Analyst roles from August 2026.

What six months at a utility actually looked like.

Tacoma Public Utilities, Jan–June 2026. Raw records, the pipeline that made them mean one thing, the model, the evaluation, and the dashboards crews use. Every visual here is schematic: the underlying data is the employer's and never appears.

  1. 01Raw152,000+ records, 367 files, thirteen years
  2. 02Pipeline100+ vendor spellings into one schema
  3. 03ModelLogistic regression, XGBoost, LightGBM
  4. 04EvaluationRecall on failures, SHAP plausibility
  5. 05InterfaceTableau, event-driven refresh

Layer 01 · Raw

Nobody could answer a simple question.

A public utility had 152,000+ pole inspection records spread across 367 separate files going back to 2013, written by different vendors who each named things their own way. The question, which poles are most likely to fail, had no owner and no answer.

Source files
367
Records
152,000+
Years covered
2013 – 2026
Vendors
Multiple, inconsistent
Schematic. No real record values appear anywhere on this site.

Layer 02 · Pipeline

Making the data mean one thing.

A Python ETL pipeline consolidated all 367 files into one analysis-ready dataset, normalizing 100+ vendor-specific attribute spellings with regex. I later re-engineered it to be event-driven, so new inspection data triggers reprocessing and pushes updated scores without a manual refresh, and set the data-governance standards so quality holds as new data lands.

Spellings normalized
100+
Output
One analysis-ready dataset
Refresh
Event-driven
Stack
Python · pandas · regex
The unglamorous layer. It is also the one that took the longest.

Layer 03 · Model

Reject/pass classifiers over ~49,000 imbalanced records.

Logistic regression, XGBoost and LightGBM, with SMOTE and stratified splits to handle the imbalance. Geospatial features via pyproj and Folium mapped risk across 217 circuits inside an FMEA/RPN framework.

217 circuits, coloured by risk tier. Abstract lattice, not a real map.

Layer 04 · Evaluation

A model that calls everything "pass" scores well and is useless.

Class imbalance was the central risk, so I judged the model on its ability to catch the failuresrather than on overall accuracy. SHAP was there to check the model was keying on physically sensible drivers, shell rot and decay, rather than on artifacts of a particular vendor's formatting. The FMEA/RPN scoring translated model output into a prioritized inspection plan, which cut estimated failure risk by ~18%.

Gating metric
Recall on failures
Imbalance handling
SMOTE + stratified splits
Plausibility check
SHAP
Est. risk reduction
~18%
This is the layer the rest of the site is organised around.

Layer 05 · Interface

Something a person can actually use.

Production Tableau dashboards for five or more stakeholder groups, wired to the event-driven pipeline so updated scores land without anyone refreshing anything. A risk model nobody opens is not a result.

Stakeholder groups
5+
Refresh
Automatic
Output
Prioritized inspection plan
Repo
Private, employer data
Screens are not shown. The codebase is private and stays that way.

Eleven projects, sorted by how they were judged.

Filter by modality. Every row names its gating metric, because that is the column a hiring panel should actually read.

Modality

11 / 11 projects

All projects, filterable by data modality. Columns: project, modality, role, the metric it was evaluated on, and year.
ProjectModalityRoleEvaluated onYear
Pole Inspection RiskTurning 13 years of messy utility inspection records into a risk model that tells crews which poles to look at first.Tabular · GeospatialProfessionalRecall on failures · SHAP plausibility2026
SafeANCNoise cancellation that gets out of the way when an ambulance is coming.AudioSolo<50 ms latency budget · adversarial set2026
Legal Clause ClassificationAutomatically labelling contract clauses, and choosing a metric that does not flatter the model.TextLed team of 3Macro F1 as the gating metric2026
Bird Sound ClassificationIdentifying bird species from field recordings by turning sound into pictures.AudioSoloConfusion-matrix error analysis2025
Seattle Demand Modeling850,000 records of parking and weather, joined to answer whether rain changes where people park.Tabular · GeospatialSoloR² vs baseline · feature ablation2024
SalatA prayer times app that shows the times the masjid actually set, not the ones an algorithm calculated.MobileSoloCorrection-loop cost, not a metric2026
Diabetes Risk PredictionSVM kernel comparison on NHIS survey data.TabularSoloClinical recall over raw accuracy2025
Youth Substance Use PredictionThree ML pipelines over NSDUH survey data.TabularSoloInteraction-feature importance2025
Global Mortality AnalysisClustering and SVR over country-level indicators, 1990–2019.TabularWith 4 classmatesCluster stability2025
Hotel Demand ForecastingPickup-model time-series forecasting.TabularSoloMAE · RMSE · MAPE2025
Reserved: LLM / agent projectEvaluation harness first.TextNextTo be definedTBC

Exhibit · Legal Clause Classification

The metric choice was the real decision.

The TF-IDF feedforward model won at 0.9296 macro F1, against 0.9205 for the LSTM. But accuracy on an imbalanced clause distribution mostly measures performance on the common clause types, which hides degradation on the rare ones, and in a contract, the rare clause is often the one that matters legally.

Macro F1 weights every clause type equally, so it exposes exactly the long-tail failure that accuracy conceals. The chart shows the same effect class by class: License Grant loses 34.2 points between accuracy and precision, Expiration Date 27.0. Same model, same run.

Every value in this exhibit is measured, read from the project's own published figure for the winning TF-IDF model, not illustrative.

Per-class, sorted by drop

AccuracyPrecision
  1. License Grant-34.2License Grant: accuracy 95.3 percent, precision 61.1 percent.
  2. Expiration Date-27.0Expiration Date: accuracy 97.3 percent, precision 70.3 percent.
  3. Agreement Date-13.9Agreement Date: accuracy 100.0 percent, precision 86.1 percent.
  4. Anti-Assignment-10.3Anti-Assignment: accuracy 98.4 percent, precision 88.1 percent.
  5. Cap On Liability-7.5Cap On Liability: accuracy 96.2 percent, precision 88.7 percent.
  6. Insurance-4.1Insurance: accuracy 99.1 percent, precision 95.0 percent.
  7. Audit Rights-3.8Audit Rights: accuracy 100.0 percent, precision 96.2 percent.
  8. Governing Law-2.2Governing Law: accuracy 98.9 percent, precision 96.7 percent.
  9. Parties-1.6Parties: accuracy 99.2 percent, precision 97.6 percent.
  10. Other+14.1Other: accuracy 84.8 percent, precision 98.9 percent.

Every class looks strong on accuracy. Precision splits them: License Grant loses 34.2 pointsand Expiration Date 27.0. Same model, same run. The catch-all class is the mirror image, gaining 14.1, which is what a bucket labelled "Other" does.

What I can do, and the project that proves it.

Every capability links to the project that demonstrates it, so you can go and check.

Modelling

Data engineering

Evaluation & delivery

Also, a camera.

I shoot regularly and edit in Lightroom.

Winner, Imagining the World Photography Competition, Seattle University (2025)

See the gallery →