This guide walks you through the complete Simba workflow, from signing up to interpreting your first optimized budget recommendation. By the end, you will have a working Bayesian marketing mix model with actionable channel-level insights.

Time required: Most users complete their first model run within a few hours. The actual computation takes minutes; the majority of your time will be spent reviewing data and results.
Before you start: Make sure you have prepared your data as a CSV with date, media spend, and a target KPI column (weekly or daily granularity). Need a refresher on what Simba does? Read What is Simba? first.
For detailed information about plans, projects, and team setup, see Account Setup.
Simba expects a time-series dataset in CSV format with:
tv_spend, paid_search_spend, social_impressions)revenue, conversions, leads)price, promotions, seasonality_flag, competitor_activity)A clean dataset with 1 to 3 years of weekly data is ideal for most use cases. See Data Preparation for a full guide on formatting, granularity, and common pitfalls.
Tip: Name your CSV columns clearly (e.g.,
paid_search_spendrather thanchannel_3). Simba uses column names in all charts and reports.
Before building a model, Simba’s Data Validator automatically reviews your dataset. This step is part of the Audit phase of the Simba workflow.
The auditor checks for:
You will receive a clear audit report with a health score and specific recommendations. Address any critical issues before proceeding. Many issues can be resolved directly in Simba’s data preparation tools.
Read more: Data Validator
This is the Measure phase. Simba needs to know how to model the relationship between your marketing channels and your KPI. There are three key configuration areas:
Priors express what you believe about each channel’s effect before seeing the data. For example, you might believe that TV has a positive but uncertain effect on revenue. Simba lets you set prior distributions through the UI — no code needed.
Smart Defaults: Simba auto-generates sensible priors from your historical data. For your first model, we recommend starting with the smart defaults and refining later. This gets you to results quickly while maintaining statistical validity.
| Read more: Setting Priors | Smart Defaults |
Marketing does not always have an immediate effect. A TV ad aired on Monday may drive searches and conversions throughout the week. Adstock parameters control how each channel’s effect decays over time. Simba provides geometric and delayed adstock options, configurable per channel via the UI.
Smart defaults will suggest appropriate adstock settings based on channel type and your data patterns.
Read more: Adstock Settings
At some point, spending more on a channel yields diminishing returns. Saturation curves model this effect. Simba uses the tanh saturation function, configurable per channel.
Smart defaults estimate saturation parameters from the observed spend ranges in your data.
Read more: Saturation Curves
Once you are satisfied with your configuration (or have accepted the smart defaults):
When the model finishes, you will land on the Active Model page. Here is what to look at first:
The channel contribution chart shows how much each marketing channel (and baseline/control factors) contributed to your KPI over the modeled period. Unlike deterministic tools, Simba shows you 94% credible intervals (HDI) — the range of plausible contribution values — not just a single number.
Simba calculates the posterior ROAS for each channel, telling you how much KPI return you get for each unit of spend. Channels with wide 94% credible intervals (HDI) have more uncertainty — this is honest reporting, not a flaw.
Visualize how each channel’s effect decays over time (adstock) and how it responds to increased spend (saturation). These curves are essential for understanding channel dynamics.
Check the model fit, convergence diagnostics, and posterior predictive checks. These tell you whether the model adequately captures your data patterns. Simba highlights any issues and provides plain-language explanations.
| Read more: Interpreting Results | Model Diagnostics |
With a fitted model, move to the Predict phase. Scenario Planning lets you simulate changes to your budget and see the predicted impact:
This is where Simba moves beyond measurement into decision support. You can test hypotheses before committing real budget.
Read more: Scenario Planning
The final step is the Optimize phase. Budget Optimizer automatically finds the best allocation:
The optimization is grounded in the full posterior distribution of your Bayesian model, meaning it accounts for uncertainty in channel effects rather than optimizing against a single point estimate.
Read more: Budget Optimization
Congratulations — you have built, interpreted, and optimized your first Bayesian marketing mix model. Here are recommended next steps:
| Issue | Solution |
|---|---|
| Data upload fails | Check that your file is a valid CSV with a header row and is under 10 MB. Excel (.xlsx) is not supported. See Data Requirements. |
| Data Validator flags critical issues | Address the flagged issues in your data before running the model. The audit report includes specific guidance for each category. |
| Model takes too long | Large datasets or complex configurations increase run time. Try reducing the number of channels, using weekly instead of daily data, or disabling seasonality/trend. |
| Model status “Failed” | Check the error message. Common causes: too few observations for the number of parameters, conflicting priors (e.g., very tight priors that disagree with data), or data quality issues the validator didn’t catch. Fix the underlying issue and re-run. |
| Model status “Time Exceeded” | The model exceeded maximum computation time. Simplify by reducing channels, using weekly data, or turning off optional features (seasonality, trend, weekly seasonality). |
| R-hat warnings (> 1.1) | The model did not fully converge. Try increasing the number of MCMC samples, simplifying the model (fewer channels, simpler priors), or checking for multicollinearity in your data. See Measurement diagnostics. |
| Optimizer returns current allocation unchanged | Channels may already be near-optimal, or per-channel constraints are too tight. Try widening the min/max bounds in the constraint step. |
| Poor model fit | Review diagnostics and consider adding control variables, adjusting priors, or checking data quality. A poor fit often means the model is missing an important driver (seasonality, promotions, competitor activity). See Model Diagnostics. |
| Results seem unreasonable | Check your priors and data. Common causes: overly vague priors allowing unrealistic coefficients, missing control variables that inflate channel credit, or data errors. See Setting Priors. |
For additional help, open a GitHub issue or email info@pymc-labs.com.