Honest measurement, shipped as code.

I'm Matthew Reda. I build Bayesian measurement systems for marketing and finance decisions. These are the fifteen repositories I worked on between May and November 2026.

See the work redam94 on GitHub

2,287 commits across 15 repositories

Weekly commits to each repository, 11 May to 11 November 2026, on a log scale and smoothed. Select a row to jump to that project.

MMM Framework

Marketing mix modeling that commits to its assumptions before it sees the fit.

Read the documentation API reference

Pre-specified by design

The likelihood, priors and identification strategy are fixed before the fit, which removes the room to shop for a result.

Pooled where it helps

Hierarchical effects share strength across geographies and products without flattening the differences between them.

More than one outcome

Mediated pathways such as media to awareness to sales, joint KPIs with correlated errors, and halo and cannibalization between products.

PyMC 6, FastAPI, React, TypeScript 423 commits since May Private repository

A standalone Bayesian engine with a FastAPI service and a React studio. Versions up to 1.5.0 remain on PyPI under Apache-2.0; later versions are not publicly distributed.

modeling-api

Fit, score and share labelled multi-dimensional models, safely.

Open the docs Source on GitHub

Described, not hand-wired

A model is a declarative YAML spec or a small Python plugin. Data is validated against an xarray schema, and the fitted preprocessing is replayed exactly at score time.

Every job in a sandbox

Fits and scores run in isolation. Whole analyses run as versioned workflows, from unit-root tests to rolling-origin backtests against naive forecasts.

Checked before anyone uses it

A governance policy requires a model to beat itself fitted on shuffled data and to give no credit to fake noise drivers. A second person signs off.

Python, xarray, PyMC, statsmodels, TypeScript, Vega-Lite 1,215 commits since May Public, v0.9.1

Research and standards

axiom

Declare what you want to know. Find out whether the data can tell you.

Bayesian causal decision science in one vocabulary: identification, experimental design, calibration against randomized results, response surfaces and meta-analysis. Checked against 21 published numbers from four real datasets, with twelve narrated examples from agronomy to product analytics.

Python, NumPyro, JAX, Pydantic 172 commits since May Public

See it working Source

Universal Model Protocol

Pass a model between tools without losing what the numbers mean.

A draft standard for exchanging models, test results, budget scenarios and decisions. Every exchanged number carries its estimand, gates degrade before they block, and records land in an append-only log.

JSON Schema, Pydantic, FastAPI, TypeScript 167 commits since May Private repository, public draft

Read the draft

Explainers and teaching

PyMC Challenges

Real data, a real decision, and a first model that breaks.

Fifteen challenges and more than a hundred worked examples on PyMC 6, ArviZ 1 and PyTensor 3. Every challenge ends in a decision someone has to make, and the obvious first model fails in a way you have to diagnose. Hints are tiered, opt-in and tracked.

PyMC 6, ArviZ 1, nutpie, Jupyter 79 commits since May Public

Start a challenge Source

Double Machine Learning, explained

Every chart computes in your browser, from data with a known truth.

A scroll-driven explainer of causal identification, double machine learning and doubly robust ad-lift estimation. It is one self-contained page, and the Monte Carlo simulations run in a Web Worker.

HTML, JavaScript, Web Workers 15 commits since May Public

Open the explainer Source

Seeing vs. Doing

Why a model that predicts well can still mislead you about what to do.

An interactive guide to causal identification: a nine-stage practitioner workflow, a design router, a geo-test sizing calculator and a field guide to twelve graph types. A companion page answers 51 practitioner questions with sources.

HTML, JavaScript 7 commits since May Public

Open the guide Source

Second Brain

The reading behind the work, kept in the open.

A research vault of more than 200 notes on Bayesian statistics, econometrics, causal inference and discovery, agent-based modeling and market response models. The explainers on this page cite it note by note.

Markdown, Obsidian, Python 41 commits since May Public

Browse the vault Source

Measurement tools

Brand Lift Analyzer

Upload a survey. See how exposed respondents compare with comparable controls.

Fits a propensity-score model, adjusts the control group by matching or weighting, and reports lift for each brand KPI with bootstrapped uncertainty. It also shows where the two groups overlap and where they do not, feature by feature.

Python, FastAPI, React, TypeScript 4 commits since May Public

View the source

Media Effectiveness Index

A weekly early read on whether media is still working.

A leading indicator built from a marketing mix model's prediction errors, with a tracker app for planners, data scientists and the analysts who build it. A KPI-only mode fits its own model when there is no MMM. Tested with a simulation study and a robustness battery.

Python, JavaScript, Jupyter 4 commits since May Private repository

Brand VOI simulation

What is one more brand study worth?

A value-of-information simulation for brand measurement. It simulates worlds with long-memory awareness, geo surveys, a national tracker, brand-lift reads, platform experiments and a TV geo holdout, fits a joint model at each rung of evidence, and scores the result by budget-reallocation regret.

Python, NumPyro, JavaScript 1 commit since May Private repository

Brand tracker latent variables

Survey noise, treated as survey noise.

State-space models for brand-tracker proportions with sampling error, linking media spend to latent brand to sales. The app runs the naive analyses on the same simulated data and shows what they get wrong.

PyMC, NumPyro, statsmodels, Streamlit 1 commit since May Public

View the source

Client work and side projects

Epoch Lag admin dashboard

Operator tools for a social media app.

Client work for Epoch Lag, where I build the ML pipelines, the admin dashboard and the infrastructure underneath them.

Python, FastAPI, TypeScript, Terraform 36 commits since May Private repository

Visit Epoch Lag

printing

Parametric parts from a versioned component library.

build123d models that share a library of patterns, mechanisms and fasteners. One command builds a part, checks printability, exports STL, STEP and 3MF, renders it and compares its metrics with a golden record.

