Curvas de resposta: TikTok e Facebook seguem uma função Hill (saturação côncava), com `maxContribution` calibrado a partir do ROI marginal publicado no MMM real, no ponto de investimento médio observado. Google Ads é modelado como retorno linear constante (1,26x), porque o dataset original não teve variação de investimento suficiente pra detectar uma curva de saturação confiável nesse canal — uma limitação herdada e documentada, não corrigida aqui.
Otimizador: implementado em JavaScript via busca por "preço-sombra" (water-filling) — o algoritmo encontra o nível de retorno marginal em que investir mais em qualquer canal deixa de compensar, e aloca até esse ponto em cada um, respeitando os tetos quando o modo restrito está ativo. Matematicamente equivalente ao resultado do `scipy.optimize.minimize` (SLSQP) usado nos notebooks reais.
Modo restrito: nenhum canal pode ultrapassar o maior investimento já observado no dataset original do MMM (TikTok até £20.000, Facebook até £8.000, Google até £3.000) — o mesmo teto de evidência do notebook 03.
"Ganho vs. manter a mesma proporção de hoje": compara a contribuição da alocação otimizada com a contribuição de simplesmente escalar a proporção atual (54,5% TikTok / 30,0% Facebook / 15,5% Google) pro novo orçamento total, sem otimizar nada.