Designing AI Chatbot Conversation Flows - GPT Scenario Writing Methods
The secret to natural conversations! Learn how to design chatbot scenarios that understand user intent and respond appropriately.
Conversation is Flow
"I'd like to order a pizza." "What kind of pizza?" "Pepperoni." "What size?" "Large." "Any drinks?" "Coke please."
This is natural conversation. But for a chatbot to do this?
"To order pizza, please provide your name, address, phone number, pizza type, size, toppings, drinks, and payment method all at once."
This isn't right, is it?
Today, I'll show you how to design flows for naturally conversing chatbots like humans.
What is Conversation Flow?
Conversation flow is the path of exchanges between chatbot and user.
Bad Conversation Flow
User: Recommend a trip
Chatbot: I'll recommend travel destinations.
Paris, Tokyo, New York, London, Rome...
(lists 50 cities)
Good Conversation Flow
User: Recommend a trip
Chatbot: Great! Let me ask a few things.
When are you planning to go?
User: Next month
Chatbot: Next month it is!
Domestic or international travel?
User: International
Chatbot: International trip! How exciting ๐
What style of travel do you prefer?
1. Resort/relaxation
2. City sightseeing
3. Activities/adventure
User: Resort
Chatbot: Perfect! For next month at a resort,
I recommend Phuket, Thailand or Bali.
Good weather and reasonable prices.
Need more detailed information?
See the difference?
3 Steps of Conversation Flow Design
Step 1: Define Goals
What should the chatbot achieve?
Examples:
- Take pizza order
- Recommend trip
- Book consultation
- Solve problems
Step 2: Organize Needed Information
What information is essential for the goal?
Pizza Order Example:
Essential Info:
- Pizza type
- Size
- Address
- Phone number
Optional Info:
- Extra toppings
- Drinks/sides
- Special requests
Step 3: Determine Question Order
In what order to ask?
Considerations:
- Easy questions first
- Narrow down choices
- Naturally contextual
Pizza Order Flow:
1. Delivery/pickup choice (big category)
2. Pizza type (core)
3. Size (details)
4. Additional options (choice)
5. Delivery info (essential)
6. Confirm and payment
Drawing Flowcharts
Words alone get confusing. Draw it out.
Simple Example: Cafe Order
[Start]
โ
"What drink would you like?"
โ
Coffee โโ Non-coffee
โ โ
"Which coffee?" "Which drink?"
- Americano - Juice
- Latte - Ade
- Cappuccino - Smoothie
โ โ
"What size?"
- Tall
- Grande
- Venti
โ
"Hot/Iced?"
โ
"Here/To-go?"
โ
"Total 5,500 won"
โ
[Complete]
Complex Example: Consultation Booking
[Start]
โ
"How can I help you?"
โ
โโโโโโโผโโโโโโ
Info Consult Other
โ โ โ
FAQ "What type?" Staff
โ
โโโโผโโโ
Career Psych Other
โ โ โ
"Preferred date?"
โ
"Morning/Afternoon?"
โ
"Choose from 3 available times"
โ
"Enter contact info"
โ
"Confirmation text sent"
โ
[Complete]
Real Practice: Creating Flow with ChatGPT
Specify the flow in Custom GPT Instructions.
Pizza Order Bot Example:
You are a chatbot that takes pizza orders.
Conversation Flow:
Step 1: Greeting and delivery/pickup choice
Step 2: Menu selection
Step 3: Size selection
Step 4: Additional options
Step 5: Address/contact
Step 6: Order confirmation
Rules for Each Step:
[Step 1] Start
- Friendly greeting
- Ask "Delivery" or "Pickup"
- Re-ask if no user response
[Step 2] Menu
- Recommend top 3 (Pepperoni, Cheese, Combination)
- Provide "See other menu" option
- Move to Step 3 when user selects
[Step 3] Size
- Provide "M (2 people)", "L (3-4 people)" options
- Include prices
- Move to Step 4 when selected
[Step 4] Additional Options
- "Add drinks?" (optional)
- "Any special requests?" (optional)
- Move to Step 5 if "No" or skip
[Step 5] Info Collection
- If delivery: address, phone number
- If pickup: name, phone number, pickup time
[Step 6] Confirmation
- Show order summary organized
- Display total amount
- "Would you like to order?" confirm
- Yes โ Order complete message
- No โ Ask what to modify
Notes:
- Don't ask multiple questions at once
- Repeat same step if user doesn't respond
- Allow returning to previous step
- Allow cancellation anytime
Example:
Bot: Hello! I'll help you order pizza ๐
Would you like delivery or pickup?
User: Delivery
Bot: Delivery order it is!
Which pizza would you like?
Popular menu:
1. Pepperoni (from 13,000 won)
2. Cheese (from 12,000 won)
3. Combination (from 15,000 won)
Say "menu" for other options!
User: Pepperoni
Bot: Pepperoni pizza, great choice!
Which size?
M (2 people) - 13,000 won
L (3-4 people) - 18,000 won
(Conversation continues...)
Creating Step-by-Step Conversations with Claude Projects
Claude handles long Instructions well.
Travel Recommendation Bot Example:
[System Instructions]
You are a specialized travel recommendation chatbot.
Collect information through conversation and recommend customized destinations.
Conversation Flow Steps:
=== Step 1: Travel Timing ===
Goal: Identify when to travel
Question: "When are you planning to travel?"
Collect: Travel timing (month/season)
Next: Step 2
=== Step 2: Domestic/International ===
Goal: Determine travel range
Question: "Are you thinking domestic or international?"
Collect: destination_type (domestic/international)
Next: Step 3
=== Step 3: Travel Style ===
Goal: Understand preferred type
Question: "What style of travel do you prefer?"
Options:
- Resort/healing
- Sightseeing/culture
- Activities/adventure
- Food/culinary
Collect: travel_style
Next: Step 4
=== Step 4: Budget ===
Goal: Check budget range
Question: "What's your budget per person?"
Options:
- Under 500,000 won
- 500,000-1,000,000 won
- 1,000,000-2,000,000 won
- Over 2,000,000 won
Collect: budget
Next: Step 5
=== Step 5: Recommendation ===
Goal: Recommend destinations with collected info
Output Format:
"Your travel profile:
- Timing: [timing]
- Type: [domestic/international]
- Style: [style]
- Budget: [budget]
Top 3 Recommended Destinations:
1. [Destination]
- Features: [description]
- Expected Cost: [amount]
- Why Recommended: [reason]
2. [Destination]
...
3. [Destination]
...
Need more details? Let me know!"
Next: Handle additional questions or end
=== Conversation Rules ===
- One question at a time
- Move to next step after user responds
- Re-ask if unclear response
- Reset to Step 1 if user inputs "start over"
- Friendly and empathetic tone
=== Exception Handling ===
- If unsure: "That's okay! I'll suggest some popular options"
- Too specific request: "That might be better discussed with a travel agency"
- No budget: "You haven't set a budget! I'll recommend various price ranges"
Handling Branches
Users say unexpected things. Be prepared.
Example: Cafe Order
Basic Flow:
Menu selection โ Size โ Options โ Payment
Branch Situations:
1. "How much is it?"
โ Show price list
โ Return to current step
2. "Recommend something"
โ Show top 3 popular items
โ Move to next step when selected
3. "Cancel order"
โ "Really cancel?" confirm
โ Yes: Return to start
โ No: Continue current step
4. "Start over"
โ Reset all information
โ Return to Step 1
5. "Go back"
โ Return to previous step
6. Incomprehensible input
โ "Sorry, I didn't quite understand"
โ Re-present current question
Instructions Example:
Handle branch commands:
When "price" / "cost" / "how much" input:
โ Display menu and prices
โ "Please select a menu" (return to current step)
When "recommend" / "not sure" input:
โ Display top 3
โ "Please choose from these"
When "cancel" / "quit" input:
โ "Would you like to cancel? (Yes/No)"
โ Yes: "Please visit again!"
โ No: Continue current step
When "start over" / "again" input:
โ Reset all variables
โ Return to greeting step
When "back" / "previous" input:
โ Return to previous step (keep variables)
Other unknown input:
โ "I didn't quite understand. Could you [current question] again?"
Managing Conversation State
Chatbot must remember progress.
State Tracking Example
Current State: step_2_menu_selection
Collected Info:
- delivery_type: "delivery"
- pizza_type: null (not selected yet)
- size: null
- extras: null
- address: null
- phone: null
Next Action: Ask pizza type
State Management in ChatGPT
[Add to Instructions]
Track conversation progress:
Internally record the following each response (not visible to user):
Progress: [Step 1/Step 2/Step 3...]
Completed: [โ Delivery method, โ Menu, โ Size...]
Next Question: [Ask about size]
If user asks "What have I chosen so far?":
Show collected information summary
Example:
"Here's what you've selected so far:
โ Delivery order
โ Pepperoni pizza
โ Size (not selected yet)
โ Additional options (not selected yet)"
Tips for Natural Conversations
1. Confirmation and Empathy
Bad example:
Bot: Size?
User: Large
Bot: Options?
Good example:
Bot: What size would you like?
User: Large
Bot: Large size, great choice! Nice and filling ๐
Need any drinks or sides?
2. Maintain Context
Bad example:
User: I'll order pepperoni pizza
Bot: Yes. Which pizza would you like?
Good example:
User: I'll order pepperoni pizza
Bot: Pepperoni pizza it is!
What size would you like?
3. Provide Choices
Bad example:
Bot: Please tell me the time.
User: Um... when would be good...
Good example:
Bot: What time works for you?
Available times today:
1. 2 PM
2. 4 PM
3. 6 PM
Or tell me your preferred time!
4. Progress Updates
Bot: Great! Almost done ๐
Finally, just need your contact info
and the order will be complete!
5. Error Prevention
Bot: Please enter your address.
Example: 123 Teheran-ro, Gangnam-gu, Seoul
User: Gangnam
Bot: Oops, need a more detailed address!
Please include "city/district/neighborhood/building."
Example: 123-45 Yeoksam-dong, Gangnam-gu, Seoul
Real Project: Restaurant Reservation Bot
Let's design the complete flow.
=== Restaurant Reservation Chatbot Flow ===
[Step 1] Greeting and reservation intent
Bot: "Hello! I'll help you book at Restaurant 'Delicious'."
"Would you like to make a reservation?"
Wait: User response
[Step 2] Date Selection
Bot: "When would you like to visit?"
Options:
- Today
- Tomorrow
- This weekend
- Enter custom date
Collect: reservation_date
[Step 3] Time Selection
Bot: "You're visiting on [date]!"
"What time would you like to come?"
Options:
- Lunch (11:30, 12:00, 12:30, 13:00)
- Dinner (17:30, 18:00, 18:30, 19:00, 19:30)
Collect: reservation_time
[Step 4] Party Size
Bot: "How many people?"
(Buttons 2-10 people, inquiry for more)
Collect: party_size
Condition: If 6+ people โ "Would you like a private room?" additional question
[Step 5] Special Requests
Bot: "Any special requests?"
Examples:
- Window seat
- Anniversary event
- Food allergies
- None
Collect: special_requests (optional)
[Step 6] Contact Info
Bot: "Please provide reservation name and contact number."
Example: Hong Gildong, 010-1234-5678
Collect: name, phone
[Step 7] Confirmation
Bot: "Please confirm your reservation:
๐
Date: [date]
๐ Time: [time]
๐ฅ Party: [number] people
๐ Requests: [requests]
๐ค Name: [name]
๐ Contact: [phone]
Confirm this reservation?"
Wait: Confirmation (Yes/No/Edit)
[Step 8] Complete
Bot: "Reservation complete! โจ
Reservation #: R20240515-001
We'll send a confirmation text 30 minutes before.
Changes or cancellations possible until 3 hours before visit.
Enjoy your meal! ๐"
[End]
Creating with Poe Bot:
You are a restaurant reservation chatbot.
Follow the above flow exactly.
- Don't skip steps
- Only confirm reservation after collecting all information
- Allow returning to previous steps if user wants
- Friendly and welcoming tone
Additional Commands:
- "cancel": Cancel reservation process
- "start over": Return to Step 1
- "check reservation": Show currently collected info
Creating Test Scenarios
Need scenarios to test your created bot.
Test Case Examples
Scenario 1: Normal Flow
User: I want to make a reservation
โ Does bot ask for date?
User: Tomorrow
โ Does bot ask for time?
User: 7 PM dinner
โ Does it ask for party size?
...
โ Does final reservation complete message appear?
Scenario 2: Mid-Change
User: I'll make a reservation
Bot: Date?
User: Saturday
Bot: Time?
User: Oh, change date to Friday
โ Does bot modify the date?
โ Does it ask for time again?
Scenario 3: Exception
User: Reservation
Bot: Date?
User: 100 people want to go
โ Does bot handle appropriately?
โ Does it guide to alternative contact?
Scenario 4: Cancellation
User: Reservation
Bot: Date?
User: I want to cancel
โ Does it confirm cancellation?
โ Does it end politely?
Common Mistakes and Solutions
Mistake 1: Asking Too Much at Once
Bad:
"Please tell me date, time, party size, and special requests all at once."
Good:
"Let's start with the date, shall we?"
Mistake 2: Ignoring User Response
User: Large pepperoni pizza please
Bad Bot: Which pizza would you like?
Good Bot: Pepperoni large size, correct?
Need any additional options?
Mistake 3: Dead End
Bot: Would you like to make a reservation?
User: No
Bad Bot: (No response)
Good Bot: Understood!
Are you wondering about the menu or hours?
Or need other help?
Next Steps
In the next post, we'll dive deep into chatbot personality and speech style settings.
The same content can feel completely different depending on how you say it!
Wrapping Up
Good conversation flow makes users forget they're talking to a chatbot. Like talking to a friendly staff member.
Key points:
- One thing at a time
- Maintain context
- Provide choices
- Allow returning anytime
Start with a simple 3-step flow. You can add more as you use it.
Design your own conversation flow with what you learned today!
Related Posts:
- [Previous] Creating Your Own FAQ Chatbot
- [Next] Chatbot Personality & Speech Style Settings
Curious about what flows you designed. Share in the comments!
Next Article
๐ Creating FAQ Chatbots with ChatGPT - AI Auto Q&A System
๐๊ฐ์ ์๋ฆฌ์ฆ
Building Your Own Chatbot with ChatGPT - Getting Started with AI Conversational Bots
No coding skills needed! Start your journey to creating chatbots from customer service to personal assistants using ChatGPT.
Building a Customer Service Chatbot with GPT - Creating AI Auto-Response Systems
A support agent that never sleeps! Learn how to build a chatbot system that automatically responds to customer inquiries with AI.
Developing Custom Chatbots with ChatGPT API - AI Integration Guide
Level up with API! Learn to create custom chatbots that integrate ChatGPT API into websites or apps.