How Geniemix works out what really drove your sales.

Plain answers first, the method behind them second. If you're the analyst on the team, each step ends with the technical version.

01 · What goes in

Just spend and sales, by day.

We read how much you spent on each channel and how much you sold, every day. Access is read-only, so we never change a campaign. No pixels, no clicks, nothing about your customers. A year of history works; two is better.

In technical terms

Daily totals are rolled up to weeks. One media variable per channel (weekly spend), one target (revenue or orders).

  • Google Ads
  • Meta
  • TikTok
  • Shopify
  • Stripe
What we read, by day
DaySpendSales
Mon$4.1k$21.3k
Tue$3.8k$19.9k
Wed$4.4k$23.0k

Sample workspace

02 · Sales you'd make anyway

First, the sales you'd make anyway.

Some sales happen without any ads: loyal customers, word of mouth, the season. We separate those out so channels only get credit for what they add on top.

In technical terms

The baseline is an intercept plus a smooth trend, yearly seasonality (Fourier terms) and holiday and promo controls.

  • Would have happened anyway$8.4M
  • Google Search$2.1M
  • Facebook Prospecting$1.2M
  • Instagram Prospecting$1.1M
  • Google PMax$820k
  • Others$1.2M

Sample workspace

03 · Ads keep working

An ad seen today can sell next week.

People don't always buy the day they see an ad. We learn how long each channel's effect lasts and how quickly it fades, so slow channels aren't undersold.

In technical terms

Geometric adstock per channel, with a maximum carryover of 8 weeks.

How one week's spend keeps selling. The effect of one week's spend is biggest that week and fades over the next weeks.

Sample workspace

04 · Every channel fills up

More spend works, until it doesn't.

The first dollars on a channel work hardest. Past a point, each extra dollar brings back less. We find that point for every channel; it's where the plan stops adding money.

In technical terms

A saturation curve per channel type: logistic by default, Hill where the data supports a slow start.

Sales rise with spend and flatten as a channel fills. The pin is this week's spend. Use the arrow keys to read each point.

Sample workspace

05 · Ranges, not guesses

Every number comes with a likely range.

We start from what's typical for each kind of channel, then let your data move it. The result isn't one number but a range, and we show it. When we're less sure, we say so.

In technical terms

Bayesian MMM (PyMC-Marketing). Priors come from a benchmark library by channel type. Sampling uses NumPyro NUTS: 4 chains × 1,000 draws after 1,000 tuning steps. Ranges are the posterior's 10th to 90th percentile.

  • Google Search2.40×–3.13×
  • Facebook Prospecting1.98×–2.73×
  • Google PMax1.79×–2.46×
  • Instagram Prospecting2.67×–3.68×

Sample workspace

06 · Checked on hidden weeks

We check it on weeks it hasn't seen.

Before you see any answer, we hide your most recent weeks from the model and ask it to predict them. You get a plain grade for how close it landed.

In technical terms

An 8-week holdout, refit on the remaining weeks. The forecast grade is Excellent when the holdout MAPE is 8% or less.

Sample model: Excellent

off by 0.1% on average on weeks it hadn't seen Use the arrow keys to read each point.

Sample workspace

07 · From model to plan

Then it finds a better split.

Give it your budget and your limits. It moves money to where the curves say it works harder, explains each change, and once you approve, tracks how the plan is doing.

In technical terms

Mixed-integer optimization (SCIP) over piecewise-linear versions of the fitted curves: same total budget, your per-channel minimums, maximums and locks.

Q4 plan
  1. Draft
  2. Approved
  3. Tracking
  4. Report

Share the plan as a PDF with your team or your agency.

+$409kin sales this quarter, on the same budget
Weekly budget split, today and recommended. The sample plan moves weekly budget between channels for about $409k more in sales this quarter.

Sample workspace

See what your budget is really doing.

We're onboarding a small group of brands. We reply within one working day.

Or look around the sample first