Procurement facts on one page. If you are deciding whether to adopt this framework, everything you need to weigh—license, maturity, maintainership, evidence, and limitations—is below, stated plainly. Where a claim is measured, we link the measurement; where the honest answer is unflattering, we say so anyway.
| License | Apache-2.0 (LICENSE at the repository root). Permissive: commercial use, modification, redistribution, and forking are all allowed, with an explicit patent grant. |
| Version | 0.2.0 (Beta) — in development since December 2025; first published to PyPI as 0.1.0 in June 2026. Pre-1.0: expect API changes on non-stable modules. See the versioning & changelog page. |
| Packaging | On PyPI: pip install mmm-framework. Pin an exact version for production use (mmm-framework==0.2.0). Source install (git clone + uv sync) remains the development path. |
| Maintainer | Matthew Reda, solo maintainer. This is a real risk; see Team & sustainability for what mitigates it. |
| Support | GitHub issues. No SLA. No commercial support contract is currently offered. |
| Requirements | Python 3.12+. Core stack: PyMC 6.0+ (PyTensor 3, ArviZ 1.x), NumPyro, FastAPI backend, React frontend. |
| Test suite | 3,751 passing tests (3,587 fast + 164 slow incl. real MCMC fits, measured 2026-07-06 on the PyMC 6 stack). |
| Governance | Single-maintainer project; changes land via GitHub. No foundation, no steering committee—the fork-ability of Apache-2.0 is the governance backstop. |
The framework is pre-1.0 and says so. Different modules have matured at different rates, and the changelog page maintains the authoritative tier list. In summary:
BayesianMMM, results classes, the fluent builders, Pydantic configs, the adstock/saturation/seasonality/trend transforms, and the MFF data loader.
Until 1.0, minor versions (0.x.0) may break experimental modules; stable APIs are preserved on a best-effort basis with deprecation warnings. After 1.0 the project commits to strict SemVer.
There is no promised ship date. 1.0 happens when a specific criterion is met: stabilizing the Beta-tier APIs. (PyPI publication, the other original criterion, happened at 0.1.0.) Until then, pin an exact release for production use: pip install mmm-framework==0.2.0.
The marketing for most MMM tools is assertion. This project's policy is that every quantitative claim on the docs site traces to a seeded, re-runnable notebook—so any number you read can be re-derived by re-baking the notebook, not taken on trust. The four proof assets an evaluator should weigh:
nbs/validation/runtime_benchmark.ipynb; full scaling table in the technical guide's Computational Scaling section. Absolute seconds are machine-specific; treat the ratios as the transferable part.
nbs/validation/pinkham_real_data.ipynb.
The methodology itself is documented in prose—the technical guide and the mathematics series—rather than living only in code, so it can be audited without reading the source.
This framework is built and maintained by one person: Matthew Reda. That is the single largest risk in adopting it, and you should weigh it as such. If the maintainer is unavailable, there is no team to pick up the work. We are not going to spin that.
What genuinely mitigates the bus factor:
If your procurement process requires a vendor with an organization behind it, this project does not currently meet that bar. If it requires software your own team can own, audit, and extend, the items above are designed for exactly that.
The framework is self-hosted: a Python library, a FastAPI agent backend that runs model fits in-process (no Redis or worker required), and a React frontend that you run on your own infrastructure. (Redis and an ARQ worker are needed only by the deprecated legacy Streamlit REST API; Redis is otherwise an optional shared rate-limit backend that defaults to in-memory.) There is no hosted SaaS offering, which means no client data leaves your environment by default.
The AI agent workspace introduces an LLM data flow that deserves separate scrutiny—which provider sees what, sandboxing of agent-executed code, and the configuration options (including fully local models via LM Studio). That is covered on the dedicated security page rather than duplicated here.
Input data uses the MFF (Master Flat File) long format, loaded and validated by MFFLoader. The practical floor and the recommended shape of the data—granularity, history length, channel coverage—are documented on the data requirements page. Short version: 104+ weeks of weekly data is the comfortable starting point.
Runtime is measured, not estimated: the reference production-size national fit completes in ~15 s on a laptop (see Computational Scaling), geo panels scale sub-linearly per row, and the extension models stay in the same runtime ballpark as the core model. Model iteration speed is not a procurement risk here.
Read the pressure-testing scorecard first, including the failure column—a tool that publishes where it breaks is showing you its actual epistemics. Then the forecast backtest for out-of-sample honesty, and skim Aurora 05 to see the full workflow end to end.
Do the 30-minute pass, then pip install mmm-framework and follow the quickstart: fit a first model on synthetic data with known ground truth, and check the estimates against the answer key yourself. If you want to stress the evidence, clone the repository and re-run nbs/validation/runtime_benchmark.ipynb on your own hardware and compare.
Evaluating it as the engine of a consulting practice? See the 10–12 week engagement timeline and the full set of printable consultant artifacts (checklists, pre-registration memo, executive summary template) the framework generates.
mmm-framework==0.2.0) for anything production-facing and read the release notes before upgrading — 0.2.0 itself moved the core stack to PyMC 6.vary_media_by_geo hierarchy or a per-geography refit). (Two former headline findings were since resolved: the legacy blend adstock underperforming the parametric path—fixed by making parametric adstock the default—and the holdout-validation saturation fallback for Hill-fit models.) See known strengths & weaknesses.None of these are hidden in fine print elsewhere—this list is the fine print, on purpose. If any item is disqualifying for your context, better to know now.
Open an issue, read the methodology, or get in touch directly via the about page.