Back

Customer Service Agent

Customer message → AI agent investigates with tools → Slack approval → reply + log

4 channels7 toolsmax 8 turnshuman in the loop
Ready. Pick a message and press Send.+00:00.0
01 · Inputs

Pre-defined message

LMLiza ManaloFacebook page

It's Liza again. The technician never showed up yesterday. I waited all morning. I want my money back.

sender.id fb_88213097

Messenger webhooktrigger
Viber webhooktrigger
Gmail triggertrigger
Form webhooktrigger
02 · Normalizecode, not AI

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…
03 · AI agent

Inbox Agent

Claude Haiku 4.5

turn0/8
idle

The agent’s reasoning for the current turn appears here.

Chat model

Haiku 4.5

Memory

none

Tools

7

Tools · 7
read
search_contact
read

Find a contact by email, phone or channel ID

get_orders
read

List a contact's orders

search_tickets
read

Find a contact's tickets

lookup_policy
read

The company rule for a topic

write
create_deal
write

Create a sales deal

create_ticket
write

Create a support ticket

update_ticket
write

Update priority or add a note

issue_refund
off

Refunds need a human.

04 · Slacksimulated

Whatever the agent drafts is posted here with Approve, Edit, Open in HubSpot and Reject. The run stops until someone presses one.

Dropped
Logged and dropped. No contact, no reply.
05 · Sent + logged

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.

100%
service-agent@v2

Every turn the agent takes is listed here: what it was thinking, the tool it called, and what came back.