# Registration Conversation Flow ## Overview The agent guides parents through registration in a natural conversation, collecting information in a logical sequence while allowing for questions and interruptions. ## Main Flow ``` START │ ▼ ┌─────────────────────────────────────┐ │ 1. GREETING & INTENT │ │ "Hi! I can help you register your │ │ child or answer questions about │ │ our playgroups. What would you │ │ like to do?" │ └─────────────────────────────────────┘ │ ├── [Question about service] → Answer from knowledge base → Return │ ▼ ┌─────────────────────────────────────┐ │ 2. CHILD INFORMATION │ │ - Child's full name │ │ - Date of birth │ │ → Validate age (2-5 years) │ │ → If too young/old, inform parent │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 3. PLAYGROUP SELECTION │ │ "We have two playgroups:" │ │ - Indoor (Mon/Wed/Thu, 9-11:30) │ │ - Outdoor Forest (Mon, 9-14:00) │ │ "Which interests you?" │ │ │ │ → Collect selected type(s) │ │ → Collect selected days │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 4. SPECIAL NEEDS │ │ "Does your child have any special │ │ needs, allergies, or medical │ │ conditions we should know about?" │ │ │ │ → If yes: collect details │ │ → If no: note "None" and continue │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 5. PARENT/GUARDIAN CONTACT │ │ - Full name │ │ - Address (street, postal code, │ │ city) for invoicing │ │ - Phone number │ │ - Email address │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 6. EMERGENCY CONTACT │ │ "Please provide an emergency │ │ contact (someone other than │ │ yourself):" │ │ - Full name │ │ - Phone number │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 7. CONFIRMATION │ │ Display summary of all collected │ │ information │ │ "Is this correct?" │ │ │ │ → If corrections needed: go back │ │ → If confirmed: submit │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 8. COMPLETION │ │ "Registration complete!" │ │ - Mention registration fee (80.-) │ │ - Mention monthly fees │ │ - Provide contact for questions │ │ - Thank parent │ └─────────────────────────────────────┘ │ ▼ END ``` ## Branch: Question Handling At any point during registration, the parent can ask questions: ``` [Parent asks question] │ ▼ ┌─────────────────────────────────────┐ │ Query knowledge base │ │ → Provide answer │ │ → Ask: "Would you like to continue │ │ with registration?" │ └─────────────────────────────────────┘ │ ▼ [Return to previous step in flow] ``` ## Branch: Age Validation ``` [Child's DOB collected] │ ▼ ┌─────────────────────────────────────┐ │ Calculate age │ │ │ │ Indoor: 2.5+ years │ │ Outdoor: 3+ years │ └─────────────────────────────────────┘ │ ├── [Age OK] → Continue with playgroup selection │ └── [Age outside range] → "Your child is [age]. Our indoor playgroup is for children 2.5+ and outdoor is for 3+. Would you like to proceed anyway, or contact us to discuss?" ``` ## Information Collection Order 1. Child name → Personalize conversation 2. Child DOB → Validate eligibility early 3. Playgroup selection → Core booking decision 4. Special needs → Important safety/care info 5. Parent contact → Who to reach 6. Emergency contact → Safety requirement 7. Confirmation → Verify all correct *Rationale: Child info first (topic of registration), then logistics, then parent details. Special needs before parent info so we can ask follow-up questions while still on child topic.* --- ## Mixed Intent Handling Parents may combine registration with questions, or switch between intents mid-conversation. The agent should handle this gracefully. ### Scenario 1: Question During Registration ``` [Registration in progress at Step 3] Parent: "By the way, what are the fees?" Agent: 1. Acknowledge the question 2. Answer from knowledge base 3. Offer to return to registration 4. Wait for parent response Example: "Good question! The indoor playgroup is CHF 130/month and outdoor is CHF 250/month. There's also a one-time CHF 80 registration fee. Shall we continue with the registration? We were just about to pick which days work for you." ``` ### Scenario 2: Question-Only Intent (No Registration) ``` Parent: "I just have some questions about the playgroup" Agent: 1. Acknowledge intent 2. Offer to answer questions 3. Don't push registration unless asked Example: "Of course! I'm happy to answer any questions. What would you like to know?" [After answering questions] "Is there anything else you'd like to know? I'm also here if you decide you'd like to register your child." ``` ### Scenario 3: Starting with Question, Then Registration ``` Parent: "How much does it cost?" Agent: [Answers fee question] Agent: "Is there anything else you'd like to know?" Parent: "No, I'd like to register my son" Agent: "Great! Let's get started. What's your son's name?" [Begin registration flow from Step 2] ``` ### Scenario 4: Multiple Questions at Once ``` Parent: "What are the hours and how much does it cost?" Agent: 1. Answer both questions together 2. Keep response organized but not overwhelming Example: "Happy to help with both! **Hours:** - Indoor: Mon/Wed/Thu, 9:00-11:30 - Outdoor: Mon, 9:00-14:00 **Fees:** - Indoor: CHF 130/month - Outdoor: CHF 250/month - Registration: CHF 80 (one-time) Anything else you'd like to know?" ``` ### Scenario 5: Correction During Registration ``` [At confirmation step] Parent: "Actually, I want to change the days" Agent: 1. Acknowledge the change request 2. Go back to the relevant step 3. Re-collect only the changed information 4. Return to confirmation Example: "No problem! Which days would you like instead?" [Collect new days] "Got it. Let me update that... Here's the revised summary: [show again]" ``` ### Intent Detection Guidelines | Parent says... | Intent | Agent response | |----------------|--------|----------------| | "I want to register" | Registration | Start registration flow | | "How much..." / "What are the fees..." | Question | Answer from knowledge base | | "What time..." / "When is..." | Question | Answer from knowledge base | | "Register + question in same message" | Mixed | Answer question first, then start registration | | "Question mid-registration" | Mixed | Answer, then return to registration | | "Just questions for now" | Question-only | Answer questions, don't push registration | ### Preserving Registration State When handling questions mid-registration: - Keep all collected data in memory - Note which step we paused at - Return to that exact step after answering - Don't ask for already-collected information again --- ## Timeout and Resumption Behavior ### Chat Channel **Session-Based Persistence** The chat uses browser sessions to maintain state. There is no fixed inactivity timeout—as long as the session exists, the registration can be resumed. ``` [Parent closes browser or tab] [Session ends] [Parent returns with same session (e.g., reopens tab)] Agent: "Welcome back! I still have your registration in progress. We were at [current step]. Would you like to continue?" [Parent returns without session (new browser/device)] Agent: "Hi! Would you like to start a new registration?" ``` **Data Retention:** - Incomplete registration data retained for the duration of the browser session - If session is lost, parent starts fresh (no server-side persistence for chat) - For longer breaks, recommend email channel ### Email Channel **No timeout** - email is inherently asynchronous ``` [Parent sends email, agent responds] [Parent doesn't reply for days/weeks] [Parent sends another email in the thread] Agent: 1. Detect existing conversation from email thread 2. Load previously collected data 3. Continue from where we left off Example: "Hi again! I still have the registration in progress for Emma. We just need your emergency contact details to finish up. Who should we contact in case of emergency?" ``` **Email Data Retention:** - Registration data retained for **1 month** in email conversations - After 1 month without response, data cleared ### Reminder Emails **Automated reminders for incomplete registrations:** | Timing | Action | |--------|--------| | Day 3 | First reminder: "Just checking in—would you like to complete [child name]'s registration?" | | Day 10 | Second reminder: "We still have your registration saved. Ready to finish?" | | Day 25 | Final reminder: "Your registration will expire in 5 days. Complete it now or start fresh later." | | Day 30 | Data cleared (no email sent) | **Reminder Rules:** - Only sent for email channel (chat is session-based) - Stop sending if parent replies or completes registration - Stop sending if parent explicitly says they're no longer interested - Maximum 3 reminders per incomplete registration ### Resumption Messages **Chat - Short absence (< 5 minutes):** No special message needed, just continue **Chat - Medium absence (5-30 minutes):** > "Welcome back! Ready to continue? We were collecting your contact details." **Chat - Return after session end:** > "Hi again! I found your earlier registration for [child name]. Would you like to pick up where we left off, or start fresh?" **Email - After days of silence:** > "Hi [parent name], just following up on [child name]'s registration. I have most of the details saved—we just need [remaining fields]. Would you like to continue?" ### Incomplete Registration Handling If a parent abandons registration: 1. Data is NOT submitted to the admin 2. No notification sent for incomplete registrations 3. Data cleared after retention period 4. If parent returns: offer to resume or start fresh ### Privacy Considerations - Clear incomplete data after retention period - Don't send reminders to parents who explicitly say they're not interested - Maximum of 1 reminder email per incomplete registration