Creating a follow-up
schedule is the one entry point, whether a person fills the form, the engine spots a commitment in a thread, or the voice books one mid-call. Each route supplies the same four things — person, when, channel, reason — and differs only in how much evidence it can attach. The call route is the strictest, because a promise made aloud is the easiest one to mis-hear.
Three routes, one record#
| Route | Who supplies the when | What is attached |
|---|---|---|
| By hand | You do | Whatever you type as the reason, plus the person and thread you started from |
| From a conversation | The engine, from what was written | The thread it came from, so the reason can be checked against the message |
| From a call | The caller's own words, checked | The caller's last lines and the voice's own lines, sent with the booking |
The record is identical afterwards. A follow-up created by a person and one booked by the voice are the same row, drained by the same code, subject to the same duplicate rule and the same lateness rule. What differs is what can be reconstructed later about why it exists.
Booking one during a call, and the rule that guards it#
schedule_follow_up is the tool the voice uses, and it sends the caller's last lines and the voice's own along with the booking. That is not logging for its own sake: it is the evidence the guard needs.
record_event refuses a when that shares no time word with the caller's latest time-bearing line — conversation.when_mismatch, in English, Telugu and Hindi — unless the caller has just agreed to a time the voice said aloud, which is when_agreed. When it refuses, the tool answers NOT recorded, in those words, so the model cannot go on to tell the caller a time is booked. A read-back is asked for only when the caller neither named a time nor agreed to one.
What the call route decides for you#
- The due time.
voice_engine.due_atturns the promised words into a time in the line's timezone: "in 10 minutes", "tomorrow 11am", "Friday 3pm", "today evening". Nothing usable falls back to 11:00 tomorrow rather than to now. - The channel.
follow_up_channelputs a call-back onphone, and a person's own work — "send the quotation", "review the recording" — ontask. - Whether to book at all. "No follow-up needed" schedules nothing. An empty queue after a call that needed no chasing is correct, not a missed booking.
- The contact. A contact created by lead capture carries
phone_keyfrom the start, so the follow-up hangs off a person a drain can actually ring.
Creating one by hand well#
Start from the person or the thread rather than from a blank form.
Result The follow-up is attached to the relationship, so it appears on the person's record and is carried across if that person is ever merged with another.
Write the reason as the sentence you would want to read cold.
Result Whoever picks it up — including you — knows what was promised without opening the thread. See The reason on a follow-up.
Pick the channel that matches the promise, not the one that is convenient.
Result A promise to ring becomes a call. A promise to send a document becomes a
task, because no drain writes documents.Set the time you actually said, not a round number near it.
Result The duplicate rule keys on the *when* for a person, so an honest time also protects you from booking the same commitment twice.
What can go wrong at creation#
- Nothing was booked after a call
- Either nobody named a time and the guard refused, or the conversation genuinely needed no follow-up. The call's findings say which;
promised_unbookedmeans a promise was made and not captured. - The time is wrong
- The words were heard as a different time. The row is editable — see Changing a follow-up — and it is worth correcting rather than cancelling and re-booking.
- It landed on
taskwhen you expected a call - The promise was classified as a person's work. That is usually right; where it is not, change the channel on the row.
- A second identical row appeared
- It should not: the same *when* for the same person is a duplicate. If two rows differ by a minute they are not duplicates by that rule, which is the usual explanation.
Questions#
Can I create a follow-up for somebody who is not a contact yet?
Create the person first, even minimally. A follow-up hangs off a canonical Person; without one there is nothing for the drain to resolve to a mailbox or a number, and nothing for the person's record to show.
Does asking the Assistant to 'follow up next week' create a row?
It creates one through the same schedule entry point, with the reason it was given. Check the row afterwards: 'next week' becomes a specific due time, and if that is not the time you meant, edit it now rather than when it fires.
Why does the voice sometimes read the time back to me?
Because you neither named a time nor agreed to one it offered. A read-back is asked for exactly in that case, so the booking is never made from an assumption about what you meant.