What to send us

Everything Galileo needs to build your marketing mix model — a single weekly spreadsheet — and, just as importantly, everything you don't have to gather. No dashboards, no data-warehouse access, no customer data.

One file

A weekly spreadsheet, one row per week

Export it as a .csv and send it over. That's the whole ask.

26 weeks minimum52 better104 ideal 3 channels minimum · 5–8 is the sweet spot

Schema

The columns, in one place

Channel names are yours to choose. A few names are reserved so Galileo knows what a column means — the date, the outcome, and the two event markers must use a recognized name (a misnamed promo_depth gets read as a spend channel). And the rule of thumb for what to include: send the events only you know — promotions and stockouts; leave out holidays and seasonality, which Galileo derives and models itself.

Column
Required?
Value & example
Week — name it date, week, or week_start
Required
One row per week; any consistent date format. 2026-03-02
Outcome — name it revenue (or sales / orders / conversions / sessions / clicks)
Required
One number per week — money for revenue, a count for the rest. Numbers only. 184200
Channel spendany name you like, e.g. google_search meta_ads tv direct_mail
Required
Weekly spend, same currency as the outcome; 0 for weeks with none. 3+ channels. 22500
Sub-channelany name, e.g. youtube_video youtube_shorts brand_search
Optional
Just another channel column. Split one out only if its spend moves independently. 8000
promo_depthexact name
Optional
01 per week (0.2 = 20% off), or 0/1 if you only know a promo ran. 0.2
stockoutexact name
Optional
0 or 1 per week; 1 = a key product was out of stock. 1
holiday / seasonality
Don't send
Galileo derives holidays from the calendar and models seasonality — these are rejected if supplied.

Your call

What the outcome measures — and what comes back

Tell us how to read the outcome column; the model adapts, and it's honest about the limits.

revenue

Model-based ROAS, marginal-return estimates, and budget scenarios, subject to the credibility assessment.

ordersconversions

Model-estimated cost per additional order or conversion and outcome-specific allocation scenarios. No revenue or ROAS claim is made when the outcome is not monetary.

sessionsclicks

A traffic-response model showing how traffic varied with channel spend and where the fitted response saturates. No financial budget recommendations are produced from a traffic-only outcome.

Granularity

Channels and sub-channels

A "channel" is just any spend column you want a separate answer for — so sub-channels are channels. Break them out into their own columns whenever you want per-sub-channel guidance:

Online, offline, or owned — each can receive a separate model estimate when its activity has meaningful independent variation. Otherwise, Galileo flags that the effects cannot be separated.

google_search google_shopping youtube_video youtube_shorts meta_feed meta_reels

One catch worth knowing: the model can only separate two sub-channels if their spend varies independently over time. If YouTube Video and Shorts budgets always move together, they're mathematically inseparable — and Galileo will say so rather than invent a split. Same for a sub-channel too small to leave a trace.

A common case: if Instagram, Facebook, and Reels all come out of one Meta budget (Advantage+ picks the placements for you), keep them as a single meta column — Galileo can’t separate placements you didn’t budget apart, and it says so. Split them only if you set and vary those budgets yourself.

Rule of thumb: split a sub-channel out only if it has meaningful spend and some independent movement. Otherwise, combine them — the report tells you when you've sliced too fine.

Scope

Multiple products, personalized ads

Galileo models at the business or product scope represented by the outcome column. It estimates channel-level relationships and contributions under the model; it does not identify product, creative, placement, or audience effects unless the input contains independently varying data at that level.

Content and personalization choices are reflected jointly in the channel history. A higher fitted channel response does not establish which particular creative or targeting choice caused it.

Model a product separately only when it has its own spend and outcome history. Use a controlled experiment when the question is whether a particular personalization or creative treatment produced lift.

Optional

Currency, and things that sharpen it

Currency: USD EUR GBP INR BRL MXN AED SGD HKD — a label for how money is shown; the model itself is currency-agnostic.

Optional event markers, only if you already have them — none is required:

  • promo_depth — 0–1 per week (0.2 = 20% off), or 0/1 for “a promo ran”.
  • stockout — 1 the weeks a key product was out of stock, else 0.

These enter as linear event controls. Honestly: at typical sample sizes their effect is modest, and promo handling is a known limitation we don’t yet claim removes bias — so include them if handy, but the audit runs fully on the weekly file alone. Richer context — seasonality, past lift studies, channel pauses — is captured in the optional interview, each checked against the data before it can affect the model.

The good part

What you don't need to send

  • No channel-by-channel attribution. You provide one total outcome. Galileo estimates channel-level contributions under its stated assumptions and reports when the data cannot separate them.
  • No holiday or seasonality data. The model derives seasonality itself.
  • No customer or personal data. Weekly totals only — nothing at the individual level.
  • No pixels, tags, or platform access. Just the spreadsheet.

Example

A week looks like this

weekly_spend.csvrevenue · USD
date,revenue,google_search,meta_feed,meta_reels,tv_ctv,email_sms
2025-01-06,412900,38000,41000,11000,90000,6000
2025-01-13,398500,36500,38000,12500,90000,6500
2025-01-20,431200,41000,40000,14500,90000,6000
…

Here meta_feed and meta_reels are one platform split into two columns — worth doing because their weekly budgets move independently. If they moved together, you'd send a single meta column instead.

Sending it

How to get it to us

Email the CSV to anjan@smartinfer.ai, or upload it in the app once your pilot access is set up — we do that on the call. No portal, no integration: a spreadsheet is the whole handoff.

If the data can't support a confident answer, the report tells you so — plainly, with the reason. That's the product working as designed, not a failure.

Not sure a column counts? Send what you have — we'll sort it out together.

Book a call