← All changes
scheduled tasksdata tablesknowledgechannelsmemoryintelligenceskills and toolsagentsconversations

Spot a repeat customer, stack audience updates, and unshare a file

Agents can now spot repeat customer choices, audience updates can stack, shared files can go internal-only again, and Reveal Encrypted Field now actually works.

New

  • Patterns: what one customer keeps choosing. Some preferences are never said out loud. Somebody who has booked the same hotel on three separate trips has one, but there is no sentence to quote — so nothing was ever captured. Contacts → (contact) → Memory now has a Patterns view that counts it from what actually happened instead: "hotel — Marina Bay Sands, seen 3 times across 3 conversations". A value has to come up at least three times to appear; two is a coincidence. It needs Business Intelligence switched on for the agent, since that is what produces the events being counted, and it works on every plan. See Patterns.
  • A strong pattern becomes something the agent knows. Once a value has come up three or more times across at least two separate conversations, it is promoted overnight into a remembered preference the agent carries into the next conversation — so it can suggest the usual hotel without being asked twice. Three mentions inside a single conversation is one story told at length rather than a habit, so that stays on the Patterns view and goes no further. The agent is told the preference was inferred from repeated behaviour, not stated, so it can offer it as a suggestion without claiming the customer said it — and the arithmetic stays visible ("3 of 4 bookings" says they chose something else once). If the customer later states the preference outright, that version takes over.
  • A memory or intelligence rebuild now shows live progress. Rebuilding a contact's memory or your workspace's business intelligence now tracks how many of the queued conversations have been re-read so far, switching to a checkmark when it finishes. It keeps tracking if you navigate away and come back, and if a rebuild is taking unusually long it says so rather than guessing at success or failure.
  • After sending, update takes more than one column. The control was a single picker that stamped one column with the send time. It is now a stack, added and removed exactly like filters, and each row chooses what to write: the send time, a fixed value you type, a date moved forward by N months, or a number with an amount added to it. So a task can advance a follow-up step and record when it went out, in one go. See updating the row after sending.
  • Multi-step follow-up sequences. With a fixed value you can write which step someone is on, which is what makes a sequence work: filter on follow_up_msg is 1, send the first template, set the column to 2. Those contacts stop matching the first task and start matching the second, so the next run sends the next message. There is a worked example under multi-step follow-ups.
  • Any column you can type a value into is now a target. Previously only date, date-and-time and text columns were offered. Numbers, currency, yes/no, dropdowns and multi-select all work now, each with the right control for its type.
  • Restrict a shared file to internal only. Share with all conversations used to be permanent — once a file was shared there was no way back, and the Availability section disappeared from the file entirely, so it did not even tell you what the file's scope was. Open any shared file and choose Restrict to internal only: agents stop offering it in chat, while it stays in your library and still counts toward storage. You can share it again whenever you like. See Assets.
  • Availability is always shown. Every file now displays which conversations agents may offer it in, including files that are already shared.
  • See who an intelligence event is about. Every extracted event now shows which agent it came through and which contact it involves, and a View conversation link jumps straight to the transcript it was extracted from — in both the events table and its detail view. See Intelligence.
  • An event now says whether the thing actually happened. Every event carries an outcome — Happened, Wanted, or Dropped — shown beside it in the events table and filterable from the toolbar. It is the difference between someone asking about a product and someone ordering it, which is what makes "enquiries that became orders" a question you can ask rather than a number you have to guess at. It is separate from the review status: an event you have confirmed as correctly extracted can still describe something the customer dropped. See what each event records.
  • Events show the labels you can count them by. An event about a delivery enquiry now carries short business labels such as product: nasi ambeng or topic: insurance, shown as chips on the event. Click one to filter the list to everything sharing it. These are the same labels the Business Brain builds its vocabulary from and the same ones Patterns counts per customer.
  • Tasks, reminders and noted preferences now carry those labels too. They were being recorded as bare counts with nothing to group them by, so you could see that fifty tasks were created and nothing about what they were for — and Patterns had nothing to count for a workspace whose agents mostly take tasks. A task now records what it is about as a label, while the task's own wording stays in the encrypted detail.
  • An event shows the memory it produced. Where an event and a remembered fact came out of the same sentence, the event's detail view now shows that memory in full instead of an internal reference number, so you can see what the agent took away from the same moment. Visible to owners and admins, matching how the customer's exact words are already handled.

