Connect by JBRH Open Connect

Chasing appointments and commitments

A follow-up is a dated commitment on one channel, carrying a reason. Connect creates them from conversations, drains the phone ones every tick under the same gates as any outbound call, and refuses to make the two mistakes that destroy trust in chasing: ringing somebody twice about the same thing, and ringing them about something they asked about last week.

Status
Available What this means
Audience
both
Channels
emailwhatsappphone
In the app
#/follow-ups, #/calls, #/needs-you
Last verified
Product version
6.3.2

What a follow-up is made of#

A channel
email, whatsapp, sms, phone, any, or task. The channel decides which drain, if any, can act on it.
A due time
What makes it a commitment rather than an intention. due and upcoming are the two views that matter day to day.
A reason
Why this was promised. A commitment without one is not useful to the person who inherits it, and somebody always inherits it.
A person
The follow-up belongs to a relationship, not to a thread, which is why stop_for_person exists alongside stop_for_thread.

How phone chasing actually runs#

  1. runner.chase_phone takes due phone follow-ups every tick, two per tick.

    Result The rate is deliberate. A queue that empties itself in one burst is how a workspace rings thirty people in a minute.

  2. Each one goes through voice_engine.place_call with the same gates as any outbound call — autonomy, compliance, budget.

    Result The outcome is recorded as call placed <id>, awaiting approval <id>, or refused: <reason>. A refusal is a decision and is written down as one.

  3. If the line is not ready, the row is retried in an hour rather than burned.

    Result Line health also escalates into Needs You, so the cause is visible next to the calls it is holding up.

  4. If the row is more than 24 hours late, it is closed as missed: and never rung.

    Result A very late call-back is worse than none. This is the rule that stops Connect ringing somebody on Thursday about Monday.

The rules that keep chasing honest#

  • Duplicate protection. A follow-up with the same *when* for the same person is a duplicate. Two people in a workspace promising the same call-back does not become two calls.
  • Snooze rather than delete. snooze moves the commitment; deleting it loses the reason it existed. The queue is meant to be a record of promises, and a record you prune when it is inconvenient is not one.
  • attempted is not complete. An attempt that reached nobody is recorded as an attempt, so the difference between 'we tried' and 'it is done' survives into next week.
  • Stopping is explicit. stop_for_thread ends chasing on one conversation; stop_for_person ends it for the human. Both are recorded, which matters when somebody asks why the chasing stopped.

What this does not do#

Three gaps, each of which people assume is present.

AssumedActual positionWhat to do instead
A calendar integrationThese sources do not document one, and this page does not invent it. What exists is the demo lifecycle — request, schedule, complete, cancel — and the dated follow-up queueKeep the appointment where your business already keeps it and let the follow-up carry the chase
An SMS reminderOutbound SMS is provider-dependent and the live carrier carries noneEmail or WhatsApp, where the person has either
A reminder call that transfers to you when answeredA completed transfer to a person is foundation, not availableThe call is a conversation in its own right, and what it cannot settle becomes the next follow-up

Where it goes wrong#

Nothing is being drained
Check the channel. A task follow-up is never sent by anything, on purpose, and a queue full of them looks identical to a queue that is stuck.
Calls are refused
refused: <reason> carries the cause — autonomy, compliance, or budget. Compliance refusals are the ones to look at first, because a suppressed or do-not-contact person will keep refusing until the entry is dealt with, and the Assistant cannot clear a do-not-contact entry.
Everything closed as missed overnight
The queue went more than 24 hours without draining. Line readiness is the usual cause, and it is visible in Needs You before it becomes a morning of missed rows.
The chase reads as nagging
Usually several follow-ups on one person from several conversations. summary and stop_for_person are the two tools; the second is the honest one.

Questions#

Does Connect decide by itself when to chase?

It creates the commitment from what was actually said and gives it a due time and a reason. Whether the chase then goes out without a person is the channel autonomy setting, exactly as with any other outbound message. On phone the drain reports awaiting approval when the rule says a person decides.

What happens to a follow-up nobody actioned for two days?

On phone it is closed as missed: once it is more than 24 hours late, and never rung — the design assumes a very late call-back damages more than it recovers. It stays visible as a missed commitment rather than disappearing, which is the part that lets somebody decide whether to make the call themselves.

Can two people in the workspace both promise the same call-back?

They can promise it, but it becomes one follow-up: same person, same due time is treated as a duplicate. What is not deduplicated is two commitments to the same person at different times, because those are usually two real promises and collapsing them would lose one.