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

12 KiB

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