Fixed

  • A rejected write-back no longer takes the others down with it. If one column could not be written — a value the column would not accept — every other column on that row was silently skipped too, with nothing recorded anywhere. The remaining columns are now written, and the rejected one is reported in the logs. A column the agent has no update permission on is likewise skipped on its own rather than cancelling the rest.
  • Mistyped write-backs are caught before anything sends. A task naming a column that was renamed or deleted, an encrypted column, a linked table's column, or a value the column will not accept used to send the whole campaign and then quietly write nothing. The run now stops before the first message goes out and says which column is the problem.
  • Send-time dates use your workspace timezone. Stamping a date column with the send time used UTC, so a workspace ahead of UTC messaging early in the morning recorded the previous day. Date-and-time columns were never affected.
  • Test Send works with image templates. Picking a template that Meta approved with an Image header and pressing Send failed with invalid_params and nothing else to go on. The dialog now shows an Image field for those templates, sends the photo as the template's header, and the template body becomes its caption — the same behaviour a scheduled message already had. The image is picked from your Assets library and must be shared with all conversations, and the agent whose channel you opened must be allowed to send it. That means a test send now tells you whether the real campaign will go out, not just whether the template is valid. See templates and quality.
  • Test Send says what actually went wrong. A rejected send used to show a single word. It now names the reason — a parameter you left blank, a value over the length limit, an image the agent is not allowed to send.
  • A data table's relation picker could lose track of your selection. Linking a row to another table only searched the first 100 rows, so a match further down couldn't be found — and a row you'd already linked from further down the list could silently disappear from the picker with no way to remove it. Search now covers the whole table (paste an id for a direct lookup), and anything already selected stays pinned at the top of the list.
  • A business intelligence event could be dated to the wrong day. When the exact time wasn't clear from the conversation, the event was stamped with whenever the extraction happened to run instead of the conversation's own date, so an old conversation could produce an event dated today. It now falls back to the conversation's date.
  • A business intelligence event could go missing with no explanation. If extraction linked an event to a specific message it got wrong, the event failed to save at all. It's now kept and linked to the conversation as a whole instead.
  • Events search no longer offers to find something it cannot. The search box said it searched subjects as well as types, but an event's subject is encrypted and was never searchable — so typing a word you could plainly see on screen returned nothing, with no hint why. It now says it searches event types, which is what it does. Use the labels above to narrow by what an event was about.
  • Reveal Encrypted Field now works when the agent needs it. The tool could be attached, the collection could have Allow reveal switched on, and the agent would still answer that it could not read an encrypted name or NRIC. Every other tool returns encrypted fields masked, so the agent only discovers it needs to reveal something after a search has already run — and by then the tool had been set aside for that reply. Asking "what's the NRIC for this client" reads as an ordinary lookup, so reveal was never brought along. It is now offered alongside the record tools whenever the agent is granted it, which is the moment it can be needed. Nothing about who may reveal what has changed: the tool still has to be attached to the agent, the collection still needs Allow reveal, and every field revealed is still written to the data audit log. See revealing an encrypted value.
  • Tools chosen in the wizard or from a template now stick. When a change set both an agent's skills and its tools in one go — which is what the setup wizard, applying a template, and asking the assistant to edit an agent all do — the tools were quietly dropped and only the skills were saved. The save reported success, so the only sign was a tool you had picked missing from the agent afterwards. Editing tools from the agent's Tools tab was never affected.
  • A handover alert now includes the customer's phone and email. An escalation reached the operator with an instruction to go and look the number up rather than the number itself — in the one notification whose whole purpose is letting a human call back. Agents are deliberately never given a customer's raw phone number to retype, so the details are now attached to the alert directly, and Telegram and email handover notifications show the contact's name, phone and email under the reason. Where no number is on file the line is simply left out. Mobile push notifications are unchanged and stay deliberately brief — they arrive on a lock screen. See taking over a live conversation.

Notes

  • Patterns cost no extra interactions. Counting is a database query and the sentence is assembled from the numbers — there is no model involved on top of the events you already have. Promotion into memory follows the ordinary memory rules, so an agent with memory switched off never gains a pattern; the Patterns view itself is unaffected by that. Personal happenings a customer mentions — collecting the kids, a trip next month — are already remembered as ordinary dated facts and are unchanged by this.
  • Labels are for business vocabulary, never for one customer's own details. A symptom, a diagnosis, a prescription and a safeguarding note are deliberately given no labels at all, and identifiers — email, phone, NRIC/FIN, card, IP — are refused everywhere. Anything refused is not lost: it stays in the event's encrypted detail, just outside what can be grouped or searched by name. Nothing in an existing event changes; labels appear on events extracted from here on.
  • One thing sharing still cannot undo is the link to the customer a file came from. Sharing detaches the file from that person, so restricting it afterwards makes it internal rather than returning it to them.
  • Restricting a file that a scheduled or audience message uses as its image will stop that message from sending — only files shared with all conversations can be attached.
  • Tasks saved before this change keep working untouched — their single column appears as the first row in the stack the next time you open the task.
  • The reveal and tools-sync fixes apply to existing agents with no change on your side. If your agent is versioned, publish it once so the running version picks up the change.