CA86420b65adb7321dfeb05703c2659b09
ModPod Podiatry · +61481222413 → +61468078235 · pracsuite
Started 25/05/2026, 1:04:09 pm · Duration 106s · Turns 7 · Outcome booked · End caller_hangup
Call recording · 108s
›Full Transcript · 20 messages
+0:16.7+0:17.2immediate_ack+0:17.4+0:27.7+0:28.1immediate_ack+0:29.4+0:29.6+0:30.0immediate_ack+0:36.6tool_lead_in+0:48.4+0:48.4+1:00.8+1:01.7+1:10.7+1:11.1tool_lead_in+1:17.7+1:17.9+1:19.4+1:40.9+1:42.5State Flow · 8 states · 20 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:
- 6d3d5945-7710-48e8-a2fa-314d6d114f15
- greeting· 4.7s 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.5Prefetched the caller’s record in 4.5s. 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· 12.5s laterSTATE 03booking discovery/ load_existing_bookingsflow 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.
load_existing_bookingsphaseFetch the caller’s current/upcoming bookings so we can act on the right one.
+0:17.0FSM routed to booking discovery (load existing bookings). Agent ran answer current booking status. No tools unlocked yet (still gathering info).USER+0:16.7I would like to reschedule my appointment.BOT+0:17.2immediate_ackI can help with that.BOT+0:17.4Daniel, you've got one upcoming appointment: Thu 28 May at 2:10pm with Trent Baker for New Biomechanical.FSM internals
directive:current_booking_status_knownaction:answer_current_booking_statusallowed tools:none (still gathering)raw:current_booking_status_known - booking discovery· 11.0s 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:28.0FSM routed to booking discovery (elicit time window). Directive: reschedule. Tools available: GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCall.USER+0:27.7Yes.BOT+0:28.1immediate_ackGreat, I'll do that now.BOT+0:29.4When works better for you?USER+0:29.6Could I reschedule it to the following week?BOT+0:30.0immediate_ackOne moment.BOT+0:36.6tool_lead_inLet me check what's available the week of the first of June.toolCheckAvailability1463ms · ok+0:38.5in:{"date_to":"2026-06-07","date_from":"2026-06-01","business_id":"36","appointment_type_id":"50014"}out:{"locations":[{"id":"36","name":"ModPod Podiatry - Mosman"}],"total_slots":5,"location_name":"ModPod Podiatry - Mosman","practitioners":[{"id":"22","name":"Ali…BOT+0:48.4Let me check what's available the week of the first of June.BOT+0:48.4There's Wednesday the third of June at one forty PM with Trent Baker, or Monday the first of June at three PM with Alison Pasut. Which works better for you?FSM internals
directive:rescheduleallowed tools:GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCallraw:reschedule - awaiting final confirmation· 32.9s laterSTATE 05awaiting final confirmationflow state
awaiting_final_confirmationinsideappointment_settingFinal slot has been read back to the caller. Waiting for an explicit yes/no before committing the write.
- Enters when
- Caller picked a slot from offering_slots.
- Exits when
- Caller confirms → CreateAppointment fires, → post_booking_closing. Caller declines → offering_slots (re-pick) or resolving_service (re-discover).
- Allowed tools
- No tools allowed. Agent must wait for a verbal yes/no.
+1:00.9FSM routed to awaiting final confirmation. Agent ran final slot confirmation. No tools unlocked yet (still gathering info).USER+1:00.8Uh, Alison would be good.BOT+1:01.7Just to confirm, Daniel, that's Mon 1 Jun, 3pm with Alison Pasut at Mossmen. Should I book that in?FSM internals
directive:two_slot_choice_selectedaction:final_slot_confirmationallowed tools:none (still gathering)raw:two_slot_choice_selected - booking existing patient· 10.1s laterSTATE 06booking existing patient/ commitflow state
booking_existing_patientCaller is an existing patient (identity orthogonal to flow). Available within any flow branch.
- Enters when
- GetPatientDetails returned a match for the caller.
- Exits when
- Identity persists for the call lifetime. Flow dimension transitions independently.
- Allowed tools
- BASE_TOOLS — patient identity is known, no CreatePatient needed.
commitphaseBooking write in flight (CreateAppointment / RescheduleAppointment / etc).
+1:11.0FSM routed to booking existing patient (commit). Agent ran reschedule confirmed selected slot. No tools unlocked yet (still gathering info).USER+1:10.7Yep.BOT+1:11.1tool_lead_inPerfect, I'll move that for you now.toolCancelAppt1241ms · ok+1:12.3in:{"appointment_id":"6403616"}out:{"message":"Appointment cancelled successfully. Cancellation SMS sent.","success":true,"appointment_id":"6403616"}toolCreateAppointment5135ms · ok+1:17.4in:{"starts_at":"2026-06-01T15:00:00","patient_id":"896058","business_id":"36","practitioner_id":"22","appointment_type_id":"50014"}out:{"spoken":"Wonderful, I've got you booked in for Mon 1 Jun, 3pm. We look forward to seeing you, Daniel, and getting that sorted for you. I've sent the confirma…BOT+1:17.7That's moved for you. Wonderful, I've got you booked in for Mon 1 Jun, 3pm. We look forward to seeing you, Daniel, and getting that sorted for you. I've sent the confirmation to your phone.FSM internals
directive:reschedule_confirmation_received_for_loaded_slotaction:reschedule_confirmed_selected_slotallowed tools:none (still gathering)raw:reschedule_confirmation_received_for_loaded_slot - post booking closing· 7.0s laterSTATE 07post booking closingflow state
post_booking_closinginsideappointment_settingBooking has been written. Post-booking actions allowed (confirmation SMS, payment link, telehealth link).
- Enters when
- CreateAppointment / RescheduleAppointment completed successfully.
- Exits when
- Caller ends call → closing (synthetic). Caller starts a new booking → booking_discovery.
- Allowed tools
- SendTextMessage, GetTelehealthLink, CreatePaymentLink, CheckPaymentStatus. No booking writes.
+1:18.0FSM routed to post booking closing. Directive: post booking closing. Tools available: EscalateToHuman, SendTextMessage.USER+1:17.9please.BOT+1:19.4You're welcome, Daniel — see you Monday at three.USER+1:40.9three PM.BOT+1:42.5You're all set, Daniel — we'll see you Monday at three PM at Mosman.FSM internals
directive:post_booking_closingallowed tools:EscalateToHuman, SendTextMessageraw:post_booking_closing - ended· 27.5s laterSTATE 08endedsynthetic
+1:45.5Call ended after 106s · 7 turns · reason: caller_hangup.
Tool calls · 3
CheckAvailability 1463ms · ok
{
"date_to": "2026-06-07",
"date_from": "2026-06-01",
"business_id": "36",
"appointment_type_id": "50014"
}{
"locations": [
{
"id": "36",
"name": "ModPod Podiatry - Mosman"
}
],
"total_slots": 5,
"location_name": "ModPod Podiatry - Mosman",
"practitioners": [
{
"id": "22",
"name": "Alison Pasut"
},
{
"id": "23",
"name": "Trent Baker"
}
],
"available_slots": [
{
"business_id": "36",
"business_name": "ModPod Podiatry - Mosman",
"practitioner_id": "22",
"duration_minutes": 40,
"appointment_start": "2026-06-01T15:00:00",
"practitioner_name": "Alison Pasut",
"appointment_type_id": "50014",
"appointment_start_formatted": "Mon 1 Jun, 3pm [2026-06-01T15:00:00]"
},
{
"business_id": "36",
"business_name": "ModPod Podiatry - Mosman",
"practitioner_id": "22",
"duration_minutes": 40,
"appointment_start": "2026-06-01T15:40:00",
"practitioner_name": "Alison Pasut",
"appointment_type_id": "50014",
"appointment_start_formatted": "Mon 1 Jun, 3:40pm [2026-06-01T15:40:00]"
},
{
"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_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_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_start_formatted": "Thu 4 Jun, 12pm [2026-06-04T12:00:00]"
}
],
"deposits_required": false,
"practitioner_name": "Alison Pasut",
"has_multiple_locations": false,
"has_multiple_practitioners": true
}CancelAppt 1241ms · ok
{
"appointment_id": "6403616"
}{
"message": "Appointment cancelled successfully. Cancellation SMS sent.",
"success": true,
"appointment_id": "6403616"
}CreateAppointment 5135ms · ok
{
"starts_at": "2026-06-01T15:00:00",
"patient_id": "896058",
"business_id": "36",
"practitioner_id": "22",
"appointment_type_id": "50014"
}{
"spoken": "Wonderful, I've got you booked in for Mon 1 Jun, 3pm. We look forward to seeing you, Daniel, and getting that sorted for you. I've sent the confirmation to your phone.",
"status": "booked_and_sms_sent",
"appointment_id": "6403633"
}Call Notes
FSM Final State
| status | active |
| booking_result.status | created |
Flow Diagram · 8 states
- 01init4.7s later
- 02greeting12.5s later
- 03booking discovery11.0s later
- 04booking discovery32.9s later
- 05awaiting final confirmation10.1s later
- 06booking existing patient7.0s later
- 07post booking closing27.5s later
- 08endedinstant
Click a state to jump to its detail card above. Red border = FSM stalled at a tool inside that state.