Convention before code
Agreeing what each funnel stage means, with people, before anything is built. It is the least technical part of the work and the one that decides whether the rest is possible.
Nobody joins them properly, and until they are joined the decision about where to put the money is taken with half the information. This laboratory works on that seam.
A campaign produces data in one system and money in another. Cost per lead is visible and arrives in minutes; revenue per lead is invisible and arrives in weeks. Decisions get made on the first because it is the one that is there.
The consequence is optimising against the wrong metric: scaling the campaign that brings cheap contacts who never close, and switching off the one that sustains the quarter. We study how to reconcile both sides when the join is imperfect, and which predictions survive that imperfection.
Our working conclusion so far is unglamorous: the obstacle is not dirty data, it is the absence of convention. Two accounts naming the same funnel stage differently make any comparison impossible, and no model repairs that.
The sector sells dashboards. A dashboard shows what was already known in more colours, which is why report consumption falls to zero within months. The prior question goes unanswered: if two systems share no convention, any figure joining them is a well-typeset coincidence.
So the work starts by establishing how much the join withstands and which predictions survive its failures, and only then builds. It is also the domain where self-deception is easiest: almost any model produces a number, and the number always looks reasonable until it is checked against invoicing.
Agreeing what each funnel stage means, with people, before anything is built. It is the least technical part of the work and the one that decides whether the rest is possible.
Most projects begin by asking for a live dashboard. What actually changes decisions is twelve well-reconciled months behind you, because that is what separates a real drop from ordinary seasonality.
Report consumption tends to zero over time. What still gets read months later is what arrives on its own when there is something to decide — and only if it is almost never wrong.
Unifies advertising spend and the commercial journey for several client accounts under one structure, so the only question that matters can be answered: which euro spent produced which euro invoiced.
A dedicated service watches the time series for spend, conversions, cost per click, click-through rate and incoming contacts. For each point it returns the value it expected, how many standard deviations the real value sits from it, and in which direction.
The difference from a threshold alert is that the threshold is set by that account's own history rather than by a number written by hand. Sensitivity is adjustable, because an agency that receives false alerts stops reading them within two weeks.
Estimating the probable value of a contact from early behaviour, and predicting when a creative will stop performing from its own decay curve. Both are the highest-value questions in the domain and both are blocked by the same thing: they need a complete, clean funnel journey to exist first. That is why the work always starts with reconciliation.