CA47a32975b1b9f1418f5ee9de9834625e
ModPod Podiatry · +61481222413 → +61468078235 · pracsuite
Started 26/05/2026, 7:58:58 pm · Duration 192s · Turns 11 · Outcome cancelled · End caller_hangup
Call recording · 193s
›Full Transcript · 31 messages
+0:17.3+0:17.7immediate_ack+0:19.4+0:28.4+0:34.2tool_lead_in+0:47.8+0:47.8+0:58.2+1:04.4+1:10.0+1:14.7tool_lead_in+1:20.0+1:20.0+1:29.4+1:38.0tool_lead_in+1:47.2+1:47.2+1:59.1+1:59.5+2:07.7+2:08.6+2:20.1+2:30.2+2:47.0+2:47.5immediate_ack+2:47.9+2:55.9+2:56.4immediate_ack+2:59.6+3:07.4+3:07.5State Flow · 11 states · 31 utterances
- STATE 01initsynthetic
initWebSocket opened and prefetch (patient lookup, current bookings, recent thread, preferences) is in flight. No agent utterance yet.
- Enters when
- Twilio ConversationRelay opens the WebSocket.
- Exits when
- Prefetch completes → greeting.
- Allowed tools
- No tools — the route layer is fetching DB state in parallel.
+0:00.0Call answered. Agent is initializing the session for ModPod Podiatry.- Tenant:
- ModPod Podiatry
- PMS:
- pracsuite
- Direction:
- +61481222413 → +61468078235
- Conversation:
- 016850e6-bc96-40cf-8937-02c7d635e14c
- greeting· 4.4s laterSTATE 02greetingsynthetic
greetingDeterministic agent greeting plays once prefetch resolves and before the caller speaks for the first time.
- Enters when
- Prefetch resolves; route layer emits the greeting TTS.
- Exits when
- Caller responds → first buildVoiceBookingFlow pass routes to booking_discovery / rescheduling / cancelling / answering_query / verifying_identity.
- Allowed tools
- No tools — single deterministic utterance.
+0:04.2Prefetched the caller’s record in 4.2s. Agent is now greeting the caller.Data prefetched for this callerMatched patientName:Daniel WelshMobile:+61481222413DOB:—First seen:—Last seen:—Outreach status:noneRecent past appointments (showing 5 of 27)6/6/26, 10:30 amNew Biomechanical· Will Zalloua· ModPod Podiatry - Dee Whycancelled5/6/26, 9:00 amFree Bio· Jake Murphy· ModPod Podiatry - Dee Whycancelled4/6/26, 12:00 pmNew Biomechanical· Alison Pasut· ModPod Podiatry - Mosmancancelled3/6/26, 2:50 pmNew Biomechanical· Trent Baker· ModPod Podiatry - Mosmancancelled1/6/26, 3:00 pmNew Biomechanical· Alison Pasut· ModPod Podiatry - Mosmancancelled
27 total appointments on file · 0 pre-call messages in this conversation - booking discovery· 13.3s laterSTATE 03booking discovery/ elicit_time_windowflow state
booking_discoveryRouter state. Identifies caller intent and dispatches to a super-state branch (appointment_setting / appointment_adjustment / qa / handoff).
- Enters when
- Call starts after greeting, OR a sub-flow returns to the router (e.g. qa side-loop completes).
- Exits when
- Routes into appointment_setting (new booking), appointment_adjustment (touch existing), qa (side question), or handoff (callback/transfer/escalation).
- Allowed tools
- BASE_TOOLS minus CreatePatient. Read-only lookups while still gathering intent.
elicit_time_windowphaseDetermine the caller’s preferred date/time window.
+0:17.5FSM routed to booking discovery (elicit time window). Directive: reschedule. Tools available: GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCall.USER+0:17.3I have an upcoming appointment, and I would like to reschedule it.BOT+0:17.7immediate_ackI can help with that.BOT+0:19.4You've got an appointment with Will Zalloua on Saturday the 6th of June at half past ten—when would work better for you?USER+0:28.4Uh, next Tuesday.BOT+0:34.2tool_lead_inLet me check what's available for you then.toolCheckAvailability3163ms · ok+0:38.1in:{"date_to":"2026-06-02","date_from":"2026-06-02","business_id":"37","appointment_type_id":"50014"}out:{"total_slots":0,"location_name":"Unknown","available_slots":[],"deposits_required":false,"practitioner_name":"Unknown","has_multiple_locations":false,"has_mul…BOT+0:47.8Let me check what's available for you then.BOT+0:47.8Nothing's coming up at Dee Why on Tuesday the 2nd of June. Would you like me to look at a different day at Dee Why, or are you open to another clinic?FSM internals
directive:rescheduleallowed tools:GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCallraw:reschedule - booking discovery· 40.9s laterSTATE 04booking discovery/ elicit_time_windowflow state
booking_discoveryRouter state. Identifies caller intent and dispatches to a super-state branch (appointment_setting / appointment_adjustment / qa / handoff).
- Enters when
- Call starts after greeting, OR a sub-flow returns to the router (e.g. qa side-loop completes).
- Exits when
- Routes into appointment_setting (new booking), appointment_adjustment (touch existing), qa (side question), or handoff (callback/transfer/escalation).
- Allowed tools
- BASE_TOOLS minus CreatePatient. Read-only lookups while still gathering intent.
elicit_time_windowphaseDetermine the caller’s preferred date/time window.
+0:58.5FSM routed to booking discovery (elicit time window). Directive: reschedule. Tools available: GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCall.USER+0:58.2Another clinic, please.BOT+1:04.4Which clinic would suit you best — Mosman, Sydney CBD, North Ryde, or Rose Bay?USER+1:10.0Mosman.BOT+1:14.7tool_lead_inLet me check that for you.toolCheckAvailability974ms · ok+1:16.5in:{"date_to":"2026-06-02","date_from":"2026-06-02","business_id":"36","appointment_type_id":"50014"}out:{"total_slots":0,"location_name":"Unknown","available_slots":[],"deposits_required":false,"practitioner_name":"Unknown","has_multiple_locations":false,"has_mul…BOT+1:20.0Let me check that for you.BOT+1:20.0Nothing available at Mosman on Tuesday the 2nd of June either. Would you like me to look at the rest of next week at Mosman, or try a different clinic?FSM internals
directive:rescheduleallowed tools:GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCallraw:reschedule - booking discovery· 31.0s laterSTATE 05booking discoveryflow state
booking_discoveryRouter state. Identifies caller intent and dispatches to a super-state branch (appointment_setting / appointment_adjustment / qa / handoff).
- Enters when
- Call starts after greeting, OR a sub-flow returns to the router (e.g. qa side-loop completes).
- Exits when
- Routes into appointment_setting (new booking), appointment_adjustment (touch existing), qa (side question), or handoff (callback/transfer/escalation).
- Allowed tools
- BASE_TOOLS minus CreatePatient. Read-only lookups while still gathering intent.
+1:29.5FSM routed to booking discovery. Directive: still gathering booking details. Tools available: GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCall.USER+1:29.4rest of next week.BOT+1:38.0tool_lead_inLet me check that for you.toolCheckAvailability2014ms · ok+1:41.1in:{"date_to":"2026-06-07","date_from":"2026-06-03","business_id":"36","appointment_type_id":"50014"}out:{"locations":[{"id":"36","name":"ModPod Podiatry - Mosman"}],"total_slots":3,"location_name":"ModPod Podiatry - Mosman","practitioners":[{"id":"23","name":"Tre…BOT+1:47.2Let me check that for you.BOT+1:47.2I've got Wednesday the 3rd of June at one forty PM with Trent Baker, or Thursday the 4th of June at midday with Alison Pasut — both at Mossmen. Which works better for you?FSM internals
directive:booking_discoveryallowed tools:GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCallraw:booking_discovery - booking discovery· 29.7s laterSTATE 06booking discoveryflow state
booking_discoveryRouter state. Identifies caller intent and dispatches to a super-state branch (appointment_setting / appointment_adjustment / qa / handoff).
- Enters when
- Call starts after greeting, OR a sub-flow returns to the router (e.g. qa side-loop completes).
- Exits when
- Routes into appointment_setting (new booking), appointment_adjustment (touch existing), qa (side question), or handoff (callback/transfer/escalation).
- Allowed tools
- BASE_TOOLS minus CreatePatient. Read-only lookups while still gathering intent.
+1:59.1FSM routed to booking discovery. Agent ran answer practitioner experience question. No tools unlocked yet (still gathering info).USER+1:59.1Which one's more senior?BOT+1:59.5Of those two, Trent Baker is the more experienced podiatrist. Which appointment would you prefer?FSM internals
directive:practitioner_experience_question_during_slot_choiceaction:answer_practitioner_experience_questionallowed tools:none (still gathering)raw:practitioner_experience_question_during_slot_choice - booking discovery· 8.8s laterSTATE 07booking discovery/ present_slotsflow state
booking_discoveryRouter state. Identifies caller intent and dispatches to a super-state branch (appointment_setting / appointment_adjustment / qa / handoff).
- Enters when
- Call starts after greeting, OR a sub-flow returns to the router (e.g. qa side-loop completes).
- Exits when
- Routes into appointment_setting (new booking), appointment_adjustment (touch existing), qa (side question), or handoff (callback/transfer/escalation).
- Allowed tools
- BASE_TOOLS minus CreatePatient. Read-only lookups while still gathering intent.
present_slotsphaseReading the available times back to the caller.
+2:08.0FSM routed to booking discovery (present slots). Agent ran propose initial slot. No tools unlocked yet (still gathering info).USER+2:07.7Okay. Let's go with the more senior one.BOT+2:08.6The next appointment I can see is a New Biomechanical appointment for Wed 3 Jun, 1:40pm with Trent Baker at Mossmen. Does that work for you?FSM internals
directive:initial_slot_readyaction:propose_initial_slotallowed tools:none (still gathering)raw:initial_slot_ready - booking discovery· 12.2s laterSTATE 08booking discoveryflow state
booking_discoveryRouter state. Identifies caller intent and dispatches to a super-state branch (appointment_setting / appointment_adjustment / qa / handoff).
- Enters when
- Call starts after greeting, OR a sub-flow returns to the router (e.g. qa side-loop completes).
- Exits when
- Routes into appointment_setting (new booking), appointment_adjustment (touch existing), qa (side question), or handoff (callback/transfer/escalation).
- Allowed tools
- BASE_TOOLS minus CreatePatient. Read-only lookups while still gathering intent.
+2:20.1FSM routed to booking discovery. Directive: still gathering booking details. Tools available: GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCall.USER+2:20.1How much is that again?BOT+2:30.2It's two hundred and fifty-five dollars total, made up of a one hundred and forty-five dollar initial assessment and history, and one hundred and ten dollars for the biomechanical exam component. Shall I go ahead and book that in for Wednesday the 3rd of June at one forty PM with Trent Baker?FSM internals
directive:booking_discoveryallowed tools:GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCallraw:booking_discovery - booking discovery· 27.1s laterSTATE 09booking discovery/ confirm_cancelflow state
booking_discoveryRouter state. Identifies caller intent and dispatches to a super-state branch (appointment_setting / appointment_adjustment / qa / handoff).
- Enters when
- Call starts after greeting, OR a sub-flow returns to the router (e.g. qa side-loop completes).
- Exits when
- Routes into appointment_setting (new booking), appointment_adjustment (touch existing), qa (side question), or handoff (callback/transfer/escalation).
- Allowed tools
- BASE_TOOLS minus CreatePatient. Read-only lookups while still gathering intent.
confirm_cancelphaseExplicit confirm before a cancellation write fires.
+2:47.3FSM routed to booking discovery (confirm cancel). Agent ran confirm current booking cancellation. No tools unlocked yet (still gathering info).USER+2:47.0Actually, can you just cancel my original appointment?BOT+2:47.5immediate_ackOne moment.BOT+2:47.9Just to confirm, that's Sat 6 Jun at 10:30am with Will Zalloua. Should I go ahead and cancel that?FSM internals
directive:single_current_booking_cancellation_requestedaction:confirm_current_booking_cancellationallowed tools:none (still gathering)raw:single_current_booking_cancellation_requested - booking discovery· 8.9s laterSTATE 10booking discovery/ commitflow state
booking_discoveryRouter state. Identifies caller intent and dispatches to a super-state branch (appointment_setting / appointment_adjustment / qa / handoff).
- Enters when
- Call starts after greeting, OR a sub-flow returns to the router (e.g. qa side-loop completes).
- Exits when
- Routes into appointment_setting (new booking), appointment_adjustment (touch existing), qa (side question), or handoff (callback/transfer/escalation).
- Allowed tools
- BASE_TOOLS minus CreatePatient. Read-only lookups while still gathering intent.
commitphaseBooking write in flight (CreateAppointment / RescheduleAppointment / etc).
+2:56.2FSM routed to booking discovery (commit). Agent ran cancel confirmed current booking. No tools unlocked yet (still gathering info).USER+2:55.9Yes.BOT+2:56.4immediate_ackGreat, I'll do that now.toolCancelAppt3058ms · ok+2:59.3in:{"appointment_id":"6407310"}out:{"message":"Appointment cancelled successfully. Cancellation SMS sent.","success":true,"appointment_id":"6407310"}BOT+2:59.6That's been cancelled for you. I've sent a cancellation confirmation to your phone. Is there anything else I can help with?USER+3:07.4No. That's all good. Thank you.BOT+3:07.5No worries, have a great day.FSM internals
directive:current_booking_cancellation_confirmedaction:cancel_confirmed_current_bookingallowed tools:none (still gathering)raw:current_booking_cancellation_confirmed - ended· 16.0s laterSTATE 11endedsynthetic
+3:12.2Call ended after 192s · 11 turns · reason: caller_hangup.
Tool calls · 4
CheckAvailability 3163ms · ok
{
"date_to": "2026-06-02",
"date_from": "2026-06-02",
"business_id": "37",
"appointment_type_id": "50014"
}{
"total_slots": 0,
"location_name": "Unknown",
"available_slots": [],
"deposits_required": false,
"practitioner_name": "Unknown",
"has_multiple_locations": false,
"has_multiple_practitioners": false
}CheckAvailability 974ms · ok
{
"date_to": "2026-06-02",
"date_from": "2026-06-02",
"business_id": "36",
"appointment_type_id": "50014"
}{
"total_slots": 0,
"location_name": "Unknown",
"available_slots": [],
"deposits_required": false,
"practitioner_name": "Unknown",
"has_multiple_locations": false,
"has_multiple_practitioners": false
}CheckAvailability 2014ms · ok
{
"date_to": "2026-06-07",
"date_from": "2026-06-03",
"business_id": "36",
"appointment_type_id": "50014"
}{
"locations": [
{
"id": "36",
"name": "ModPod Podiatry - Mosman"
}
],
"total_slots": 3,
"location_name": "ModPod Podiatry - Mosman",
"practitioners": [
{
"id": "23",
"name": "Trent Baker"
},
{
"id": "22",
"name": "Alison Pasut"
}
],
"available_slots": [
{
"business_id": "36",
"business_name": "ModPod Podiatry - Mosman",
"practitioner_id": "23",
"duration_minutes": 40,
"appointment_start": "2026-06-03T13:40:00",
"practitioner_name": "Trent Baker",
"appointment_type_id": "50014",
"appointment_type_name": "New Biomechanical",
"appointment_start_formatted": "Wed 3 Jun, 1:40pm [2026-06-03T13:40:00]"
},
{
"business_id": "36",
"business_name": "ModPod Podiatry - Mosman",
"practitioner_id": "23",
"duration_minutes": 40,
"appointment_start": "2026-06-03T14:20:00",
"practitioner_name": "Trent Baker",
"appointment_type_id": "50014",
"appointment_type_name": "New Biomechanical",
"appointment_start_formatted": "Wed 3 Jun, 2:20pm [2026-06-03T14:20:00]"
},
{
"business_id": "36",
"business_name": "ModPod Podiatry - Mosman",
"practitioner_id": "22",
"duration_minutes": 40,
"appointment_start": "2026-06-04T12:00:00",
"practitioner_name": "Alison Pasut",
"appointment_type_id": "50014",
"appointment_type_name": "New Biomechanical",
"appointment_start_formatted": "Thu 4 Jun, 12pm [2026-06-04T12:00:00]"
}
],
"deposits_required": false,
"practitioner_name": "Trent Baker",
"has_multiple_locations": false,
"has_multiple_practitioners": true
}CancelAppt 3058ms · ok
{
"appointment_id": "6407310"
}{
"message": "Appointment cancelled successfully. Cancellation SMS sent.",
"success": true,
"appointment_id": "6407310"
}Call Notes
FSM Final State
| status | active |
Flow Diagram · 11 states
- 01init4.4s later
- 02greeting13.3s later
- 03booking discovery40.9s later
- 04booking discovery31.0s later
- 05booking discovery29.7s later
- 06booking discovery8.8s later
- 07booking discovery12.2s later
- 08booking discovery27.1s later
- 09booking discovery8.9s later
- 10booking discovery16.0s later
- 11endedinstant
Click a state to jump to its detail card above. Red border = FSM stalled at a tool inside that state.