# The AI budget is spent

A spent AI budget stops new model work and nothing else. Stored data stays readable, inbound messages are still received and kept, and a person can still send by hand. On the phone the effect is visible immediately: outbound calls are not placed, and an inbound caller is answered, told the line is closed in the business's own voice, and recorded.

- **Status:** Available
- **Audience:** both
- **Channels:** phone
- **In the app:** #/calls, #/billing
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/troubleshooting/budget-exhausted/

## What the symptom looks like

Nothing new is drafted, nothing is decided, and calls stop working — while every screen keeps opening and every stored conversation keeps answering. That combination is the signature of a spend ceiling rather than an outage: an outage takes a channel away, and a budget takes the thinking away.

It is easy to mistake for a provider problem, because the outcome is similar. The distinguishing fact is that the provider is healthy and would have answered. The refusal is local arithmetic, made before anything is asked of anybody.

## What stops

- New outbound calls: the guard is asked before a call is placed, so nothing reaches the carrier.
- Answering inbound calls as a conversation: the guard is asked again before the model session opens.
- Model-dependent work on the guarded surface — the drafting, deciding and summarising that need a model call to happen at all.

The figure the guard uses is not an estimate of what a call will cost. It is what one call *could* cost if it ran to the full configured ceiling, both sides of the conversation at the audio rate — the only honest figure available before a word has been spoken. That is why a budget can refuse a call that would in practice have been short.

## What continues

- Everything already stored: conversations, calls, transcripts, summaries, files, knowledge, memory and the Data grid.
- Inbound mail and messages are still fetched and stored. Ingestion is metered against the plan, not against the AI budget, and it does not need a model to happen.
- A person's own actions: writing and sending by hand, editing a held draft, approving one, changing settings.
- Every screen, for both audiences. A spent budget is not an access change and takes nothing away from anybody.

> **Note** A guard that fails is treated as no guard at all: if the check itself cannot run, calls proceed. Turning a bug in the budget code into an outage for the business would be a worse failure than a call that happens when spending was tight.

## What Connect completed

- Every call and message that ran before the ceiling was reached is complete, metered and recorded — including calls that reported no tokens, which are charged from their own duration rather than at zero.
- A refused inbound call was answered, given the closed-line message, ended by the agent with a zero duration, and recorded with a summary saying the caller heard it.
- Every refusal carries its reason, so the record distinguishes a budget refusal from a switched-off line and from a call outside the line's hours.
- Line health surfaced the condition for a person rather than leaving it as an unexplained quiet spell.

## What Connect did not complete

- No conversation happened with a refused caller. They heard one sentence; nothing was gathered, promised or booked.
- No outbound call was placed, so no carrier minutes were spent and there is nothing to reconcile against the telephony account.
- No draft was written for the work that needed a model, so nothing is waiting half-finished.
- Nothing was silently downgraded — no cheaper model was substituted and no shortened conversation was attempted in place of the real one.

> **Careful** A refused caller is a real customer who rang and did not get an answer. The record makes them countable, which is the point: three refused calls in a morning is a business problem, not a line in a log.

## What you can do, and when to escalate

1. Confirm it is the budget and not the account, by checking whether the provider itself is refusing.
   - Result: A healthy provider plus refused work is a ceiling; a refusing provider is a different page.
2. Raise the ceiling deliberately, or let the period turn over.
   - Result: The guard's next answer changes immediately — nothing is cached and no restart is involved.
3. Look at the refused calls before deciding.
   - Result: Who rang and how often is the information that makes the spending decision an informed one rather than a reflex.

Escalate when the ceiling has been raised and calls are still refused for budget, or when the ledger and the refusals disagree — for example when calls are refused while the recorded spend is nowhere near the limit. Report the times of two refused calls and what the usage screen showed at each; there is no need for provider text.

## Questions

### Does a spent budget stop mail arriving?

No. Fetching and storing mail does not need a model call. What stops is the thinking that would normally follow — the triage, the drafting and the deciding — so the messages are there and unanswered rather than missing.

### What does a caller actually hear?

One short sentence, composed from the business's own persona, and then the line ends. The alternative it replaced was silence on an answered call, which a caller experiences as a business that picked up and ignored them.

### Is a refused call charged?

Only for the sentence, which is a fraction of a conversation. What it avoids is the whole call that would otherwise have run against an account that cannot pay for it.

## Related

- [The AI budget guard, end to end](https://connectbyjbrh.com/docs/workflows/budget-guard/)
- [The budget that stops a call](https://connectbyjbrh.com/docs/phone/voice-budget/)
- [The AI provider refused](https://connectbyjbrh.com/docs/troubleshooting/model-unavailable/)
- [What a call costs](https://connectbyjbrh.com/docs/phone/voice-cost/)
- [A call cost more than expected](https://connectbyjbrh.com/docs/troubleshooting/call-cost-surprise/)
- [Metering usage, end to end](https://connectbyjbrh.com/docs/workflows/usage-metering/)

## What this page is based on

- `backend/app/voice_engine.py` — budget_refusal, worst_case_usd and the recorded refusal
- docs-source/sources/PHONE.md §4 — cost, the spoken refusal and metering from duration
- `backend/app/metering.py` — ingestion is metered against the plan, not the AI budget
