Before you trust it, read what it fits
Everyone in the building asks you for the same twelve regressions, and you write them at eleven at night because nobody else can. TEA runs them from a CSV and hands back the coefficients, the residuals and the assumptions. This page is the specification sheet, not the pitch.
- specification
- y = β0 + Σ βi·Hill(Adstock(xi; λi)) + trend + month + controls + ε
- estimator
- OLS in levels — geometric carryover, λ chosen by grid search; contributions additive by construction
- observations
- 104 weekly 2024-W01 → 2025-W52
- drivers
- 19 in 6 groups — baseline, media, promo, price, seasonality, controls
- fit
- R² 0.921 adj. R² 0.908 MAPE 6.4% Durbin–Watson 1.93
- returned
- per-coefficient table with SE, t, p-value and VIF · residuals vs fitted · contribution table (CSV) · narrative (PDF)
In beta, invitation-only. Places go out a few at a time — tell us what you would put through it first.
What is actually fitted
Twelve live modules, three more in development. Every one of them is an estimator you could have written yourself — which is the point: you can check it rather than believe it.
| Module | What it estimates | Method |
|---|---|---|
| Trend AnalysisFREE | Structural linear drift, with its confidence interval. | OLS on a time index |
| Baseline ForecastFREE | The business-as-usual path before any intervention. | Holt–Winters |
| Time SeriesPRO | Forecast plus the order the data asks for. | ARIMA / SARIMAX, grid search |
| Seasonality & EventsPRO | Recurring cycles and the size of one-off shocks. | decomposition + event dummies |
| Lag & CarryoverPRO | How long media keeps working after the flight. | geometric adstock, λ by grid |
| Saturation CurvesPRO | Diminishing returns per channel, and the knee. | Hill, Michaelis–Menten |
| Price ElasticityPRO | Own-price elasticity and the revenue-maximising side. | log–log OLS, rolling window |
| Promo ElasticityPRO | Incremental lift of a promotion, net of its depth. | semi-log OLS |
| Contribution DecompositionPLUS | Each driver's share of the KPI, week by week. | OLS / log–log / MMM |
| Base vs IncrementalPLUS | Baseline demand against marketing-driven uplift. | multivariate fit, trend + month |
| Cross-ElasticityPLUS | Whether a competitor's price move takes your volume. | log–log OLS, own + rival price |
| Budget OptimizationBUSINESS | The split that maximises modelled contribution. | constrained optimisation on the MMM fit |
What comes back with every fit
Diagnostics are not an appendix here. They are on the results page, next to the number somebody is about to present.
- FIT
- R², adjusted R², MAPE. 0.921 / 0.908 / 6.4% on the demo run above.
- RESIDUALS
- Durbin–Watson, plus the residuals-vs-fitted cloud, plotted rather than described.
- COEFFICIENTS
- Per driver: estimate, standard error, t, p-value and VIF.
- STATIONARITY
- ADF, KPSS and Phillips–Perron, with ACF and PACF, in the time-series modules.
- INTERVALS
- Elasticities carry a 95% confidence band, and a rolling-window estimate over time.
- THE TABLE
- The contribution matrix itself, as CSV. You can re-derive every chart from it.
The model is your choice, and it argues both sides
Where a module admits more than one specification, all of them are offered with what they cost you. Nothing is selected on your behalf, and the wizard says why one would be wrong for your data.
Linear with trend & seasonality
OLS, additive contributions
- Transparent and easy to defend
- Few assumptions, fast to fit
- Good first cut on clean data
- Ignores diminishing returns
- No carryover or adstock
- Can mis-credit overlapping channels
Log–log specification
multiplicative, elasticities readable
- Coefficients are elasticities
- Captures non-linear response
- Stable on percentage drivers
- Needs strictly positive variables
- Less intuitive for non-experts
- Outliers bite harder
MMM with adstock & saturation
full media dynamics
- Models carryover and saturation
- Best-in-class for media attribution
- Feeds budget optimization
- Needs more data and care
- Slower to fit and tune
- Diagnostics require interpretation
What the file has to contain
One table. A date column, the KPI, and the drivers you want attributed. Nothing is joined for you, and nothing needs a connector.
- FORMATSCSV or Excel. Dates are parsed rather than prescribed — weekly, monthly or daily.
- MAPPINGColumns are proposed and you confirm them. A template with the exact schema is downloadable per module, blank or filled with a worked example.
- SAMPLESSix industries ship with the product — grocery retail, logistics, merchandising, app downloads, a drinks brand, a film festival — so you can test the method before you hand over anything of your own.
- SIZEBuilt for the shape a planning team actually has: two to five years of weekly rows, tens of drivers. Not a warehouse.
What happens to the file afterwards
The question you will be asked by whoever owns the data, so here it is answered first.
- RETENTIONThe upload is deleted when the analysis ends. Idle datasets are swept automatically; nothing accumulates.
- TRAININGYour data is never used to train anything. There is no model that learns across customers — every fit is estimated on your rows and thrown away with them.
- WHAT PERSISTSThe result you chose to keep, and the record of what it cost. Not the input.
- EXPORTThe contribution table as CSV, the narrative as PDF, the charts as an editable deck. Nothing is locked in the page.
What it will not do
Written down because you would have found it in week two anyway, and because a tool that will not say this is a tool you should not trust.
It does not replace a bespoke MMM engagement. Where you need a hierarchical model, a custom prior, or a geo panel with its own structure, you need a modelling project. TEA covers the ninety per cent of questions that never justify one.
A pooled fit has no segment dummies. When you fit across segments, the average level you get back is the elasticity the page will publish. Where that matters, the segment breakdown is a separate estimate, not a slice of the same one.
Collinear regressors still bite. A competitor price derived from your own will invert the sign, and the diagnostics will tell you — VIF is on the coefficient table for exactly this reason.
Harmonically related cycles do not separate. Media plans built on 13, 26 and 52-week periods are not identifiable against each other; the optimiser will report no return on half the channels, and it will be right to.
You pay for compute, not for seats
A run is billed on the time the server actually spends on it, measured server-side and shown to you while it runs. Demo datasets and our own samples cost nothing — you can test the whole catalogue before spending a token.
- FREE€0 — 300 tokens on signup, no card. Trend and baseline.
- PRO€19.99/mo — forecasting, seasonality, saturation, elasticities. 50% more compute per token.
- PLUS€59.99/mo — decomposition, incrementality, competitor elasticity. 2.5× the compute per token.
- BUSINESS€269.99/mo — up to six people on a shared pool, budget optimization, 5× the compute per token.
Free while we are in beta. Those are the prices at full service. A place in the beta costs nothing: the plan that comes with it is granted, not bought, and there is no card to enter.
Stop being the queue
TEA is in beta and invitation-only while we grow it deliberately. Tell us who you are and what you would put through it first.