There is a quiet assumption in the AI-agents market that more thinking is better, and that the bill is the price of intelligence. For a platform that runs AI teams for thousands of small businesses, that assumption is expensive, and it is also wrong. Intelligence applied to an unchanged situation produces the same answer as yesterday, at the same cost, with no value delivered to anyone.
This is the story of a lean pass we ran in October 2026 on our own production ledger, what it found, and the four changes that came out of it. We share it because the pattern is not specific to us: anyone running scheduled or "proactive" AI agents is paying for the same idle thinking.
What a month of ledger actually showed
We log every model call with its task, model, token counts, cache share and whether a human was in the conversation. Over thirty days the picture was blunt:
- Almost every agent turn was unattended. Fewer than one in five hundred turns had a person on the other end. The rest were scheduled runs: the morning check, the hourly inbox sweep, the proactive "anything to propose?" pass.
- A small number of premium-model calls were half the bill. An enterprise-tier agent routed to the top model for every scheduled draft, because the router treated "might propose an action" as quality-sensitive regardless of whether a human was there.
- More than half of the scheduled calls over two weeks were duplicates. Several server processes each ran their own copy of the proactive sweep, so the same agent woke up three, six, nine times in the same minute and drafted the same thing.
- Hibernated apps still cost money. An app that was scaled to zero, or whose data surface was down, still got its agents run on schedule, and each run produced a polite "I cannot access the app's data".
- The customer-facing feature we were worried about, Growth, was a rounding error. Two small-model calls per plan; rendering the creatives uses no model at all.
None of this was a quality problem. The attended answers were fine. The waste was entirely in turns that no one would ever read.
Change one: an "unattended" rung in the model router
Our router picks a model from a task profile: the kind of task, the pre-flight risk, the owner's tier. We added one bit to that profile: unattended. A scheduled or loop turn, at low risk, that may draft a proposal takes the tier's ordinary model instead of its premium one. Attended chat, anything high or critical risk, and code tasks are untouched; the free tier already ran on the cheapest model and is unchanged.
The reasoning is simple. A draft proposal goes through a human approval before anything happens. The premium model's edge is in nuance a reader will notice; a scheduled draft that may be discarded unread does not need that edge. The route reason records the decision, so it is auditable.
Change two: a delta gate on scheduled tasks
Before a cron task runs an agent on an app, the scheduler now reads a no-LLM activity signal: order counts, booking counts, queue lengths, the same probe the proactive sweep already uses. If the signal is unchanged since the last run, the task is skipped and its schedule advanced. No model call, no draft.
The gate fails open everywhere it could do harm: goal-pursuing loops, workspace agents without an app, first runs, apps whose signal cannot be read, and any task that has not actually run for a day. So an hourly task on a quiet business runs once a day; a daily task still runs daily. An operator can switch the gate off with one flag.
Change three: one sweep, not nine
The duplicate sweeps were a topology problem. Each server process ran the proactive scheduler, and nothing coordinated them. The fix is old-fashioned: a database advisory lock lets one process sweep at a time, the per-app activity baseline is remembered on the app's own row so the next lock winner does not re-baseline with full runs, and an agent that the ledger shows ran within the last interval is skipped. Apps that cannot be read are remembered as unreadable and left alone until they answer again.
Everything in this change is deterministic and visible in logs: "another process is sweeping", "ran within the last 165 minutes, skipped", "app unchanged since the last run". If a number looks wrong, the reason is one line away.
Change four: do not coach an empty room
Our attended agents carry a conversation-coaching section in their system prompt: how to ask a clarifying question, when to summarise. An unattended turn has no one to coach. Dropping that section from scheduled prompts removes input tokens from the most frequent call we make, with no behavioural change anyone could observe.
What this means for the owner
Nothing the owner sees got cheaper-looking. Customer replies, approvals and briefings read the same. What changed is what happens in the background when the business is quiet: less, which is the correct amount. In practice the platform's monthly model bill fell to a fraction of what it was, and the saving is structural rather than a negotiated discount.
It also changed what we can afford to give away. Because the Growth feature's plan and copy cost so little, every owner, including free plans, gets a goal, a plan, copy and one full creative render per app. The paywall sits after the moment that shows the value, not before it. That is the lean approach to conversion: let the product sell itself with the cheap steps, charge for the ones that cost real compute or move real money.
A checklist for anyone running scheduled agents
- Log every call with "attended or not". If you cannot split your bill by that bit, you cannot see the waste.
- Route unattended, low-risk turns to the ordinary model. Keep the premium model for turns a human will read right away.
- Gate scheduled runs on a cheap change signal. Counts, timestamps, queue lengths. If nothing moved, skip, and fail open when unsure.
- Make sure only one process sweeps. A lock costs one query. Nine copies of the same draft cost nine model calls.
- Leave sleeping apps alone. Remember unreadable targets and do not retry them every hour.
- Trim prompts for the audience that is actually there. No human, no coaching section.
None of these steps need a smarter model. They need a ledger, a lock and the discipline to not think when nothing has changed.
Frequently asked questions
Does routing unattended agent turns to a cheaper model reduce the quality of customer replies?
No. The unattended rung only applies to scheduled or loop turns at low pre-flight risk, which produce drafts that go through human approval before anything happens. Attended chat, high and critical-risk turns and code tasks keep their original model. Customer-facing answers are unchanged.
What is a delta gate for AI agents?
A delta gate checks a cheap, non-AI signal of change on the business, such as order or booking counts, before running a scheduled agent. If the signal is unchanged since the last run, the run is skipped and rescheduled. It fails open for goal loops, first runs, unreadable signals and after a maximum skip window, so nothing important is silently dropped.
Why were scheduled agent calls duplicated?
Each server process ran its own copy of the proactive scheduler without coordination, so the same agent could wake up several times in the same minute. A database advisory lock now ensures a single process sweeps at a time, and a per-agent gap check skips agents that already ran within the interval.
How much does the Growth feature cost in AI usage?
Two small-model calls per plan, roughly a fraction of a cent, and no model usage at all for rendering the images and videos. That is why free plans include a goal, a plan, copy and one full creative render per app.