Your first AI call has no cost guardrail. It doesn't need one — it's one request, you're testing, it's fine.

Then it ships. Retries stack up, a queue worker chews through a backlog overnight, one tenant sends ten times the traffic of everyone else combined, and nobody notices until the provider's invoice arrives at the end of the month. There was no point in the request lifecycle where anything could have said "stop."

laravel-ai-tasks builds that stopping point in, as a first-class part of the dispatch flow — not a report you check after the damage is done.

Two checks, not one

Checking budget only before the call isn't enough, because you don't know the real cost of a call until the provider replies with token usage. A tenant sitting $2 under budget can dispatch a request that costs $5 — a pre-flight-only check would let it through.