# Making a next-best-action defensible

A recommendation with nothing behind it is a guess wearing a confident interface. What makes `next_best_action` usable is not ranking quality but attribution: which record it concerns, what evidence supports it, which rule produced it, and what a person can do about it in one move. A suggestion missing any of the four is noise on a screen somebody has to clear.

- **Status:** Available
- **Audience:** both
- **In the app:** #/home, #/needs-you
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/research/evidence-for-next-action/

## Four things, and a recommendation needs all of them

****The record**** — One person, thread, opportunity or case — not a segment. A recommendation about a category cannot be acted on or dismissed.
****The evidence**** — What is true that makes this the next thing: a reply that arrived, a commitment that came due, a case that has been open too long.
****The rule**** — Why that evidence implies this action. A rule can be disagreed with; a score cannot.
****The act**** — The thing a person does next, available where the recommendation is shown.

Most recommendation surfaces carry the first and the fourth. The two in the middle are what decide whether anybody keeps using it after a fortnight, because a person who cannot see why a suggestion was made has only two strategies available — follow all of them, or ignore all of them — and both are worse than a list they never had.

## Where the evidence has to come from

The Assistant's read-only tools are the supply: `customer_360` for one person's whole history, `activity` for what has happened, `list_followups`, `list_cases` and `list_opportunities` for outstanding commitments, `recall` for memory, `search_knowledge` for grounded facts, `find_anything` for the rest. A recommendation assembled from those can name its own sources.

One specific correction is worth stating because it is a common shortcut: the screen context the model is given is **checked against the database before it is trusted**. A recommendation derived from what the interface happened to be displaying inherits every staleness and every filter in that view, and reads exactly like one derived from the record.

> **Note** The same discipline as prospecting evidence applies here — a claim with nothing behind it does not reach the record, so it cannot arrive in a recommendation either.

## The rule must be nameable

The audit trail records what was decided, by what, under which rule, and what happened — including refusals, because a refusal is a decision. That is the same requirement pointed at recommendations: an action proposed under a rule nobody can name is unreviewable, and unreviewable suggestions accumulate until the surface is abandoned.

Naming the rule also makes disagreement productive. *This is here because the customer replied four days ago and nothing has gone back* invites a correction to the rule or to the record. A confidence score invites nothing at all.

## A recommendation is not a permission

Proposing and acting stay separate. Autonomy decides what may happen without asking, at four scopes with the narrowest winning, and Needs You is the queue of decisions ranked rather than ordered by arrival — so the fact that something is recommended does not move it past the gate that governs sending.

| Stage | What exists | What is required |
|---|---|---|
| Recommendation | Record, evidence, rule, available act | Nothing — it is a suggestion |
| Person acts | The act runs through the owning service | Their own permission on that channel |
| Connect acts | The same service, the same boundary | The autonomy mode at the narrowest applicable scope |
| Either way | An audit entry naming the decision and the rule | Recorded whether it succeeded, was held or was refused |

## How a recommendation goes bad

- **It goes stale.** The thread moved on and the suggested reply now answers an older message — visible as a held draft going stale, and the same risk applies to any queued suggestion.
- **Everything looks equally urgent.** Ranking without a stated reason converges on recency, and recency is not priority. `threads.priority` is read by the engine when it picks work, so correcting it changes behaviour rather than re-sorting a list.
- **The evidence is a summary of a summary.** Each layer of paraphrase makes the claim harder to check and easier to believe.
- **No measured effect.** Whether recommendations improve outcomes here is UNKNOWN; what is checkable today is whether each one can name its four parts.

## Questions

### Is a confidence score not evidence?

It is a summary of evidence with the evidence removed. Two suggestions at the same confidence can rest on a customer's explicit request and on a pattern across unrelated accounts, and a person needs to treat those differently. Show the reason and the score becomes unnecessary.

### What should happen to a recommendation nobody acts on?

It should drain by itself when its cause clears, which is how Needs You entries behave. A queue that only empties by hand teaches people to empty it without reading, and at that point the surface is actively harmful.

### Can the Assistant just do the recommended thing?

Within the autonomy rule for that channel and scope, and through the service that owns the record — never by writing directly. Its rights are also narrower than a person's: no pricing, and no clearing a do-not-contact entry.

## Related

- [Connect Assistant](https://connectbyjbrh.com/docs/assistant/)
- [Why uncertainty is a valid answer from a business agent](https://connectbyjbrh.com/research/uncertainty-is-an-answer/)
- [Evidence-first prospecting without guessed emails](https://connectbyjbrh.com/research/evidence-first-prospecting/)
- [What Connect may do](https://connectbyjbrh.com/docs/autonomy/)
- [Why an agent's tools should call domain services](https://connectbyjbrh.com/research/agent-tools-call-services/)

## What this page is based on

- `docs-source/sources/GENERAL.md` §8 — the Assistant's tools and the screen-context check
- `docs-source/sources/GENERAL.md` §5 — autonomy, Needs You and the audit trail
- `docs-source/sources/GENERAL.md` §3 — `threads.priority` and engine work selection
- Connect capability registry (`docs-source/facts.py`) — `CAPABILITY_STATUS`
