CA499d9a98726e59ef9bf969387e32e23d
ModPod Podiatry · +61481222413 → +61468078235 · pracsuite
Started 28/05/2026, 1:39:55 pm · Duration 179s · Turns 10 · Outcome escalated · End caller_hangup
Cost $1.0660 AUD (LLM $0.4228 · CR $0.0948 · TTS $0.4806 · STT $0.0204 · Twilio $0.0474)
Call recording · 177s
›Full Transcript · 30 messages
+0:15.4+0:16.0+0:22.4+0:23.0+0:31.8+0:32.3immediate_ack+0:34.7+0:47.4+0:47.9immediate_ack+0:51.9tool_lead_in+0:55.5+1:10.8+1:11.3immediate_ack+1:17.7tool_lead_in+1:21.5+1:41.7+1:42.1immediate_ack+1:42.5+1:55.3+1:55.8immediate_ack+2:01.1+2:16.2+2:16.7immediate_ack+2:23.9+2:34.5+2:35.0immediate_ack+2:38.9tool_lead_in+2:44.8+2:53.1+2:53.2State Flow · 11 states · 30 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:
- 4000bbd1-c289-4846-ab2a-f4024177d2af
- greeting· 4.1s 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:03.8Prefetched the caller’s record in 3.8s. 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 - answering query· 11.8s laterSTATE 03answering query/ load_existing_bookingsflow state
answering_queryRead-only flow where the caller asked about their existing bookings ("what do I have coming up?") or pricing. task.kind === query. Bookings are prefetched at init so this state ANSWERS from session data rather than re-loading.
- Enters when
- task.kind === query (caller asked about upcoming appointments, pricing, or returned-call intent needs clarifying). Promoted from booking_discovery automatically.
- Exits when
- Caller picks an action → booking_discovery / rescheduling / cancelling. Caller closes → closing.
- Allowed tools
- GetCurrentlyBookedAppts (for refresh edge cases only — data is pre-loaded), GetPatientDetails, EscalateToHuman, TransferCall. No write tools, no CheckAvailability.
load_existing_bookingsphaseFetch the caller’s current/upcoming bookings so we can act on the right one.
+0:15.7FSM routed to answering query (load existing bookings). Because booking request medium — said booking-related words. Agent ran answer current booking status. No tools unlocked yet (still gathering info).USER+0:15.4Do I have any upcoming appointmentBOT+0:16.0I can't see any upcoming appointments for you at the moment.FSM internals
trigger:booking_request/medium · evidence=booking_terms · context=unknowndirective:current_booking_status_knownaction:answer_current_booking_statusallowed tools:none (still gathering)raw:current_booking_status_known - booking in progress· 7.0s laterSTATE 04booking in progress/ elicit_serviceflow state
elicit_servicephaseDetermine which service / appointment type the caller wants.
+0:22.7FSM routed to booking in progress (elicit service). Because booking request medium — said booking-related words. Agent asked the caller what their visit is about. No tools unlocked yet (still gathering info).USER+0:22.4Okay. Could I book an appointment in place?BOT+0:23.0No problem. What's the main concern you'd like the podiatrist to help with, and how long has it been going on?FSM internals
trigger:booking_request/medium · evidence=booking_terms · context=unknowndirective:visit_reason_requiredaction:ask_visit_reasonallowed tools:none (still gathering)raw:visit_reason_required - awaiting service lookup· 9.5s laterSTATE 05awaiting service lookup/ elicit_serviceflow state
elicit_servicephaseDetermine which service / appointment type the caller wants.
+0:32.1FSM routed to awaiting service lookup (elicit service). Because no specific rule matched the caller’s last turn — no FSM rule matched. Directive: awaiting service lookup. Tools available: GetServicesAndPricing, GetAppointmentTypes, GetPatientDetails, ConvertTimezone, EscalateToHuman, TransferCall.USER+0:31.8I need a new pair of orthotics.BOT+0:32.3immediate_ackMm-hmm.BOT+0:34.7Let me see what we offer for orthotics. Just so I can find the right appointment, which of our clinics works best for you — Deewhy, Mossmen, North Ryde, Rose Bay, or Sydney?USER+0:47.4Dee WhyBOT+0:47.9immediate_ackI'll check that now.BOT+0:51.9tool_lead_inLet me find the right service for you.toolGetAppointmentTypes372ms · ok+0:52.3in:{}out:[{"name":"Home Visit Morning","duration_minutes":30,"appointment_type_id":"50011"},{"name":"Strapping 20 mins","duration_minutes":30,"appointment_type_id":"500…BOT+0:55.5For a new pair of orthotics, we'd do a New Biomechanical assessment — that's a 40-50 minute appointment where we put you on our special medical treadmill to map pressure points and how you walk, then build your personalised plan. Have you had orthotics before, or would this be your first pair?FSM internals
trigger:unknown/low · evidence=no_rule_matched · context=unknowndirective:awaiting_service_lookupallowed tools:GetServicesAndPricing, GetAppointmentTypes, GetPatientDetails, ConvertTimezone, EscalateToHuman, TransferCallraw:awaiting_service_lookup - booking in progress· 39.0s laterSTATE 06booking in progress/ elicit_serviceflow state
elicit_servicephaseDetermine which service / appointment type the caller wants.
+1:11.1FSM routed to booking in progress (elicit service). Because no specific rule matched the caller’s last turn — no FSM rule matched. Directive: booking in progress. Tools available: GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCall.USER+1:10.8I... I've had authorities before.BOT+1:11.3immediate_ackOkay.BOT+1:17.7tool_lead_inGot it, so this would be a reorder. Let me check what's available at Dee Why for you.FSM internals
trigger:unknown/low · evidence=no_rule_matched · context=unknowndirective:booking_in_progressallowed tools:GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCallraw:booking_in_progress - awaiting service lookup· 6.8s laterSTATE 07awaiting service lookup/ check_availabilityflow state
check_availabilityphaseLooking up available slots via CheckAvailability.
+1:17.9FSM routed to awaiting service lookup (check availability). Directive: awaiting service lookup check availability. Tools available: GetServicesAndPricing, GetAppointmentTypes, GetPatientDetails, ConvertTimezone.FSM internals
directive:awaiting_service_lookup / check_availabilityallowed tools:GetServicesAndPricing, GetAppointmentTypes, GetPatientDetails, ConvertTimezoneraw:awaiting_service_lookup / check_availability - offering slots· 3.3s laterSTATE 08offering slots/ present_slotsflow state
offering_slotsinsideappointment_settingCheckAvailability returned candidate slots and the agent has read them back. The caller has not yet picked one or confirmed. Tools restricted to lookups so the agent can answer questions about the offered service without re-calling CheckAvailability or writing.
- Enters when
- Prior assistant turn offered two concrete slots AND session has fresh candidate_slots AND the caller has NOT yet picked one or confirmed.
- Exits when
- Caller picks a slot → awaiting_final_confirmation. Caller asks for different times/service → resolving_service / resolving_location. Caller asks a question about the offered service → stay in offering_slots; LLM answers via lookups. Caller hangs up → closing.
- Allowed tools
- GetServicesAndPricing, GetAppointmentTypes, EscalateToHuman, TransferCall. NO CheckAvailability (slots already loaded). NO write tools.
present_slotsphaseReading the available times back to the caller.
+1:21.2FSM routed to offering slots (present slots). Directive: offering slots present slots inline. Tools available: GetServicesAndPricing, GetAppointmentTypes, GetPatientDetails, EscalateToHuman, TransferCall.toolCheckAvailability3300ms · ok+1:21.2in:{"business_id":"37","appointment_type_id":"50014"}out:{"locations":[{"id":"37","name":"ModPod Podiatry - Dee Why"}],"total_slots":4,"location_name":"ModPod Podiatry - Dee Why","practitioners":[{"id":"27","name":"J…BOT+1:21.5I can do a Biomechanical Existing Pt appointment for Fri 29 May, 11am with Jake Murphy at Dee Why, or a Biomechanical Existing Pt appointment for Fri 5 Jun, 9am with Jake Murphy at Dee Why. Which works better?FSM internals
directive:offering_slots / present_slots_inlineallowed tools:GetServicesAndPricing, GetAppointmentTypes, GetPatientDetails, EscalateToHuman, TransferCallraw:offering_slots / present_slots_inline - awaiting final confirmation· 20.5s laterSTATE 09awaiting 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:41.7FSM routed to awaiting final confirmation. Because slot choice high — two slot choice prompt,slot choice terms. Agent ran final slot confirmation. No tools unlocked yet (still gathering info).USER+1:41.7Friday the twenty ninth.BOT+1:42.1immediate_ackRight.BOT+1:42.5Just to confirm, Daniel, that's a Biomechanical Existing Pt appointment for Fri 29 May, 11am with Jake Murphy at Dee Why. Should I book that in?FSM internals
trigger:slot_choice/high · evidence=two_slot_choice_prompt,slot_choice_terms · context=two_slot_choicedirective:two_slot_choice_selectedaction:final_slot_confirmationallowed tools:none (still gathering)raw:two_slot_choice_selected - booking in progress· 13.9s laterSTATE 10booking in progress/ elicit_serviceflow state
elicit_servicephaseDetermine which service / appointment type the caller wants.
+1:55.6FSM routed to booking in progress (elicit service). Because price question high — pricing terms. Directive: booking in progress. Tools available: GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCall.USER+1:55.3How much is that? Sorry.BOT+1:55.8immediate_ackI'll look at that with you.BOT+2:01.1It'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 you?USER+2:16.2Oh, that's a little bit expensive. Um, is there anything cheaper?BOT+2:16.7immediate_ackLet me go through that with you.BOT+2:23.9I'd want to make sure the team confirms the right option for you rather than guess at a lower price. Want me to have someone give you a quick call back to go over that?USER+2:34.5Sure.BOT+2:35.0immediate_ackGot you.BOT+2:38.9tool_lead_inLet me get that sorted for you.toolEscalateToHuman465ms · ok+2:41.6in:{"reason":"staff callback request","summary":"Daniel Welsh (patient ID 896058, +61481222413) is interested in a new pair of orthotics at Dee Why and was quoted…out:{"success":true,"handed_off":true}BOT+2:44.8The team will give you a call back shortly to go over the options for you, Daniel. Thanks for calling ModPod Podiatry — have a great afternoon!USER+2:53.1Thank you.BOT+2:53.2No worries, have a great day.FSM internals
trigger:price_question/high · evidence=pricing_terms · context=final_confirmationdirective:booking_in_progressallowed tools:GetPatientDetails, CheckAvailability, GetServicesAndPricing, GetAppointmentTypes, ConvertTimezone, EscalateToHuman, TransferCallraw:booking_in_progress - ended· 1m 3s laterSTATE 11endedsynthetic
+2:58.7Call ended after 179s · 10 turns · reason: caller_hangup.
Tool calls · 3
GetAppointmentTypes 372ms · ok
{}[
{
"name": "Home Visit Morning",
"duration_minutes": 30,
"appointment_type_id": "50011"
},
{
"name": "Strapping 20 mins",
"duration_minutes": 30,
"appointment_type_id": "50012"
},
{
"name": "WART",
"duration_minutes": 30,
"appointment_type_id": "150010"
},
{
"name": "Initial Tariq Visit",
"duration_minutes": 30,
"appointment_type_id": "250046"
},
{
"name": "Repeat Tariq Visit",
"duration_minutes": 30,
"appointment_type_id": "250047"
},
{
"name": "Comcare - WC Initial Consult",
"duration_minutes": 30,
"appointment_type_id": "250050"
},
{
"name": "Comcare - WC Standard ",
"duration_minutes": 30,
"appointment_type_id": "250051"
},
{
"name": "Sports Podiatry Follow Up",
"duration_minutes": 30,
"appointment_type_id": "250052"
},
{
"name": "K Laser 20min",
"duration_minutes": 20,
"appointment_type_id": "250055"
},
{
"name": "Collection and KLaser",
"duration_minutes": 30,
"appointment_type_id": "250056"
},
{
"name": "Orthotic Assessment",
"duration_minutes": 0,
"appointment_type_id": "250057"
},
{
"name": "Orth Assessment Existing",
"duration_minutes": 40,
"appointment_type_id": "250058"
},
{
"name": "K Laser/Strapping",
"duration_minutes": 20,
"appointment_type_id": "250060"
},
{
"name": "4 Week Orthotic Review",
"duration_minutes": 0,
"appointment_type_id": "250054"
},
{
"name": "K Laser 10min",
"duration_minutes": 10,
"appointment_type_id": "250059"
},
{
"name": "General 30 mins",
"duration_minutes": 30,
"appointment_type_id": "1000"
},
{
"name": "New Podiatry Comprehensive",
"duration_minutes": 30,
"appointment_type_id": "1001"
},
{
"name": "Biomechanical Existing Pt",
"duration_minutes": 40,
"appointment_type_id": "50002"
},
{
"name": "General 20mins",
"duration_minutes": 20,
"appointment_type_id": "50003"
},
{
"name": "Collection Appt ",
"duration_minutes": 20,
"appointment_type_id": "50004"
},
{
"name": "Orth 6 week check",
"duration_minutes": 20,
"appointment_type_id": "50005"
},
{
"name": "Free Laser Assessment",
"duration_minutes": 30,
"appointment_type_id": "50006"
},
{
"name": "Bio 12 mnth Comprehensive",
"duration_minutes": 30,
"appointment_type_id": "50007"
},
{
"name": "Nail Surgery 1 Toe",
"duration_minutes": 60,
"appointment_type_id": "50009"
},
{
"name": "Nail Surgery 2 Toes",
"duration_minutes": 50,
"appointment_type_id": "50010"
},
{
"name": "New Biomechanical",
"duration_minutes": 40,
"appointment_type_id": "50014"
},
{
"name": "Re-dressing",
"duration_minutes": 30,
"appointment_type_id": "50015"
},
{
"name": "Diabetic Assessment",
"duration_minutes": 30,
"appointment_type_id": "50016"
},
{
"name": "Bio 6 Month Check",
"duration_minutes": 30,
"appointment_type_id": "50017"
},
{
"name": "Initial Laser 1 Foot",
"duration_minutes": 30,
"appointment_type_id": "50019"
},
{
"name": " Hot Laser follow up",
"duration_minutes": 30,
"appointment_type_id": "50020"
},
{
"name": "Shock Wave",
"duration_minutes": 30,
"appointment_type_id": "50021"
},
{
"name": "DVA Foot Health Check",
"duration_minutes": 30,
"appointment_type_id": "50023"
},
{
"name": "Cold Laser",
"duration_minutes": 20,
"appointment_type_id": "50025"
},
{
"name": "Intial Laser 2 Feet",
"duration_minutes": 30,
"appointment_type_id": "50026"
},
{
"name": "Free Bio",
"duration_minutes": 30,
"appointment_type_id": "250025"
},
{
"name": "3 Month Orthotic Review",
"duration_minutes": 20,
"appointment_type_id": "250053"
},
{
"name": "Home Visit Afternoon",
"duration_minutes": 30,
"appointment_type_id": "250061"
}
]CheckAvailability 3300ms · ok
{
"business_id": "37",
"appointment_type_id": "50014"
}{
"locations": [
{
"id": "37",
"name": "ModPod Podiatry - Dee Why"
}
],
"total_slots": 4,
"location_name": "ModPod Podiatry - Dee Why",
"practitioners": [
{
"id": "27",
"name": "Jake Murphy"
},
{
"id": "16",
"name": "Will Zalloua"
}
],
"available_slots": [
{
"business_id": "37",
"business_name": "ModPod Podiatry - Dee Why",
"practitioner_id": "27",
"duration_minutes": 40,
"appointment_start": "2026-05-29T11:00:00",
"practitioner_name": "Jake Murphy",
"appointment_type_id": "50002",
"appointment_type_name": "Biomechanical Existing Pt",
"appointment_start_formatted": "Fri 29 May, 11am [2026-05-29T11:00:00]"
},
{
"business_id": "37",
"business_name": "ModPod Podiatry - Dee Why",
"practitioner_id": "27",
"duration_minutes": 40,
"appointment_start": "2026-06-05T09:00:00",
"practitioner_name": "Jake Murphy",
"appointment_type_id": "50002",
"appointment_type_name": "Biomechanical Existing Pt",
"appointment_start_formatted": "Fri 5 Jun, 9am [2026-06-05T09:00:00]"
},
{
"business_id": "37",
"business_name": "ModPod Podiatry - Dee Why",
"practitioner_id": "27",
"duration_minutes": 40,
"appointment_start": "2026-06-05T14:00:00",
"practitioner_name": "Jake Murphy",
"appointment_type_id": "50002",
"appointment_type_name": "Biomechanical Existing Pt",
"appointment_start_formatted": "Fri 5 Jun, 2pm [2026-06-05T14:00:00]"
},
{
"business_id": "37",
"business_name": "ModPod Podiatry - Dee Why",
"practitioner_id": "16",
"duration_minutes": 40,
"appointment_start": "2026-06-06T10:30:00",
"practitioner_name": "Will Zalloua",
"appointment_type_id": "50002",
"appointment_type_name": "Biomechanical Existing Pt",
"appointment_start_formatted": "Sat 6 Jun, 10:30am [2026-06-06T10:30:00]"
}
],
"deposits_required": false,
"practitioner_name": "Jake Murphy",
"has_multiple_locations": false,
"has_multiple_practitioners": true
}EscalateToHuman 465ms · ok
{
"reason": "staff callback request",
"summary": "Daniel Welsh (patient ID 896058, +61481222413) is interested in a new pair of orthotics at Dee Why and was quoted $255 for a Biomechanical Existing Pt appointment. He found the price a bit high and is asking whether there are lower-cost alternatives. Please call him back to confirm options."
}{
"success": true,
"handed_off": true
}Call Notes
FSM Final State
| status | active |
Flow Diagram · 11 states
- 01init4.1s later
- 02greeting11.8s later
- 03answering query7.0s later
- 04booking in progress9.5s later
- 05awaiting service lookup39.0s later
- 06booking in progress6.8s later
- 07awaiting service lookup3.3s later
- 08offering slots20.5s later
- 09awaiting final confirmation13.9s later
- 10booking in progress1m 3s later
- 11endedinstant
Click a state to jump to its detail card above. Red border = FSM stalled at a tool inside that state.