Python, build123d 56 commits since May Public

See the parts Source

redam94.github.io

This site.

An Astro blog with 29 essays on measurement, from adstock identification to sequential stopping, and the page you are reading.

Astro, TypeScript, Tailwind 66 commits since May Public

Read the blog Source

All fifteen, side by side

Every repository with a commit between 11 May and 11 November 2026, ordered by activity.

Repository What it is Built with Commits Last commit Visibility
modeling-api Platform for labelled multi-dimensional models Python, xarray, PyMC, TypeScript 1,215 19 Oct Public
mmm-framework Bayesian marketing mix modeling toolkit PyMC 6, FastAPI, React 423 11 Nov Private
axiom Bayesian causal decision science library Python, NumPyro, JAX 172 28 Aug Public
ump Draft standard for exchanging models and decisions JSON Schema, Pydantic, TypeScript 167 1 Nov Private
pymc-challenges Real-data Bayesian modeling challenges PyMC 6, ArviZ 1, Jupyter 79 6 Nov Public
redam94.github.io Blog and portfolio Astro, TypeScript 66 10 Nov Public
printing Parametric 3D-printable parts Python, build123d 56 7 Oct Public
second-brain Public research vault Markdown, Python 41 9 Nov Public
admin-dashboard Admin dashboard and ML pipelines for a client app Python, TypeScript, Terraform 36 21 Oct Private
double-ml-explainer Interactive explainer of double machine learning HTML, JavaScript 15 10 Nov Public
causal-vs-predictive-modeling Interactive guide to causal identification HTML, JavaScript 7 10 Nov Public
propensity-modeling Propensity scoring and brand lift analyzer Python, FastAPI, React 4 5 Nov Public
media-effectiveness-index Weekly leading indicator of media effectiveness Python, JavaScript 4 26 Oct Private
brand_voi_sim Value-of-information simulation for brand studies Python, NumPyro 1 31 Oct Private
latent_var State-space models for brand-tracker surveys PyMC, NumPyro, Streamlit 1 16 Oct Public

Earlier work

Projects from before May 2026.

  • Atlas Budget optimization over any predictive model, with multi-KPI objectives and business-rule constraints.
  • Haruspex Diagnostics-first wrapper around posterior fits, with convergence reports and prior-pushforward checks.
  • BayesInsight Hierarchical Bayesian models defined as JSON configuration instead of model code.
  • Bayesian Brand Tracker Hierarchical state-space model that pools weak weekly survey signal across geographies.
  • MMM Workflows Four agents for research, data preparation, Bayesian fitting and what-if scenarios.
  • Common Regression Issues A tour of the regression failure modes that show up most in marketing measurement.
The model exists to support a decision. If there's no decision, there's no model, only homework.

How I work

The work doesn't start with a model. It starts with a half-hour conversation about what the business is actually trying to decide. Everything after that follows the same six steps.

  1. Start with the decision, not the data.

    Before any modeling, get clear on what's actually being decided: the budget that'll move, the threshold someone has to cross, the trade-off on the table. The model exists to support that.

  2. Pre-specify the model. Then commit.

    Pick a likelihood, priors and identification strategy before you see the fit. Specification shopping is the fastest way to get an answer that flatters the brief and survives nothing.

  3. Validate the data first.

    Schema, coverage, zero-spend stretches, collinearity. Most modeling problems are upstream data problems. Most overconfident answers are too.

  4. Diagnose before reporting.

    R̂ below 1.01, ESS above 400, no divergent transitions. If diagnostics fail, the summary statistic is fiction, and a fiction shipped to a CFO is worse than no answer.

  5. Report what the data supports.

    Intervals, not point estimates. Sign uncertainty visible. "We don't know yet" is a complete sentence. Stakeholders adjust faster to honest ranges than to numbers that quietly move every quarter.

  6. Tie every number to a decision, or cut it.

    Posterior draws turn into expected ROI, the regret of cutting a channel, the probability a budget shift beats the status quo. If a chart doesn't change anyone's behavior, it's decoration.

Experience

MIT physics, then half a decade in measurement science. The throughline: take uncertainty seriously, write the model down first, ship code.

2024 to present

Senior Measurement Scientist, Choreograph (now WPP Media)

Built MMM and incrementality systems for portfolios in the high-eight-figure media-spend range. Owned methodology and fitting infrastructure.

2022 to 2024

Measurement and Modeling, EssenceMediacom

Hierarchical regression for brand health. Started the migration from frequentist regressions to fully Bayesian posteriors.

2012 to 2016

S.B. Physics, Massachusetts Institute of Technology

Undergraduate research on Stochastic Optical Reconstruction Microscopy: single-molecule localization, point-spread-function fitting and Bayesian deconvolution.

Three ways to work together

I take a small number of engagements at a time. Each one starts with the same question: what is the business trying to decide, and what would honest measurement of it look like? The conversation is free.

Decision framing

Two weeks. I sit with your marketing, finance and analytics leaders, map the decisions on the table, and write the measurement plan that would credibly support each one. Often the most valuable output is the model we agree not to build.

Build a measurement system

Six to twelve weeks: schema, ingest, Bayesian model, decision layer. You get the repository, the service and an analyst trained to run it. Every output ties back to a decision the business made up front.

Embedded statistician

A quarterly retainer alongside your in-house analytics team: methodology calls, code review, and the difficult conversations with stakeholders about what the posterior says and what it doesn't.

Tell me what you're trying to decide.

Send a short note about the decision on the table and what currently supports it. I'll tell you whether honest measurement can move it, or whether you should save the budget and buy your team lunch instead.

mattreda@mattreda.pro GitHub LinkedIn