# What Connect decides on its own

Connect decides what to work on first, what an arriving message is about, what a reply should say, when to follow up and on which channel, how much research a prospect is worth, and when to stop and refuse. Around each of those sits a gate written in ordinary code and database rules, which the model never gets a vote in.

- **Status:** Available
- **Audience:** both
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/product/what-connect-decides/

## The decision surface

| Decision | What Connect does | What bounds it |
|---|---|---|
| What matters first | Ranks arriving threads and calls, and picks the next piece of work from that ranking | A person's correction to a priority is read by the engine, so changing it changes what happens next. |
| What this is about | Classifies intent and topic before anything is drafted | The classification chooses which gates apply. It never decides whether a gate applies. |
| What to say | Drafts a reply grounded in Knowledge, Memory and the relationship's own history | An answer the sources do not support is refused rather than improvised. |
| Whether it may go now | Asks one decision function, on every channel | Three questions in a fixed order, and any gate that trips sends the item for approval. |
| When to come back | Creates a dated follow-up carrying the reason it exists | A promise made on a call becomes a commitment with a due time, not a note. |
| Which channel to use | Chooses where a follow-up belongs, given what the relationship uses | Suppression, opt-out and per-channel modes are checked before a channel is chosen. |
| Whether a prospect is worth contacting | Researches, scores and records the evidence for a verdict | No address is ever guessed; a prospect with none is kept as research, with a different next action. |
| How much research to buy | Routes a deeper, dearer pass only where it can change a decision | The workspace's budget, not the ambition of the question. |
| When to stop | Refuses, records why, and raises the item for a person | A refusal is a decision and is written to the trail like any other. |

## Three questions, always in this order

1. **May Connect do this at all?** A channel that is off, a topic the workspace has blocked, a spend cap already reached — each of these is refused outright.
2. **Must a person approve it?** Draft-only and ask-before-send never release a message on their own, whatever it says.
3. **May it go now?** Only in autonomous mode, and only when no gate has tripped.

The order carries the meaning. A blocked topic is not something to ask permission for — asking would imply the answer could be yes. So the first question produces a refusal rather than a request, and nothing is queued for a person who was never going to be allowed to say yes.

## Specific beats general

Rules resolve from the narrowest scope outwards: a rule about one contact beats a rule about one mailbox or one number, which beats a rule about the channel, which beats the workspace default. That precedence is what makes "autonomous everywhere except this one account" expressible at all, and it is the same hierarchy memory uses, deliberately, so a business does not have to learn two vocabularies for the same idea.

## Autonomy is a ceiling, not a floor

Setting a channel to autonomous does not switch the gates off. It says: within these gates, act. Anything that touches a price, a guarantee, a refund or a contract still stops, because those gates are separate from the mode. There is deliberately no setting that means send anything — a workspace that wanted one would have got it by accident.

> **Careful** Silence is not consent. When an approval request goes unanswered it expires; a workspace may opt into sending on timeout for low-risk categories, and that option is refused for anything held because it touched money, law or a commitment.

## Every decision leaves a record

Each decision is written with its outcome, the reasons that produced it and the rule that applied. That is what makes "why did Connect send that?" — and the more common "why did it not?" — answerable months later without reconstructing anything. The reasons are written in the same plain sentences the queue shows a person, so the log and the screen cannot drift apart.

The [decision log](/docs/autonomy/audit-trail/) holds refusals as well as actions, and holds them whether the outcome was sent, held, refused or expired.

## The other half of this page

Everything above is what Connect settles on its own. The decisions it never settles — and the reason each one is reserved — are enumerated in [What a person always decides](/docs/product/what-a-person-decides/). The two lists are meant to be read together; between them they are the whole surface.

## Questions

### Does the AI model decide what is permitted?

No. The model classifies and drafts. Whether an action may happen is decided by the autonomy rules, which are ordinary code and database rows, so the answer does not change because a prompt was worded differently.

### Can Connect act while nobody is watching?

On a channel set to autonomous, yes, inside the gates. On draft-only or ask-before-send, no outbound message leaves without a person, whatever the hour.

### What happens when two rules disagree?

The narrower scope wins — contact over endpoint, endpoint over channel, channel over workspace — and the decision records which rule applied, so a surprising outcome can be traced to the rule that caused it.

## Related

- [What a person always decides](https://connectbyjbrh.com/docs/product/what-a-person-decides/)
- [The four autonomy modes](https://connectbyjbrh.com/docs/autonomy/modes/)
- [The gates that always apply](https://connectbyjbrh.com/docs/autonomy/explicit-gates/)
- [How Connect works](https://connectbyjbrh.com/docs/product/how-connect-works/)
- [The decision log](https://connectbyjbrh.com/docs/autonomy/audit-trail/)
- [One product, two audiences](https://connectbyjbrh.com/docs/product/owner-and-customer/)

## What this page is based on

- `backend/app/autonomy.py` — modes, scope order, gates and `decide()`
- AGENTS.md §9b — the scope hierarchy shared with memory
- `backend/app/safe_sales.py` — the topics that always stop
