Kaylee console
Lodgestory CRM › Kaylee console
Kaylee works. You approve. When the AI agent in a bot journey can't answer alone it asks your team, and when a change needs a human's OK it waits for one — the console is where your team sees, answers and approves, in one tap.
TL;DR
- What it is — a floating orb on every CRM page, the console behind it (also its own page), and an escalation ladder that puts each request in front of the right person: a card and an alert for whoever's turn it is, then the next person, then a phone call on your own numbers when nobody is online.
- Who it's for — every team the AI agent may ask — front desk, reservations, finance — answers here; Admins decide which teams are on call, their hours and whether the phone step is on.
- Top outcome — the agent never guesses and never acts beyond its mandate, and a human answer or approval takes one tap, so the customer rarely notices the pause.
At a glance
| Plan tiers | All paid tiers — part of the Bot Journeys AI Agent step. |
| Who can use it | Every team member sees the console. Admins and Account Owners, the person whose turn it is, and members of the team a request is for can act on it. Settings and Teams on call are for Admins. |
| Channels | Every channel a bot journey runs on — WhatsApp, Instagram, Messenger, Email and Web Chat. Requests from email conversations reach the team the same way. |
| Integrations | Lodgestory Voice for the phone step — calls go out on one of your own numbers. ai_request.created, ai_request.answered and ai_request.replied under Webhooks; a partner API and MCP tools to answer, approve and ask Kaylee back from your own systems or an AI assistant. |
| Top limits | One open request per conversation and two per run of the journey by default (up to 2 and 5). A request expires after 4 hours (15 minutes to 24 hours). Turn length 1 to 60 minutes; up to 3 turns before the phone; up to 5 phone attempts; up to 50 people on a team's roster. Up to 3 ask-backs per request, one open at a time, 300 characters each. |
| API | Yes — api/wp-crm/ai-requests to list, read, answer, approve, reject and ask Kaylee back, plus six MCP tools. See API. |
How to find it
- The orb floats over every CRM page on the web. Click it to open the console; drag it anywhere — the position is remembered in that browser.
- The console page:
https://lodgestory.com/crm/kaylee, and More → Kaylee on the left rail (pin it with Customise). Both can be switched off in Settings. - Settings: Settings → Kaylee —
https://lodgestory.com/crm/settings/kaylee(Admins). - In a conversation: the request card in the conversation's timeline, where the agent asked.
- In team chat: the card posted in the team's channel.
- In the mobile app: a banner at the top of the chat while a request is open, and the card in team chat.
📸 [SCREENSHOT: kaylee-orb.png — the orb in the corner of the inbox, amber, with a badge]
What is the Kaylee console?
The problem it solves
An AI agent that answers everything is dangerous; one that hands over at the first hard question is useless. Real conversations sit in between: the guest wants an exception to the cancellation policy, a refund of ₹8,400, a date the agent isn't allowed to promise. Until now the agent could only guess, hand the whole conversation to a human, or fire off an alert and hope.
The Kaylee console gives the agent a third option — ask a person, keep chatting, come back with the answer — and gives your team a mandate switch: changes you mark Needs approval are proposed by the agent and made only once a teammate approves them. Requests find a person on their own: whoever's turn it is gets a card and an alert, the turn passes if they don't answer, and when nobody is online the team is phoned on your own number and can answer with a keypress or a few spoken words.
What you get
- One place for everything the AI is waiting on. A live feed of requests, answers and calls, with the conversations the AI is handling and the ones it closed today.
- Decisions by turn, not by broadcast. One person is on the hook at a time; the turn passes on its own; the first answer wins.
- Nobody online → the team is phoned. On your own number, in roster order, with the question read out — press 1 to approve, or record an answer and hear it back before it is sent.
- Approve, edit or reject in one tap. The agent proposes the change and its values; you approve it as is, change the values, or turn it down with a reason only the agent sees.
- The customer never waits in silence. The agent says it is checking, keeps helping with everything else, never guesses, and never promises a time it wasn't given.
- Every answer reaches the customer in the agent's voice — or exactly as you wrote it, when you say so.
- Not sure what she's asking? Ask her back. From any open request, put a question to Kaylee — "Which dates?" — and she answers you in a line or two from the conversation, or checks with the customer first. The request stays open meanwhile, and the customer never sees the exchange.
How it's different
- It escalates like a good shift lead. Turn → next person → the phone → a fallback you chose — and it respects each team's on-call hours, so nobody is paged at 3 am unless you want them to be.
- Approvals are policy, not the agent's mood. A change marked Needs approval can't run without a person — and when nobody answers in time it is rejected, not quietly made.
- It lives where your team already is: the inbox, team chat, the mobile app, the phone, and your own tools through the API.
Customer scenarios
- Finance approves a refund, Mumbai. A guest asks for a refund on WhatsApp. The agent proposes Issue refund — amount 8400 and tells the guest it has been sent for approval. Riya in Finance sees Needs your OK on the orb, changes the amount to 8,000 (the booking fee is non-refundable) and approves. The refund runs, and the agent tells the guest the amount that was approved — not the original.
- The night desk is asleep, Goa. At 1 am a guest asks whether a late check-in at 4 am is possible. Nobody is online, so the agent's question is phoned to the on-call roster. Dev picks up, hears the question, records "Yes, the guard will let them in; ask for the room number", hears it back and presses 1. The agent relays it in its own words within the minute.
- The team is off until nine, Jaipur. A guest asks for a group rate at 7 am. Reservations' on-call hours start at 9, so the agent tells the guest the team is back at 09:00 and will come back to them — and the request lands on the first person online at nine.
- A question before the OK, Bengaluru. Reservations gets May I move the booking to 14 Dec? Priya isn't sure the guest means the same villa, so she asks Kaylee back: "Same villa, or any villa?" Kaylee reads the conversation — "The same one: the guest wrote 'keep the pool villa' twice" — and Priya approves. The guest sees only the confirmation.
How it fits with the rest of Lodgestory
Requests are raised by the AI Agent step's chat actions in a bot journey. They reach people through the Notifications Centre, push notifications, team chat and Lodgestory Voice, and your own systems through Webhooks and MCP.
📸 [SCREENSHOT: kaylee-console.png — the console with the stats strip and three cards: Needs your OK, Resolved, Called the team]
Core concepts
| Term | What it means |
|---|---|
| Request | One thing the AI agent could not decide alone, numbered within its conversation (#1, #2…). It stays open until a person answers it, a teammate takes the conversation, or it expires. |
| Question | The agent needs an answer in words — a fact that isn't in its instructions or knowledge, a policy exception, a price or date it may not promise. |
| Choice | The agent offers 2 to 5 options and a person picks one. |
| Approval | A change the agent may only make with a teammate's OK — a hand-over, a resolve, a stage move, a ticket, a lead, contact details, or one of your API tools marked Needs approval. The change runs only after approval. |
| Turn | The window one person has to answer before the request passes to the next — 5 minutes by default. |
| Team on call | A team that takes requests, with optional on-call hours, a roster order and whether it may be phoned. |
| Roster | The order in which a team's members are asked and phoned, with an optional phone number per person. |
| Fallback | What happens when nobody answers in time — set on the AI Agent step: hand over and file a ticket, tell the customer, or continue. |
| Ask back | A question a teammate puts to Kaylee on an open request — "Which dates did they ask for?" — answered privately, from the conversation and her instructions, or after she has checked with the customer. One open at a time, up to three per request; the request stays open meanwhile. |
Quick Start — your first approval in 5 minutes
Step 1 — Switch Kaylee on for the workspace
Settings → Kaylee. Leave Requests on, pick a Default team (where approvals go when a step doesn't name one), and keep the orb and the console page on.
📸 [SCREENSHOT: kaylee-qs-1-settings.png]
Step 2 — Put a team on call
In Teams on call, switch your team on. Leave Hours empty to be on call around the clock, or set the hours and time zone. Drag the members into the order they should be asked.
📸 [SCREENSHOT: kaylee-qs-2-on-call.png]
Step 3 — Optional: let Kaylee phone the team
Switch on Phone the team, pick one of your Lodgestory Voice numbers as the caller ID and a voice. Add a phone number next to anyone on the roster who should be rung on a different number.
📸 [SCREENSHOT: kaylee-qs-3-phone.png]
Step 4 — Tell the AI agent what to ask and what needs an OK
Open a bot journey, select the AI Agent step, switch on Chat actions, then Ask the team (who to ask, what happens when nobody answers) and, under Approvals, set Needs approval on the actions that need a person — a hand-over, a refund API tool. See Bot Journeys → Chat actions.
📸 [SCREENSHOT: kaylee-qs-4-builder.png]
Step 5 — Test, then watch the orb
In the builder's test chat, ask something only a person would know. The agent says it is checking; the Team requests panel shows the request — ask Kaylee back if you like, then answer it as the teammate and the agent continues. Deploy, and the orb turns amber the first time a live conversation needs you.
You should now see: the orb with a badge, and the request as a Needs your OK or question card in the console.
How it works
flowchart LR
A[AI agent asks,<br>or a change needs approval] --> B[Request #1<br>card in the console and the conversation]
B --> C[Turn 1: whoever is first on the roster and online<br>alert + phone notification]
C -->|no answer in 5 min| D[Turn 2: the next person]
C -->|nobody online| E
D -->|no answer| E[Phone the roster<br>on your own number]
E -->|nobody answers| F[Fallback: hand over + ticket,<br>tell the customer, or continue]
C & D & E -->|first answer wins| G[The agent continues<br>own words, exactly as written, or the approved change runs]
B -.->|Ask back: Kaylee answers you,<br>or checks with the customer first| B
- A request is raised when the agent can't answer from its instructions and knowledge and a person would know, or when it wants to make a change you marked Needs approval. It is numbered within the conversation, posted as a card in the console, in the conversation and in the team's team chat, and the agent tells the customer it is checking (or that the change has been sent for approval).
- Someone's turn. The first person on the team's roster who is online gets the turn: an in-app alert and a phone notification — "Kaylee has a question for you" or "Kaylee needs your OK" — and the orb turns red for them. The turn lasts the turn length (5 minutes by default); then it passes to the next online person, up to the number of turns you set.
- Nobody online, or the turns are used up: the team is phoned — straight away when nobody is online, otherwise after the step's phone after delay (10 minutes by default). People are rung one after another in roster order; if the attempt ends without an answer, Kaylee tries again two minutes later, up to the number of call attempts.
- Off hours. If the team has on-call hours and is off, nobody is paged or phoned until it is back; the agent tells the customer when the team returns. A request still expires on time.
- Need more before you answer? Ask Kaylee back. From the card or the detail, ask her a question of your own — up to 300 characters. She answers you in a line or two from the conversation and her instructions, saying plainly what she doesn't know, and never names or quotes you to the customer. If only the customer can tell her, she asks them one short question first — you see Kaylee asked the customer: … — and answers you once they reply. Asking claims the request for you; it stays open, and its turn, phone step and expiry keep running. One open question at a time, up to three per request.
- First answer wins — from the console, the conversation, team chat, the mobile app, the phone, the API or an AI assistant. A request somebody already handled says so to everyone else.
- The agent continues in the same conversation: it uses a question's answer in its own words (or sends it exactly as written), runs an approved change and tells the customer, or explains that a rejected change can't be done and offers alternatives.
- Nobody answers in time — every turn, the phone and the expiry are exhausted: a question expires and an approval is rejected (the change is not made). The agent applies the step's fallback: hand over to the team and file a ticket while telling the customer a teammate will follow up, tell the customer only, or continue without the answer.
Along the way, a teammate who simply replies in the conversation closes the request as handled directly and the agent stops, as with any take-over; a conversation that is resolved cancels its open requests.
Features in depth
The orb
Where to find it: every CRM page on the web, bottom corner by default.
The orb is Kaylee's presence on screen. Its colour is the one glance your team needs:
| Colour | Meaning |
|---|---|
| Calm teal | Kaylee is working — conversations are being handled and nothing is waiting on your team. The busier the AI, the livelier it moves. |
| Amber | Your teams have requests waiting (the badge is how many), or the team is being phoned right now. |
| Red | It's your turn — a request is waiting on you — or a request is overdue (open for more than 15 minutes with nobody on it). |
- Drag it anywhere. It snaps to the nearest edge and stays where you left it in that browser. It is hidden on small screens — use the console page or the mobile app there.
- Click to open the console as a panel over the page you are on; close it and you are back where you were.
- Reduced motion in your system settings turns the animation off; the colours and badge stay.
- Admins can switch the orb off for the whole workspace under Settings → Kaylee.
📸 [SCREENSHOT: kaylee-orb-states.png — the three colours side by side]
The console
Where to find it: click the orb, or open More → Kaylee / crm/kaylee.
The stats strip across the top:
| Tile | What it counts |
|---|---|
| Live right now | Conversations a bot journey is handling at this moment. |
| Resolved today | Conversations the AI agent closed itself today. |
| Teams on call | The teams taking requests, each with how many members are online. |
| Waiting on you | Requests where it is your turn, or that you claimed. |
The feed below it. Open requests come first — yours first, then the oldest — followed by what happened: requests raised, answers and approvals, calls placed, conversations the AI resolved or handed over. The feed keeps 30 days.
Every request is a card:
- Needs your OK — an approval: the proposed change in plain words with its values, and Approve · Edit · Reject · Take over.
- A question or choice — the question, the customer's words, and Answer (or the options to tap).
- Called the team — the phone step is running or has run, with the outcome: ☎ Finance desk · Riya, 38 s: "Yes, send the invoice again."
- Resolved — what was answered or approved, by whom and from where, and that the agent continued.
A card for a request on someone's turn reads Riya's turn · one tap, so everyone can see who is on the hook — and anyone allowed can still answer first. A request someone has asked Kaylee back on carries the latest line of that exchange under the question — Kaylee is answering…, Kaylee asked the customer: …, or her reply.
Filters: Waiting on you · My teams · Calling · Resolved · All, and a team filter to look at one team's requests.
📸 [SCREENSHOT: kaylee-console-feed.png — the feed with a Needs your OK card showing Riya's turn]
Answering a request
Where to find it: on the card, or in the request's detail.
| Action | What it does |
|---|---|
| Answer | Type the answer to a question. The agent relays it to the customer in its own words and never names you. Switch on Send exactly as written and the agent sends your text as it is (translated only if the customer writes in another language). Up to 4,000 characters. |
| Pick an option | For a choice: tap one of the agent's options. |
| Approve | The held change runs as proposed, with you recorded as the person behind it — a note or system line reads "Riya (approved the AI agent's action)" — and the agent tells the customer it's done. |
| Edit and approve | Change the values first — the amount, the team, the ticket priority — then approve. The change runs with your values, and the agent tells the customer what was approved rather than what it first proposed. |
| Reject | Nothing runs. Your reason is for the agent, never quoted to the customer; the agent says it can't be done and offers alternatives. |
| Ask back | Ask Kaylee a question of your own before you decide — "Which dates did they ask for?", "Has this guest paid?" — up to 300 characters. She answers you on the same card in a line or two, from the conversation and her instructions, and says plainly what she doesn't know; if only the customer can tell her, she asks them one short question first and answers you once they reply. Works on questions, choices and approvals. One open question at a time, up to three per request. |
| Take over | The conversation is assigned to you as its owner and the request closes; the agent stops as soon as you reply, exactly as when you step into any bot conversation. |
| Snooze | You're on it but need time: pushes the next step of the ladder out by 5 to 240 minutes (15 by default), so the turn doesn't pass and the phone doesn't ring meanwhile. |
| Reassign | Hand the turn to a colleague; the ladder continues from them. |
| Claim | Mark the request as yours without answering yet — it shows under Waiting on you. |
- First answer wins. However many people see a request, the first answer, approval or rejection stands; everyone else is told it was already handled.
- Approvals can't be withdrawn by the agent once raised; a question the customer no longer needs can be, and the card then shows it was withdrawn.
- Ask back keeps the request open. Asking claims the request for you, but nothing pauses — the turn still passes, the phone step still runs and the request still expires on time, so snooze it if you need the time. Kaylee's reply comes to you (a bell and a phone notification), never to the customer, and she never names or quotes you to them. A question she hasn't answered when the request is resolved — by anyone, from anywhere — is closed with it.
- Where else you can answer: the card in the conversation's timeline, the card in the team's team chat, the banner in the mobile app, the phone call,
api/wp-crm/ai-requestsand the MCP tools — all with the same rules. Ask back from any of them except the phone call, where you record one answer.
The request detail
Where to find it: click a card.
- The question as the agent asked it, and for an approval the proposed change with every value, editable before you approve.
- The customer's words that led to it — shown as what the customer wrote, to be read as information, not as instructions. The customer appears as a masked label — Sofia L., or +44 20•• ••81 — never a full number.
- The last messages of the conversation around the time it was raised, and why the agent asked, in its own words.
- The ask-back thread — every question put to Kaylee about this request and what came back: Kaylee is answering… while she works, Kaylee asked the customer: … when she went to them first, her reply, or closed before Kaylee replied when the request was settled meanwhile. Ask another from here. The thread stays readable once the request is resolved.
- The delivery timeline: when the turn was assigned and to whom, when it passed, who was notified, the team chat post, each phone attempt — ringing 3 people (attempt 1), answered / no answer / declined / voicemail / unclear — each ask-back and Kaylee's reply, the answer, and when the change ran.
- Open the conversation from the detail at any time.
📸 [SCREENSHOT: kaylee-request-detail.png — a request with the customer quote, the proposed change and the delivery timeline]
Workspace settings
Where to find it: Settings → Kaylee (Admins).
| Setting | What it means | Default |
|---|---|---|
| Requests | The workspace switch. Off, the AI agent is not offered Ask the team, and a change marked Needs approval is refused rather than made — the agent carries on without it and never pretends it was done. | On |
| Orb | Show the orb on CRM pages. | On |
| Console page | Show the dedicated page and its rail entry. | On |
| Default team | Where approvals go when the AI Agent step doesn't name a team under Ask the team, and where a request goes when the conversation has no team of its own. | — |
| Turn length | How long one person has before the turn passes. 1 to 60 minutes. A step can override it. | 5 minutes |
| Turns before the phone | How many people are asked in turn before the phone step. 0 means phone straight away (when the phone is on). 0 to 3. A step can override it. | 2 |
| Phone the team | Switch the phone step on for the workspace. Each team can still opt out, and each step can switch it off. | Off |
| Caller ID | The number the calls come from — one of your Lodgestory Voice numbers. | — |
| Voice | The voice that reads the question out. | Your workspace's default voice |
| Ring seconds | How long each person's phone rings before Kaylee moves to the next. 15 to 45. | 25 |
| Call attempts | How many times the roster is rung through, two minutes apart, before the fallback. 1 to 5. | 2 |
Teams on call
Where to find it: Settings → Kaylee → Teams on call (Admins).
Every team in your workspace is listed. A team you haven't configured still receives requests — it is treated as on call around the clock, asked in the team's own order, and phoned if the phone is on. Configure a team to shape that:
| Setting | What it means | Default |
|---|---|---|
| On call | The team takes requests under these settings. | Off (unconfigured teams behave as always on call) |
| Phone | Kaylee may phone this team. Turn it off for a team that should only be paged on screen. | On |
| Hours | A weekly schedule with a time zone. Empty means always on call. Off hours, nobody on the team is paged or phoned until the next slot; the agent tells the customer when the team is back — "the team is back at 09:00 Kolkata on Monday". | Always |
| Roster order | Drag the members into the order they should be asked and phoned. Only members of the team can be on it; up to 50. | The team's own order |
| Phone override | Per person: a number to ring instead of their usual softphone or follow-me number. | — |
Who gets the turn. People named on the step come first, then the roster in order, then the rest of the team (whoever has gone longest without receiving a chat first), then the team's manager — skipping anyone who isn't online (Lodgestory open in a tab or the app in the foreground, and not marked unavailable for chats). Each person gets the turn once per request.
Who is phoned. The roster in order, using any phone override, then the rest of the team. A person needs a Lodgestory Voice agent with an extension or a number to be rung; up to 10 people are rung per attempt.
📸 [SCREENSHOT: kaylee-teams-on-call.png — a team with hours, a drag-ordered roster and a phone override]
The phone call, step by step
What a teammate hears when nobody online has answered and the phone step runs:
- Your phone rings from your workspace's own number — the caller ID set in Settings — on your softphone, your follow-me number or the override on the roster.
- "This is Kaylee from Villa Amara. I have a question from a customer conversation. Press 1 to hear it." (For an approval: "An action in a customer conversation needs your approval. Press 1 to hear it.") Press 1. Nothing is read out until someone presses 1, so a voicemail never hears the question — Kaylee simply moves to the next person.
- The question: "In a conversation with Sofia L. on WhatsApp: The customer wrote: 'Can I check in at 4 am?'. My question for you: Can we allow a 4 am check-in on Saturday?"
- Then, depending on the request:
- Approval — "Press 1 to approve, 2 to reject, or 3 to hear it again."
- Choice — "Press 1 for Yes with a surcharge. Press 2 for No. Press 9 to hear it again."
- Question — "After the beep, say your answer for the customer, then press the pound key." Speak (up to 90 seconds), press #. "Here is what I heard." Your recording plays back. "Press 1 to send this answer, or 2 to record it again."
- "Thank you. I will get back to the customer now. Goodbye."
Your spoken answer is turned into text and becomes the request's answer; the card shows who answered and how long it took — Finance desk · Riya, 38 s — and the agent continues with the customer within moments. If nothing usable was heard, the attempt counts as unclear and Kaylee rings again later. Declining, not answering or reaching voicemail moves Kaylee to the next person; when the whole roster has been tried, the next attempt comes two minutes later, up to the Call attempts setting, and then the step's fallback applies.
These calls are Kaylee's, not a customer's: they don't appear in your Calls history and don't fire call webhooks. Test runs in the builder never phone anyone.
Roles & permissions
| Action | Account Owner | Admin | User |
|---|---|---|---|
| See the orb and the console | Yes | Yes | Yes |
| Answer, approve, edit, reject, ask back, take over, snooze, reassign | Yes | Yes | When it's their turn, they claimed it, they were named, or they are on the team it's for |
| Answer a phone call from Kaylee | Yes | Yes | Yes (when on the roster) |
| Change Settings → Kaylee and Teams on call | Yes | Yes | No |
| Answer through the API or an AI assistant | Yes | Yes | No |
A request for another team says so when a User who isn't on it tries to act; Admins and Account Owners can act on any request.
Connections — Workflows, Integrations & Events
End-to-end workflows
A refund that needs Finance
A guest on WhatsApp asks for a refund. The AI Agent step has your Issue refund API tool set to Needs approval. The agent proposes the refund with the amount, tells the guest it has been sent for approval, and the request lands on Finance: a card in the console, an alert for whoever's turn it is, a card in Finance's team chat. Riya edits the amount and approves; the refund runs with her as the approver, the agent tells the guest, and your accounting system learns about it through ai_request.answered.
Modules: Bot Journeys → Kaylee console → Team chat → Webhooks.
Nobody online, so the team is phoned
At night a guest asks something only the duty manager knows. Nobody has Lodgestory open, so the request goes straight to the phone: the on-call roster is rung on your own number, the manager presses 1, records an answer, hears it back and sends it. The agent relays the answer in its own words. Had nobody picked up after the attempts, the step's fallback would have handed the conversation to the team with a ticket and told the guest a teammate will follow up in the morning.
Modules: Bot Journeys → Kaylee console → Lodgestory Voice → Tickets.
Upstream & downstream connections
| Kaylee consumes | Kaylee emits |
|---|---|
| Requests from the AI Agent step's chat actions (Ask the team, Approvals) | Cards in the console, the conversation and team chat; in-app and phone notifications |
| Team membership, on-call hours and who's online from Teams and Team Chat & Presence | Phone calls through Lodgestory Voice on your own numbers |
| Answers — and ask-backs — from the console, the conversation, team chat, the mobile app, the phone, the API and MCP | ai_request.created, ai_request.answered and ai_request.replied webhooks; the agent's next turn in the conversation |
Event reference
| Event | When it fires | Payload summary | Subscribe from |
|---|---|---|---|
ai_request.created | The agent raised a question, a choice or an approval. | The request: number, kind, question, the customer's words, the proposed change, the team it's for, expiry. | Webhooks |
ai_request.answered | The request was answered, approved or rejected by a person, or expired, was auto-rejected, cancelled, handled directly or taken over. | The request with its status, answer or decision, who and from where, and whether the change ran. | Webhooks |
ai_request.replied | Kaylee replied to a teammate's ask-back — answered them, or asked the customer about it first. The request is still open. | The request with its ask_backs thread; the last entry is the one that changed. | Webhooks |
Payload fields: Webhooks API reference → ai_request.
Limits a user will run into
| Limit | Value |
|---|---|
| Open requests per conversation | 1 by default, up to 2 (set on the step) |
| Requests per run of the journey | 2 by default, up to 5 (set on the step) |
| Request expiry | 4 hours by default, 15 minutes to 24 hours (set on the step) |
| Turn length | 5 minutes by default, 1 to 60 minutes (workspace default, step override) |
| Turns before the phone | 2 by default, 0 to 3 (workspace default, step override) |
| Phone after (turns used up) | 10 minutes by default, 0 to 2 hours (set on the step) |
| Ring seconds per person | 25 by default, 15 to 45 |
| Call attempts | 2 by default, 1 to 5, two minutes apart |
| People rung per attempt | Up to 10 |
| Roster size | Up to 50 per team |
| Named people on a step | Up to 20 |
| Question length | 500 characters; a spoken question is cut at about 780 characters |
| Answer length | 4,000 characters typed; 90 seconds spoken |
| Ask-backs | 3 per request, one open at a time; 300 characters each. Kaylee's reply is a line or two, up to 600 characters |
| Snooze | 5 to 240 minutes |
| Feed history | 30 days |
| Overdue | A request open for more than 15 minutes with no move |
Errors & FAQ
The orb isn't showing.
Check Settings → Kaylee → Orb is on, and that the window is wide enough — the orb is hidden on small screens. The console page and the mobile app still work.
I answered but it says the request was already handled.
Someone else — a teammate, the phone, an automation through the API — got there first. First answer wins; the card shows who.
The agent didn't use the answer.
Open the conversation's notes. If the conversation had moved on when the answer arrived — a teammate took over, it was resolved, the journey left the step — the answer is left there as an internal note, "AI agent's request #1 … — Answer: … Not acted on by the agent because …", and the conversation's owner is alerted. An approved change is not made in that case. If the customer's messaging window had closed (WhatsApp, Instagram and Messenger: 24 hours after their last message), the agent keeps the answer and uses it on the customer's next message; the note says so.
Kaylee said she couldn't answer my question.
She answers an ask-back only from the conversation and her instructions — never a guess — so when the answer isn't there she says so. If the customer is the only one who can tell her, she asks them one short question first (Kaylee asked the customer: …) and answers you once they reply; until then your question shows as open. "Kaylee can't answer this right now" means the conversation had moved on before she could — a teammate is handling it, it was resolved, or the journey left the step — and the request itself is untouched: answer it, take over, or let it run its course. "Kaylee couldn't get to this one — the conversation was busy" means the step was busy with the customer for a couple of minutes and gave up — ask again. Up to three questions per request, one at a time.
Nobody was phoned.
Phone the team needs: Phone the team on under Settings → Kaylee with a caller ID; Phone on for the team under Teams on call; Phone the team on for the step; the team on call at the time; and at least one person on the roster (or in the team) with a Lodgestory Voice agent and a number or extension. Requests from test runs never phone.
Why wasn't anyone's turn assigned?
Nobody on the team was online — Lodgestory open and not marked unavailable for chats — or the team was off hours. Off hours, the first turn is assigned when the team is back; otherwise the phone step runs (or, with the phone off, the request waits in the console and then falls back).
A request expired although I saw it.
A request expires after the step's expires after (4 hours by default) whatever stage it is at. Snooze a request you are working on so the ladder knows.
Can the customer see the request or the teammate's name?
No. The customer sees only the agent's replies; the agent never names teammates or quotes them as people, and a rejection's reason stays with the agent. The console shows the customer as a masked label.
Can I answer from my phone without the app?
Yes — when Kaylee phones you. Otherwise use the mobile app's banner in the chat, or the card in team chat. The call records one answer; to ask Kaylee back, use the app, the console or team chat.
API
All endpoints live under api/wp-crm/ai-requests/{organisationId} and need a bearer token for an Admin, Account Owner, or bot user (how to get one). Interactive reference: https://api.lodgestory.com/api/docs/public → WP CRM — AI Requests. Subscribe to ai_request.created under Webhooks to learn about new requests the moment they are raised, then answer them here.
| Endpoint | What it does |
|---|---|
GET / | List requests, newest first — the pending ones by default. status filters (PENDING, ANSWERED, APPROVED, REJECTED, EXPIRED, CANCELLED, HANDLED_DIRECTLY, TAKEN_OVER, or ALL); since keeps only requests raised after that time; limit (default 50, up to 200) and offset page through. Returns requests, total, limit and offset. |
GET /{requestId} | One request with its current status and outcome. |
POST /{requestId}/answer | Answer a question or a choice: text (up to 4,000 characters; for a choice, an option's label picks that option) and optional verbatim — true means the agent sends your text to the customer exactly as written. Questions and choices only. |
POST /{requestId}/approve | Approve a held change — as proposed, or with editedArgs (the values to run with, same keys as the request's action.args). The change runs and the agent tells the customer. Approvals only. |
POST /{requestId}/reject | Reject a held change: nothing runs. Optional reason, for the agent — never quoted to the customer. Approvals only. |
POST /{requestId}/ask-back | Ask Kaylee a question about the request before you decide: text (up to 300 characters). Questions, choices and approvals. Returns the request record with the new entry in askBacks; Kaylee's reply lands on the record within moments — or once the customer answers, when only they could tell her — so read the request again, or subscribe to ai_request.replied. One open question at a time, up to three per request. |
- First answer wins. A request somebody already handled returns
409. Answering an approval, or approving a question, returns400. - Ask back returns
409when the request is already handled, when Kaylee is still answering the previous question, or at the three-question limit — the message says which — and400for empty text. - What you get back is the request record — the same facts as the
ai_requestwebhook object in camelCase:aiRequestId,seq,kind,status,stage,question,customerQuote,options,action,answer,decision,editedArgs,answerVerbatim,chat,target,turn,resolvedVia,resolvedByUserId,resolvedAt,executionStatus,expiresAt,createdAt,updatedAt, andaskBacks— the ask-back thread, oldest first, each withn,question,askedByUserId,askedVia,askedAt,status(OPEN,ASKED_CUSTOMER,ANSWEREDorCLOSED),answer,answeredAtandansweredBy(KAYLEE,SYSTEMornull). - After an approval the change runs inside the conversation right after your call returns; read the request again for
executionStatusDONEorFAILED. - Rate limits: 60 calls a minute per endpoint (120 for reading one request).
AI assistants (MCP): the same six actions are available to Claude, ChatGPT or any MCP assistant connected to your workspace — ai_requests_list, ai_request_get, ai_request_answer, ai_request_approve, ai_request_reject, ai_request_ask_back. See AI assistants (MCP).
Changelog
- Oct 2026 — Ask back: on any open request a teammate can ask Kaylee a question of their own — up to 300 characters, one at a time, three per request — from the console, the request card in the conversation, team chat, the mobile app,
POST …/ask-backon the API and the newai_request_ask_backMCP tool. She answers privately from the conversation and her instructions, or checks with the customer first; the thread shows wherever the request does, the asker gets a bell and a phone notification, andai_request.replieddelivers her replies to your systems. The AI Agent step also gained Facts to collect first and remembers the team's answers within a step — see Bot Journeys → Chat actions. - Oct 2026 — Kaylee console launched: the AI Agent step can ask your team and hold changes for approval; requests escalate by turn, then phone the on-call roster on your own numbers when nobody is online; the orb, the console (panel and page), cards in the conversation and team chat, a banner in the mobile app, Teams on call with hours and rosters,
ai_request.created/ai_request.answeredwebhooks, theapi/wp-crm/ai-requestsAPI and five MCP tools.
Related modules & next steps
- Bot Journeys → Chat actions — switch on Ask the team and set Needs approval per action on the AI Agent step.
- Teams — the teams that go on call.
- Team Chat & Presence — who counts as online, and where the team chat card lands.
- Push Notifications — get the your turn alert on your phone.
- Calls and Lodgestory Voice — the softphone and numbers the phone step uses.
- Webhooks and the Webhooks API reference — receive requests and answers in your own systems.
- AI assistants (MCP) — answer and approve from Claude or ChatGPT.
Updated about 1 hour ago
