Files
Meister-Eder/openspec/changes/define-project-scope/content/conversation-flow.md
T
gurixandClaude Opus 4.5 145947c520 Add project scope documentation for AI playgroup registration system
Define complete non-technical scope for replacing Google Forms registration
with an AI-powered conversational agent. Includes:

- Registration data requirements (13 fields with validation rules)
- Knowledge base content (fees, regulations, schedule, FAQ from official PDFs)
- Conversation flow design with bilingual support (German/English)
- Agent personality guidelines (warm & friendly tone)
- Admin notification routing by playgroup type
- Email reminder system for incomplete registrations
- Data export formats (CSV/JSON)
- Channel configuration (email + chat)
- Release priorities (MVP scope defined)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-20 17:52:13 +01:00

366 lines
12 KiB
Markdown

# 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