Customer message → AI agent investigates with tools → Slack approval → reply + log
Pre-defined message
It's Liza again. The technician never showed up yesterday. I waited all morning. I want my money back.
sender.id fb_88213097
Every channel posts a different shape. This turns all four into one message, so the agent never has to know where it came from.
in · Messenger webhook
{
"object": "page",
"sender": {
"id": "fb_88213097"
},
"message": {
"text": "It's Liza again. The technician ne…"
}
}out · standard message
waiting…
Inbox Agent
Claude Haiku 4.5
The agent’s reasoning for the current turn appears here.
Chat model
Haiku 4.5
Memory
none
Tools
7
Find a contact by email, phone or channel ID
List a contact's orders
Find a contact's tickets
The company rule for a topic
Create a sales deal
Create a support ticket
Update priority or add a note
Refunds need a human.
Whatever the agent drafts is posted here with Approve, Edit, Open in HubSpot and Reject. The run stops until someone presses one.
On approval the reply goes back out on the channel it came in on, and every tool the agent called is written to the HubSpot timeline.
Every turn the agent takes is listed here: what it was thinking, the tool it called, and what came back.