Nebo · tutorial 05 · win customers
Buy attention without lighting money on fire
A daily reallocation recommendation with the numbers behind it, and every budget left exactly where you put it.
Paid acquisition punishes inattention. Campaigns drift, a winning ad fatigues, and the money keeps going out at the same rate. An employee that reads the numbers every morning catches drift days earlier than a weekly review, without ever being trusted to spend.
Steps
Give it the target before the data
A recommendation is meaningless without a target to recommend against. Put your monthly budget and your target cost per acquisition in the persona as numbers, and update them when they change.
Specific thresholds turn a vague "this looks bad" into a consistent judgement you can compare week to week.
Connect the platforms, read-only
Ad accounts, analytics, and wherever conversions actually land. In Controls, set
every budget and campaign write to blocked. Not gated — blocked. This
role recommends; a human spends.
Pull the numbers deterministically
Spend figures are data, and data must not pass through a model on its way to your
screen. Pull the report with a command node and let the model reason
over the file it produced.
A model summarising a spend report will occasionally transpose a figure or attribute one campaign's conversions to another. You will act on that number. Fetching deterministically means the numbers in the recommendation are the numbers in the account, and only the interpretation is generated.
Ask for the recommendation and the draft
Schedule by campaign phase
Daily during a launch, weekly once things are stable. Two triggers on the same employee is fine; turn off the one you are not using rather than editing cron expressions back and forth.
Set the gate
Every budget change, every pause, and every new campaign, permanently. Ad spend is money, so it inherits the money gate and it is marked critical: no global convenience setting can loosen it, and that is deliberate. The recommendation is the product here. Acting on it is your job, and it takes ninety seconds.
Verify
- Cross-check every figure in the first report against the ad platform by hand
- Confirm the CPA calculation matches how you calculate it, including whether it counts trials
- Confirm no budget changed after a run
- Check it flags a fatiguing ad before you would have noticed
When it goes wrong
The numbers do not match the platform
Attribution window, almost always. The platform's default window differs from your analytics. State the window explicitly in the persona and have it report which one it used.
It recommends the same reallocation every day
You are not acting on it, or it is not seeing that you did. If you make changes manually, it needs to read current budgets each run rather than remembering yesterday's.
It panics about normal daily variance
Your thresholds are missing a duration. "Above target" should be "above target sustained over seven days" or you will get a fire alarm every Monday.