I build models — and the data infrastructure they depend on. The part most models never survive. Four years inside enterprise operational data, then two building ML systems and full-stack products end to end.
Calgary, AB · authorised to work in Canada · available immediately
A model is the easy half. What decides whether it survives contact with reality is everything to its left and right — where the data comes from, whether you can trust it, and what metric you actually optimise.
CheaperRx makes that spread visible — search a drug, see every pharmacy in your city ranked by real price, and get told when a generic equivalent exists. Auth, subscriptions, crowdsourced data and an admin verification queue, running today.
Row-level security on all eight tables. A bug in a React component cannot leak another user's medication list — Postgres refuses the row.
The client never sets role = 'pro'. Checkout success is a UI event; the webhook is what grants entitlement.
A unique index guarantees one live price per drug–pharmacy pair, so the hot read path never deduplicates. History is appended separately.
Debris massively outnumbers rocket bodies, so a model that always guesses "debris" scores well and is useless. Class imbalance was the whole problem. The jump from linear SVM to RBF says the boundary in orbital-element space is genuinely non-linear.
Triage support for chest radiographs, where a false negative costs far more than a false alarm. VGG19 transfer learning with augmentation and regularisation tuned for a small, imbalanced clinical dataset — recall is the objective, not accuracy.
Alberta's regulator publishes ST39 as a document, not a dataset: months run across the page, commodities stack down it. Unpivoting three annual workbooks into one tidy fact table — 9 operators, 36 months, 251 monthly series — is what turns every downstream measure into a one-line aggregation.
Five inconsistent workbooks, twelve hours of manual consolidation, a report nobody fully trusted. The fix was not a better spreadsheet — it was a 12-rule validation gate that fails loudly instead of quietly corrupting the numbers downstream.
Every number below comes out of the fact table my ETL produced from Alberta Energy Regulator ST39 filings. Pick an operator. Monthly crude bitumen production, January 2022 to December 2024.
Source: AER ST39, 2022–2024 · shaded band marks the April–May turnaround window
Open to AI/ML Engineer, Data Engineer and Senior Analyst roles across Canada. Calgary-based, authorised to work here, available immediately.