Services
Booking & Appointment Intake
Parses booking requests, spots missing details, and confirms appointments automatically.
How the data flows
Requests move between your backend and the AI workflows automatically. Here's the exact path a request takes.
AI workflow
booking_intake_workflow
Parses the booking request and starts confirmation
Backend event
request_received
Backend event
confirmation_ready
AI workflow
booking_confirmation_workflow
Confirms the booking or asks for missing details
What you get
Every template is built from two kinds of pieces: Workflows and Response Formats.
Workflow
booking_intake_workflow
Parses the booking request and starts confirmation
Workflow
booking_confirmation_workflow
Confirms the booking or asks for missing details
Response format
booking_intake_response
Parsed details from the booking request
Response format
booking_confirmation_response
Confirmation or follow-up message for the customer
Details
The full specification of each workflow, with plain-English explanations. Everything below is set in the downloaded file and can be changed after import.
booking_intake_workflow
Parses the booking request and starts confirmation
The primary model plus automatic fallback models if the primary is unavailable.
The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.
Fields you include in each request so the workflow can personalise its answer.
Identical requests are answered from memory within this window, which is faster and cheaper.
Steps that run automatically around this workflow, in order.
Runs live against your connected AI provider.
booking_confirmation_workflow
Confirms the booking or asks for missing details
The primary model plus automatic fallback models if the primary is unavailable.
The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.
Fields you include in each request so the workflow can personalise its answer.
Runs live against your connected AI provider.
How to use it
- 1
Download the template
The file is a portable JSON bundle - safe to share and easy to read.
- 2
Open a project in ModelRiver
Sign in, pick a project, and make sure the AI providers used by this template are connected. You can connect them from the Providers section.
- 3
Import it
Open the Import button in your project, paste or upload the file, review the preview, and confirm. Everything is created atomically, so nothing is overwritten. How import & export works
Template file
Technical users can inspect the raw bundle below.
View full template JSON
{
"version": 1,
"structures": [
{
"name": "booking_intake_response",
"description": "Parsed details from the booking request",
"example": {
"service_type": "haircut",
"requested_date": "2026-08-12",
"requested_time": "14:30",
"missing_details": [
"phone number"
]
},
"schema": {
"type": "object",
"properties": {
"service_type": {
"type": "string"
},
"requested_date": {
"type": "string"
},
"requested_time": {
"type": "string"
},
"missing_details": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"service_type",
"requested_date",
"requested_time",
"missing_details"
],
"additionalProperties": false
}
},
{
"name": "booking_confirmation_response",
"description": "Confirmation or follow-up message for the customer",
"example": {
"confirmation_status": "needs_more_info",
"confirmation_message": "Thanks! Could you share a phone number to confirm your appointment?",
"next_steps": "Reply with your phone number"
},
"schema": {
"type": "object",
"properties": {
"confirmation_status": {
"type": "string",
"enum": [
"confirmed",
"needs_more_info"
]
},
"confirmation_message": {
"type": "string"
},
"next_steps": {
"type": "string"
}
},
"required": [
"confirmation_status",
"confirmation_message",
"next_steps"
],
"additionalProperties": false
}
}
],
"workflows": [
{
"name": "booking_intake_workflow",
"description": "Parses the booking request and starts confirmation",
"provider": "openai",
"model": "gpt-5.6-terra",
"backups": [
{
"provider": "anthropic",
"model": "claude-haiku-4-5-20251001"
}
],
"request_type": "chat",
"system_instructions": "Parse the booking request: identify the service, the requested date and time, and any details that are missing. Keep the date and time as the customer wrote them.",
"structure": "booking_intake_response",
"customer_fields": [
"customer_name",
"request_text",
"preferred_date"
],
"test_mode": false,
"cache_window_seconds": 600,
"backend_pipeline": {
"enabled": true,
"events": [
{
"name": "request_received"
},
{
"name": "confirm_booking",
"target_workflow": "booking_confirmation_workflow"
},
{
"name": "confirmation_ready"
}
]
}
},
{
"name": "booking_confirmation_workflow",
"description": "Confirms the booking or asks for missing details",
"provider": "openai",
"model": "gpt-5.6-terra",
"backups": [
{
"provider": "anthropic",
"model": "claude-haiku-4-5-20251001"
}
],
"request_type": "chat",
"system_instructions": "Confirm the appointment when all details are present, or ask the customer for anything missing. Write a warm, short confirmation or follow-up message.",
"structure": "booking_confirmation_response",
"customer_fields": [
"customer_name",
"request_text",
"preferred_date"
],
"test_mode": false
}
]
}Looking for something else?
More templates are on the way. In the meantime, you can build your own workflows from scratch in the ModelRiver console.