# Make sure a promise is kept

A promise is only kept if it exists as a follow-up, on a channel that can carry it, with a reason attached. Anything else — a line in a transcript, a sentence in a thread, an intention in somebody's head — is not a commitment the system can act on. The weekly job is turning the first kind into the second and closing what has gone stale.

- **Status:** Available
- **Audience:** both
- **In the app:** #/follow-ups, #/needs-you
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/how-to/close-the-loop-on-a-promise/

## What counts as a promise here

Follow-ups run on six channels: email, WhatsApp, SMS, phone, `any`, and `task`. The last is work for a person — no drain ever sends it, and it appears as work for a person to do rather than pretending to be automation. Choosing `task` when a person must act is not a downgrade; it is the difference between a commitment somebody owns and one that quietly expires.

**Reason** — Why the commitment exists. A follow-up without one is not useful to whoever inherits it, which on a busy week is everybody.
**Due time** — When it fires. Duplicate protection treats the same time for the same person as the same commitment.
**Channel** — How it will be carried. A phone follow-up on a line that is off will not become an email by itself.

## The weekly pass

1. Open Follow-ups and read the due and upcoming lists together, not separately.
   - Result: Overdue is a symptom; upcoming is the workload that will produce the next lot. Reading only the first guarantees you do this again next week.
2. For each overdue row, decide one of three things: it still matters and needs a new date, it has already been handled, or it never should have existed.
   - Result: Complete, reschedule or cancel accordingly. Leaving it overdue is a fourth option that costs you the signal the list is meant to carry.
3. Scan the reasons column for blanks.
   - Result: A commitment with no reason usually turns out to be a duplicate or a misfiled note. Fix the reason or close the row.
4. Ask the Assistant what was promised in the last week's conversations and calls that has no follow-up behind it.
   - Result: This is the gap that matters — a promise made in a reply or on a call that nobody turned into a dated commitment.
5. Close everything for a relationship that has ended, in one action.
   - Result: Stopping for a person clears their open commitments together, which is safer than cancelling them one at a time and missing one.

## What the drains actually do

| Channel | What happens at the due time | What stops it |
|---|---|---|
| Email, WhatsApp, SMS | An outbound goes through the same send boundary a person's own send uses | Autonomy, allowance, suppression |
| Phone | Calls are placed a couple at a time each tick, through the same gates as any outbound call | A line that is not ready — retried in an hour |
| `task` | It appears for a person. Nothing is sent, ever | Nothing; it waits until somebody completes it |
| `any` | Resolved to a channel that can carry it | The same gates as that channel |

> **Careful** A phone follow-up more than twenty-four hours late is closed as missed rather than rung. A call-back a day after it was promised is worse than none, and the record says it was missed rather than silently dropping it.

## Proving the loop is closed

- The summary shows overdue trending down rather than flat — a flat overdue count with items changing underneath is the same debt with new names.
- Every open commitment has a reason. Sample five; if two are blank, the problem is upstream of this list.
- Nothing in Needs You for those customers is older than your review cycle.
- The outcomes recorded against phone follow-ups are calls placed or refusals with a stated reason, not silence.

If a follow-up fired and nothing reached the customer, that is a send question rather than a follow-up one: a message is reported as sent only when the provider acknowledges it, and an unacknowledged send is shown as uncertain rather than guessed either way.

## Questions

### Connect promised a call-back on a call. Does that create a follow-up by itself?

That is exactly what the promise-integrity handling exists for: a commitment spoken on a call is meant to become a dated follow-up rather than a sentence in a transcript. Check the call's follow-up on the record — if it is missing, the troubleshooting page for a follow-up that was not booked covers it.

### Why do I have two follow-ups for the same thing?

Duplicate protection treats the same due time for the same person as a duplicate, so two at different times are two commitments as far as the system is concerned. Cancel one and give the other the right reason.

### Can I promise something on a channel that is switched off?

You can create it, and it will not be carried. That is why the channel column is worth scanning during the weekly pass — a phone follow-up on a line that is off waits, retries and eventually reads as missed.

## Related

- [Follow-ups in Connect](https://connectbyjbrh.com/docs/follow-ups/)
- [The reason on a follow-up](https://connectbyjbrh.com/docs/follow-ups/reason/)
- [Overdue follow-ups](https://connectbyjbrh.com/docs/follow-ups/overdue/)
- [Follow-ups for a person to do](https://connectbyjbrh.com/docs/follow-ups/task-channel/)
- [Promises made on a call](https://connectbyjbrh.com/docs/phone/promise-integrity/)
- [Preventing a voice agent from promising a call-back it cannot keep](https://connectbyjbrh.com/research/callback-promises/)
- [The call promised a call-back that never happened](https://connectbyjbrh.com/docs/troubleshooting/follow-up-not-booked/)

## What this page is based on

- Connect source pack: overview (docs-source/sources/GENERAL.md §7 — follow-ups)
- Connect source pack: channels (docs-source/sources/CHANNELS.md §7 — follow-ups and support)
- Connect capability registry (docs-source/facts.py — followups, phone_followup_drain)
