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>
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# Agent Personality and Tone Guidelines
|
||||
|
||||
## Core Personality
|
||||
|
||||
The registration agent should feel like a helpful, friendly staff member of the playgroup—someone who genuinely cares about families and wants to make the registration process easy and welcoming.
|
||||
|
||||
## Tone
|
||||
|
||||
**Primary tone: Warm & Friendly**
|
||||
|
||||
- Use conversational, approachable language
|
||||
- Be welcoming and encouraging
|
||||
- Show genuine interest in the child and family
|
||||
- Keep a positive, helpful attitude even when clarifying or correcting
|
||||
|
||||
### Do
|
||||
|
||||
- "That's wonderful! Let me help you get [child's name] registered."
|
||||
- "No problem at all—let me know whenever you're ready to continue."
|
||||
- "Great choice! The forest playgroup is very popular."
|
||||
|
||||
### Don't
|
||||
|
||||
- Overly formal: "Your registration request has been acknowledged."
|
||||
- Robotic: "Please provide the following required fields."
|
||||
- Impersonal: "The child's name field cannot be empty."
|
||||
|
||||
## Language
|
||||
|
||||
**Adaptive: Match the parent's language**
|
||||
|
||||
- Detect whether the parent writes in German or English
|
||||
- Respond consistently in the same language throughout the conversation
|
||||
- If unclear, default to German (local context: Fällanden, Switzerland)
|
||||
|
||||
### German Guidelines
|
||||
- Use informal "du" rather than formal "Sie" (typical for playgroup context)
|
||||
- Keep language simple and accessible
|
||||
- Swiss German expressions are fine if the parent uses them
|
||||
|
||||
### English Guidelines
|
||||
- Straightforward, clear English
|
||||
- Avoid idioms that may not translate well
|
||||
|
||||
## Conversation Style
|
||||
|
||||
### Pacing
|
||||
- Ask one or two questions at a time, not overwhelming lists
|
||||
- Give parents space to respond naturally
|
||||
- Don't rush—let the conversation flow
|
||||
|
||||
### Handling Mistakes
|
||||
- Be understanding about typos or unclear responses
|
||||
- Ask for clarification politely: "Just to make sure I got that right..."
|
||||
- Never make parents feel they've done something wrong
|
||||
|
||||
### Answering Questions
|
||||
- Provide helpful, complete answers
|
||||
- If you don't have information, say so honestly
|
||||
- Offer to connect them with the playgroup leader for complex questions
|
||||
|
||||
## Example Exchanges
|
||||
|
||||
### Starting a Registration
|
||||
```
|
||||
Parent: Hi, I want to register my daughter
|
||||
Agent: Hi! How lovely—I'd be happy to help you register your daughter.
|
||||
What's her name?
|
||||
```
|
||||
|
||||
### Handling a Question Mid-Registration
|
||||
```
|
||||
Parent: Wait, how much does this cost?
|
||||
Agent: Good question! The indoor playgroup is CHF 130 per month, and the
|
||||
outdoor forest playgroup is CHF 250 per month. There's also a
|
||||
one-time registration fee of CHF 80.
|
||||
|
||||
Would you like to continue with registration?
|
||||
```
|
||||
|
||||
### Confirming Information
|
||||
```
|
||||
Agent: Let me make sure I have everything right:
|
||||
- Emma, born March 15, 2022
|
||||
- Indoor playgroup on Mondays and Wednesdays
|
||||
- No special needs noted
|
||||
|
||||
Does that all look correct?
|
||||
```
|
||||
|
||||
## Things to Avoid
|
||||
|
||||
- Sounding like a form or automated system
|
||||
- Using technical jargon
|
||||
- Being overly effusive or using too many exclamation marks
|
||||
- Making assumptions about family structure
|
||||
- Rushing parents through the process
|
||||
@@ -0,0 +1,138 @@
|
||||
# Channel Configuration
|
||||
|
||||
## Email Channel
|
||||
|
||||
### Registration Email Address
|
||||
|
||||
**Address:** `[To be determined]`
|
||||
|
||||
Suggested options:
|
||||
- `anmeldung@familienvereinfaellanden.ch` (German: "registration")
|
||||
- `spielgruppen@familien-verein.ch` (existing admin address - Markus Graf)
|
||||
- `registration@familienvereinfaellanden.ch`
|
||||
|
||||
*Note: The existing admin email spielgruppen@familien-verein.ch could be used, or a new dedicated address could be created.*
|
||||
|
||||
### Requirements for Email Address
|
||||
- Should be memorable and clear in purpose
|
||||
- Associated with the organization's domain (preferred)
|
||||
- Or a dedicated Gmail/other address if domain email not available
|
||||
|
||||
### Email Processing
|
||||
- All emails to this address are processed by the AI agent
|
||||
- Agent responds from the same address
|
||||
- Thread tracking via email headers (In-Reply-To, References)
|
||||
|
||||
---
|
||||
|
||||
## Chat Interface
|
||||
|
||||
### Access URL
|
||||
|
||||
**URL:** `[To be determined]`
|
||||
|
||||
Suggested options:
|
||||
- `https://familienvereinfaellanden.ch/anmeldung`
|
||||
- `https://register.familienvereinfaellanden.ch`
|
||||
- Embedded widget on existing website
|
||||
|
||||
### Branding Requirements
|
||||
|
||||
**Style:** Simple and neutral
|
||||
|
||||
| Element | Specification |
|
||||
|---------|--------------|
|
||||
| Color scheme | Clean, neutral colors (white background, subtle accent) |
|
||||
| Logo | Optional - can include Familienverein logo if available |
|
||||
| Typography | System fonts, readable and accessible |
|
||||
| Layout | Mobile-first, clean chat bubble design |
|
||||
|
||||
### Welcome Message
|
||||
|
||||
**German (default):**
|
||||
> Willkommen bei der Spielgruppe Pumuckl! Ich kann dir bei der Anmeldung deines Kindes helfen oder Fragen beantworten. Was möchtest du tun?
|
||||
|
||||
**English:**
|
||||
> Welcome to Spielgruppe Pumuckl! I can help you register your child or answer questions. What would you like to do?
|
||||
|
||||
### Chat Interface Elements
|
||||
|
||||
- Chat message bubbles (agent vs parent visually distinct)
|
||||
- Text input field
|
||||
- Send button
|
||||
- Typing indicator when agent is responding
|
||||
- Minimal header with playgroup name
|
||||
|
||||
---
|
||||
|
||||
## Channel Selection Notes
|
||||
|
||||
Both channels lead to the same AI agent and registration system. The choice of channel is purely based on parent preference:
|
||||
|
||||
| Channel | Best for |
|
||||
|---------|----------|
|
||||
| Email | Parents who prefer asynchronous communication |
|
||||
| Chat | Parents who want immediate, real-time interaction |
|
||||
|
||||
Registrations from both channels are stored in the same system and appear identical to the admin.
|
||||
|
||||
---
|
||||
|
||||
## Channel-Specific Behavior Differences
|
||||
|
||||
While both channels use the same AI agent and conversation logic, there are some inherent differences:
|
||||
|
||||
### Response Timing
|
||||
|
||||
| Aspect | Email | Chat |
|
||||
|--------|-------|------|
|
||||
| Response time | Near-instant (automated) | Real-time |
|
||||
| Parent expectation | Can be async | Expects immediate reply |
|
||||
| Session concept | Thread-based | Session-based |
|
||||
|
||||
### Conversation Flow
|
||||
|
||||
| Aspect | Email | Chat |
|
||||
|--------|-------|------|
|
||||
| Multiple questions | One per email preferred | Multiple turns easy |
|
||||
| Length | Can be longer | Shorter, conversational |
|
||||
| Formatting | Rich text, headers | Simple text, emojis OK |
|
||||
|
||||
### State Management
|
||||
|
||||
| Aspect | Email | Chat |
|
||||
|--------|-------|------|
|
||||
| Session timeout | No timeout (thread-based) | Session-based (browser) |
|
||||
| Resumption | Automatic via thread | Same session required |
|
||||
| Data retention | 1 month | Browser session duration |
|
||||
| Reminders | Yes (Day 3, 10, 25) | No (session-based) |
|
||||
|
||||
### Error Handling
|
||||
|
||||
| Aspect | Email | Chat |
|
||||
|--------|-------|------|
|
||||
| Invalid input | Ask in next reply | Immediate correction |
|
||||
| Dropped session | Follow-up email | Timeout message |
|
||||
| Technical error | Error response email | Error message in chat |
|
||||
|
||||
### Unique Capabilities
|
||||
|
||||
**Email Only:**
|
||||
- Can handle overnight/delayed responses naturally
|
||||
- Parent can attach documents if needed
|
||||
- Formal record via email threads
|
||||
|
||||
**Chat Only:**
|
||||
- Typing indicators
|
||||
- Immediate validation feedback
|
||||
- More natural conversation flow
|
||||
- Session can redirect to email if preferred
|
||||
|
||||
### Consistent Across Both
|
||||
|
||||
- Same AI agent personality
|
||||
- Same registration data collected
|
||||
- Same validation rules
|
||||
- Same knowledge base access
|
||||
- Same notification to admin
|
||||
- Same data storage format
|
||||
@@ -0,0 +1,365 @@
|
||||
# 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
|
||||
@@ -0,0 +1,215 @@
|
||||
# Data Export Formats
|
||||
|
||||
## CSV Export
|
||||
|
||||
### Filename Format
|
||||
```
|
||||
registrations_[YYYY-MM-DD].csv
|
||||
registrations_[YYYY-MM-DD]_indoor.csv
|
||||
registrations_[YYYY-MM-DD]_outdoor.csv
|
||||
```
|
||||
|
||||
### Column Structure
|
||||
|
||||
| Column | Description | Example |
|
||||
|--------|-------------|---------|
|
||||
| registration_id | Unique identifier | REG-2024-001 |
|
||||
| submitted_at | Submission date/time | 2024-09-15 14:30:00 |
|
||||
| channel | Registration channel | email / chat |
|
||||
| child_name | Child's full name | Emma Müller |
|
||||
| child_dob | Date of birth | 2021-03-15 |
|
||||
| child_age_years | Age in years | 3 |
|
||||
| child_age_months | Additional months | 6 |
|
||||
| special_needs | Special needs/medical | Peanut allergy |
|
||||
| playgroup_types | Selected types | indoor,outdoor |
|
||||
| selected_days | Booked days | monday,wednesday |
|
||||
| monthly_fee | Calculated fee | 130 |
|
||||
| parent_name | Parent/guardian name | Maria Müller |
|
||||
| parent_address | Street address | Sunnetalstrasse 12 |
|
||||
| parent_postal_code | Postal code | 8117 |
|
||||
| parent_city | City | Fällanden |
|
||||
| parent_phone | Phone number | +41 79 123 45 67 |
|
||||
| parent_email | Email address | maria@example.com |
|
||||
| emergency_name | Emergency contact name | Hans Müller |
|
||||
| emergency_phone | Emergency contact phone | +41 79 987 65 43 |
|
||||
|
||||
### CSV Formatting Rules
|
||||
- UTF-8 encoding (for German characters: ä, ö, ü, etc.)
|
||||
- Comma-separated values
|
||||
- Values with commas wrapped in quotes
|
||||
- Header row included
|
||||
- Date format: YYYY-MM-DD
|
||||
- DateTime format: YYYY-MM-DD HH:MM:SS
|
||||
|
||||
---
|
||||
|
||||
## JSON Export
|
||||
|
||||
### Single Registration
|
||||
```json
|
||||
{
|
||||
"registrationId": "REG-2024-001",
|
||||
"child": {
|
||||
"fullName": "Emma Müller",
|
||||
"dateOfBirth": "2021-03-15",
|
||||
"specialNeeds": "Peanut allergy"
|
||||
},
|
||||
"parentGuardian": {
|
||||
"fullName": "Maria Müller",
|
||||
"phone": "+41 79 123 45 67",
|
||||
"email": "maria@example.com"
|
||||
},
|
||||
"emergencyContact": {
|
||||
"fullName": "Hans Müller",
|
||||
"phone": "+41 79 987 65 43"
|
||||
},
|
||||
"booking": {
|
||||
"playgroupTypes": ["indoor"],
|
||||
"selectedDays": [
|
||||
{"day": "monday", "type": "indoor"},
|
||||
{"day": "wednesday", "type": "indoor"}
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"submittedAt": "2024-09-15T14:30:00Z",
|
||||
"channel": "chat",
|
||||
"conversationId": "conv-abc123"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Bulk Export (Array)
|
||||
```json
|
||||
{
|
||||
"exportedAt": "2024-09-20T10:00:00Z",
|
||||
"totalRecords": 25,
|
||||
"filters": {
|
||||
"dateFrom": "2024-09-01",
|
||||
"dateTo": "2024-09-30",
|
||||
"playgroupType": null
|
||||
},
|
||||
"registrations": [
|
||||
{ ... },
|
||||
{ ... }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Export Use Cases
|
||||
|
||||
| Use Case | Recommended Format |
|
||||
|----------|-------------------|
|
||||
| Import to Google Sheets | CSV |
|
||||
| Backup/archive | JSON |
|
||||
| Integration with other systems | JSON |
|
||||
| Quick overview/printing | CSV |
|
||||
| Data analysis | Either (CSV for Excel, JSON for scripts) |
|
||||
|
||||
---
|
||||
|
||||
## Admin Workflow Integration
|
||||
|
||||
### Current Workflow (Google Forms)
|
||||
1. Parent fills Google Form
|
||||
2. Data appears in Google Sheet automatically
|
||||
3. Admin receives email notification
|
||||
4. Admin reviews in spreadsheet
|
||||
|
||||
### New Workflow (AI Registration)
|
||||
1. Parent converses with AI agent
|
||||
2. Completed registration stored in system
|
||||
3. Admin receives email notification (same as before)
|
||||
4. Admin can:
|
||||
- View individual registrations in admin interface
|
||||
- Export to CSV for Google Sheets compatibility
|
||||
- Export to JSON for archival/backup
|
||||
|
||||
### Maintaining Google Sheets Compatibility
|
||||
|
||||
For admins who prefer working in Google Sheets:
|
||||
|
||||
**Option A: Manual Import**
|
||||
1. Export CSV from the system
|
||||
2. Import into Google Sheets (File → Import)
|
||||
3. Work with data as before
|
||||
|
||||
**Option B: Direct Google Sheets Integration (Future)**
|
||||
- Automatic sync to a designated Google Sheet
|
||||
- Requires Google API setup
|
||||
- *Note: This is a potential future enhancement, not initial release*
|
||||
|
||||
### Export Triggers
|
||||
|
||||
| Trigger | Action |
|
||||
|---------|--------|
|
||||
| Admin clicks "Export" | Generate CSV/JSON download |
|
||||
| Scheduled (optional) | Auto-generate weekly export |
|
||||
| API request (optional) | Return JSON for integrations |
|
||||
|
||||
### Data Consistency
|
||||
|
||||
- Exports always reflect current stored data
|
||||
- Registration IDs are consistent across exports
|
||||
- Timestamps are consistent (UTC internally, local time in exports)
|
||||
|
||||
---
|
||||
|
||||
## Filtering and Query Requirements
|
||||
|
||||
### Export Filters
|
||||
|
||||
When exporting data, the admin should be able to filter by:
|
||||
|
||||
| Filter | Options | Use Case |
|
||||
|--------|---------|----------|
|
||||
| Date range | From/To dates | "Show September registrations" |
|
||||
| Playgroup type | Indoor / Outdoor / Both | "Export only forest playgroup kids" |
|
||||
| Booking day | Monday / Wednesday / Thursday | "Who's coming on Wednesdays?" |
|
||||
| Channel | Email / Chat | "How many registered via chat?" |
|
||||
|
||||
### Query Examples
|
||||
|
||||
**All registrations this month:**
|
||||
```
|
||||
dateFrom: 2024-09-01
|
||||
dateTo: 2024-09-30
|
||||
```
|
||||
|
||||
**Forest playgroup registrations:**
|
||||
```
|
||||
playgroupType: outdoor
|
||||
```
|
||||
|
||||
**Monday attendees (both playgroups):**
|
||||
```
|
||||
bookingDay: monday
|
||||
```
|
||||
|
||||
**Recent registrations via chat:**
|
||||
```
|
||||
dateFrom: 2024-09-15
|
||||
channel: chat
|
||||
```
|
||||
|
||||
### Combination Filters
|
||||
|
||||
Filters can be combined:
|
||||
- "All outdoor registrations in September"
|
||||
- "Monday indoor kids registered via email"
|
||||
|
||||
### Sort Options
|
||||
|
||||
| Sort by | Direction |
|
||||
|---------|-----------|
|
||||
| Submission date | Newest first (default) / Oldest first |
|
||||
| Child name | A-Z / Z-A |
|
||||
| Playgroup type | Indoor first / Outdoor first |
|
||||
|
||||
### Default Export Behavior
|
||||
|
||||
If no filters specified:
|
||||
- All registrations
|
||||
- Sorted by submission date (newest first)
|
||||
- All fields included
|
||||
@@ -0,0 +1,25 @@
|
||||
# Knowledge Base
|
||||
|
||||
This directory contains the information the AI agent uses to answer parent questions about the playgroup service.
|
||||
|
||||
## Files
|
||||
|
||||
| File | Content |
|
||||
|------|---------|
|
||||
| `fees.md` | Pricing, payment terms, discounts |
|
||||
| `schedule.md` | Opening hours, locations, contacts |
|
||||
| `regulations.md` | Policies, rules, requirements |
|
||||
| `faq.md` | Frequently asked questions |
|
||||
|
||||
## Maintenance
|
||||
|
||||
To update information the agent provides:
|
||||
1. Edit the relevant markdown file
|
||||
2. Changes take effect immediately (no code deployment needed)
|
||||
|
||||
## Format Guidelines
|
||||
|
||||
- Use clear headings and sections
|
||||
- Keep answers concise but complete
|
||||
- Use tables for structured data (fees, schedules)
|
||||
- Mark placeholders with `*[To be completed]*`
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,121 @@
|
||||
# Frequently Asked Questions
|
||||
|
||||
## Registration & Enrollment
|
||||
|
||||
### What age does my child need to be?
|
||||
Children are admitted two years before kindergarten entry. This is typically:
|
||||
- Indoor Playgroup: approximately 2.5 years or older
|
||||
- Outdoor Forest Playgroup: 3 years or older
|
||||
|
||||
### How do I register my child?
|
||||
You can register by chatting with our registration assistant or sending an email. The assistant will guide you through providing all necessary information.
|
||||
|
||||
### Is there a registration fee?
|
||||
Yes, there is a one-time registration fee of CHF 80.- for the first year. From the second year onwards, a CHF 80.- craft materials fee is charged instead.
|
||||
|
||||
### Can my child attend both the indoor and outdoor playgroups?
|
||||
Yes! Children can be enrolled in either playgroup, both, or any combination of available days.
|
||||
|
||||
### Is there a priority for admission?
|
||||
Yes, members and families residing in Fällanden, Benglen, and Pfaffhausen are given priority admission.
|
||||
|
||||
### Is there a trial period?
|
||||
Yes, the first month is a trial period. Exit during the trial period is possible at the end of the month.
|
||||
|
||||
---
|
||||
|
||||
## Fees & Payment
|
||||
|
||||
### How much does it cost?
|
||||
|
||||
**Indoor Playgroup:**
|
||||
- 1x per week: CHF 130.-/month
|
||||
- 2x per week: CHF 260.-/month
|
||||
- 3x per week: CHF 390.-/month
|
||||
|
||||
**Outdoor Forest Playgroup:**
|
||||
- CHF 250.-/month (includes snack and lunch)
|
||||
|
||||
**July and August are fee-free.**
|
||||
|
||||
### Is there a sibling discount?
|
||||
Yes, there is a 10% discount on the monthly fee for each additional child from the same family.
|
||||
|
||||
### How do I pay?
|
||||
Invoices are sent monthly via email. Fees must be paid in advance. We recommend setting up a standing payment order (Dauerauftrag).
|
||||
|
||||
### What about the cleaning deposit?
|
||||
For the indoor playgroup, parents pay a CHF 50.- deposit which is returned through participation in cleaning sessions (3x per year).
|
||||
|
||||
---
|
||||
|
||||
## Schedule
|
||||
|
||||
### What are the playgroup hours?
|
||||
- Indoor (Mon, Wed, Thu): 9:00 - 11:30
|
||||
- Outdoor Forest (Mon): 9:00 - 14:00
|
||||
|
||||
### Does the playgroup run during school holidays?
|
||||
No, the playgroup follows the Fällanden school calendar. No sessions during school holidays or official public holidays.
|
||||
|
||||
### Can I change my child's playgroup days?
|
||||
Yes, changes are possible at the start of each month after consultation with the playgroup leader. For reductions, a one-month notice period applies.
|
||||
|
||||
---
|
||||
|
||||
## Cancellation
|
||||
|
||||
### What is the cancellation policy?
|
||||
- Cancellation must be in writing
|
||||
- 30 days notice before end of quarter (October, January, April, July)
|
||||
- During trial period (first month): exit possible at end of month
|
||||
|
||||
---
|
||||
|
||||
## Illness & Absences
|
||||
|
||||
### What if my child is sick?
|
||||
Sick children cannot be cared for. Please keep your child home if they are unwell.
|
||||
|
||||
### Do I still pay if my child is absent?
|
||||
Yes, absence due to illness or vacation does not exempt from payment. Please notify the playgroup leader of planned absences at least 14 days in advance.
|
||||
|
||||
---
|
||||
|
||||
## Outdoor Playgroup Specific
|
||||
|
||||
### What happens if the weather is bad?
|
||||
The outdoor forest playgroup runs in nearly all weather conditions. Children should come dressed appropriately for the weather.
|
||||
|
||||
### Is lunch included?
|
||||
Yes, the forest playgroup fee includes snack (Znüni) and lunch.
|
||||
|
||||
---
|
||||
|
||||
## Insurance & Safety
|
||||
|
||||
### Does the playgroup provide insurance?
|
||||
No, accident insurance is the responsibility of the parents. Parents are also liable for damages caused by their children. We recommend having private liability insurance.
|
||||
|
||||
### What happens in an emergency?
|
||||
In emergencies, the child will be treated by the nearest emergency doctor in Fällanden.
|
||||
|
||||
### Can someone else pick up my child?
|
||||
Yes, but you must inform the playgroup leader in advance if someone other than yourself will pick up your child.
|
||||
|
||||
---
|
||||
|
||||
## Contact
|
||||
|
||||
**Administration:**
|
||||
Markus Graf - Tel: 079 261 16 37 - spielgruppen@familien-verein.ch
|
||||
|
||||
**Indoor Playgroup:**
|
||||
Andrea Sigrist & Kübra Karatas - Tel: 079 674 99 92 - andrea.sigrist@gmx.net
|
||||
|
||||
**Outdoor Playgroup:**
|
||||
Barbara Gross - Tel: 078 761 19 64 - baba.laeubli@gmail.com
|
||||
|
||||
---
|
||||
|
||||
*Have other questions? Just ask our registration assistant!*
|
||||
@@ -0,0 +1,75 @@
|
||||
# Service Fees (Tarifliste 2024/2025)
|
||||
|
||||
*Source: Tarifliste Spielgruppen 2024/2025, Familienverein Fällanden*
|
||||
|
||||
## Indoor Playgroup (Innenspielgruppe)
|
||||
|
||||
**Hours:** Monday, Wednesday, or Thursday, 9:00 - 11:30
|
||||
|
||||
| Sessions per Week | Monthly Fee |
|
||||
|-------------------|-------------|
|
||||
| 1x per week | CHF 130.- |
|
||||
| 2x per week | CHF 260.- |
|
||||
| 3x per week | CHF 390.- |
|
||||
|
||||
**July and August are fee-free.**
|
||||
|
||||
---
|
||||
|
||||
## Outdoor Forest Playgroup (Waldspielgruppe)
|
||||
|
||||
**Hours:** Monday, 9:00 - 14:00
|
||||
|
||||
| Monthly Fee |
|
||||
|-------------|
|
||||
| CHF 250.- |
|
||||
|
||||
*Includes snack (Znüni) and lunch.*
|
||||
|
||||
**July and August are fee-free.**
|
||||
|
||||
---
|
||||
|
||||
## One-Time Fees
|
||||
|
||||
| Fee | Amount | When |
|
||||
|-----|--------|------|
|
||||
| Registration Fee (Aufnahmegebühr) | CHF 80.- | First year only |
|
||||
| Craft Materials (Bastelmaterial) | CHF 80.- | From second year onwards (replaces registration fee) |
|
||||
| Parent Participation Deposit | CHF 50.- | Indoor playgroup only (refundable through cleaning participation) |
|
||||
|
||||
---
|
||||
|
||||
## Payment Terms
|
||||
|
||||
- Invoicing is monthly via email
|
||||
- Fees must be paid in advance
|
||||
- Standing payment order (Dauerauftrag) is recommended for regular payments
|
||||
|
||||
---
|
||||
|
||||
## Sibling Discount
|
||||
|
||||
10% discount on monthly fees for each additional child from the same family.
|
||||
|
||||
---
|
||||
|
||||
## Administration Contact
|
||||
|
||||
Markus Graf
|
||||
Tel: 079 261 16 37
|
||||
Email: spielgruppen@familien-verein.ch
|
||||
|
||||
---
|
||||
|
||||
## Playgroup Leaders
|
||||
|
||||
**Indoor Playgroup:**
|
||||
Andrea Sigrist & Kübra Karatas
|
||||
Tel: 079 674 99 92
|
||||
Email: andrea.sigrist@gmx.net
|
||||
|
||||
**Forest Playgroup:**
|
||||
Barbara Gross
|
||||
Tel: 078 761 19 64 / 044 825 25 13
|
||||
Email: baba.laeubli@gmail.com
|
||||
@@ -0,0 +1,110 @@
|
||||
# Playgroup Regulations (Reglement)
|
||||
|
||||
*Source: Reglement Spielgruppe 2024, Familienverein Fällanden*
|
||||
|
||||
## Aufnahme (Admission)
|
||||
|
||||
- Children are admitted two years before kindergarten entry
|
||||
- Indoor playgroup: 8-11 children per group, mixed ages
|
||||
- Forest playgroup: maximum 10 children, mixed ages
|
||||
- No playgroup during school holidays (per Fällanden school calendar) and official holidays
|
||||
- The playgroup year follows the school year
|
||||
- Registration requires signing an admission contract and paying the CHF 80.- registration fee
|
||||
|
||||
### Priorität (Priority)
|
||||
|
||||
Members and families residing in Fällanden, Benglen, and Pfaffhausen are given priority admission.
|
||||
|
||||
---
|
||||
|
||||
## Versicherung (Insurance)
|
||||
|
||||
- Accident insurance is the responsibility of the parents
|
||||
- Parents are liable for damages caused by their children
|
||||
- Parents are recommended to have private liability insurance
|
||||
|
||||
---
|
||||
|
||||
## Ferien und Krankheit (Holidays and Illness)
|
||||
|
||||
- **Sick children cannot be cared for**
|
||||
- Absence due to illness or vacation does not exempt from payment obligation
|
||||
- Holiday absences should be announced to the playgroup leader at least 14 days in advance
|
||||
|
||||
---
|
||||
|
||||
## Elternbeiträge und Tarif (Fees and Payment)
|
||||
|
||||
- Fees are listed in the current Familienverein Fällanden fee schedule
|
||||
- Fees must be paid in advance
|
||||
- Invoicing is monthly via email
|
||||
- Standing payment orders (Dauerauftrag) are recommended
|
||||
|
||||
---
|
||||
|
||||
## Probezeit und Kündigung (Trial Period and Cancellation)
|
||||
|
||||
### Trial Period
|
||||
- The first month is a trial period
|
||||
- Exit during the trial period is possible at the end of the month
|
||||
|
||||
### Cancellation Terms
|
||||
- Cancellation must be submitted in writing
|
||||
- Notice period: 30 days before end of quarter (October, January, April, July)
|
||||
- Early departure: fees charged until end of notice period
|
||||
|
||||
### Termination by Playgroup
|
||||
The care relationship may be terminated immediately if:
|
||||
- A child's behavior causes persistent difficulties despite intensive efforts
|
||||
- There are unjustified payment arrears
|
||||
|
||||
Termination is issued by the playgroup leader or the responsible board member.
|
||||
|
||||
---
|
||||
|
||||
## Betreuungszeiten (Care Times)
|
||||
|
||||
- Care times are defined in the admission contract and adjusted based on capacity
|
||||
- Changes to playgroup days are possible at the start of each month after consultation with the playgroup leader
|
||||
- For reductions, the one-month notice period applies
|
||||
|
||||
---
|
||||
|
||||
## Allgemeines (General)
|
||||
|
||||
### Emergencies
|
||||
- In emergencies, the child will be treated by the nearest emergency doctor in Fällanden
|
||||
|
||||
### Liability
|
||||
- Parents are liable for willful damage to furniture and buildings
|
||||
|
||||
### Personal Items
|
||||
- Children and parents are responsible for toys brought without being asked
|
||||
- The playgroup does not replace defective or lost items
|
||||
|
||||
### Pickup
|
||||
- Parents who have their children picked up by other persons must inform the playgroup leader in advance
|
||||
|
||||
---
|
||||
|
||||
## Elternarbeit (Parent Participation) - Indoor Playgroup Only
|
||||
|
||||
- Parents pay a CHF 50.- deposit
|
||||
- Deposit is returned through participation in cleaning sessions
|
||||
- Cleaning occurs three times per year (announced in advance)
|
||||
- Unreturned deposits remain with the playgroup
|
||||
|
||||
---
|
||||
|
||||
## Bastelmaterial (Craft Materials)
|
||||
|
||||
- From the second year onwards, a CHF 80.- craft material fee is charged instead of the registration fee
|
||||
|
||||
---
|
||||
|
||||
## Gültigkeit (Validity)
|
||||
|
||||
- This regulation is a binding agreement between parents and Familienverein Fällanden
|
||||
- The board reserves the right to adapt the regulations to current circumstances
|
||||
- The board decides on exceptions
|
||||
- The statutes of Familienverein Fällanden (March 2005) apply additionally
|
||||
@@ -0,0 +1,40 @@
|
||||
# Opening Hours and Schedule
|
||||
|
||||
## Indoor Playgroup (Spielgruppe Pumuckl)
|
||||
|
||||
| Day | Time |
|
||||
|-----|------|
|
||||
| Monday | 9:00 - 11:30 |
|
||||
| Wednesday | 9:00 - 11:30 |
|
||||
| Thursday | 9:00 - 11:30 |
|
||||
|
||||
**Location**: Sunnetalstrasse 4, 8117 Fällanden
|
||||
|
||||
**Contact**: Andrea Sigrist
|
||||
- Phone: 079 674 99 92
|
||||
- Email: andrea.sigrist@gmx.net
|
||||
|
||||
## Outdoor Forest Playgroup (Waldspielgruppe Pumuckl)
|
||||
|
||||
| Day | Time |
|
||||
|-----|------|
|
||||
| Monday | 9:00 - 14:00 |
|
||||
|
||||
**Contact**: Barbara Gross
|
||||
- Phone: 078 761 19 64 / 044 825 25 13
|
||||
- Email: baba.laeubli@gmail.com
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Sessions operate during school term only (school holidays excluded)
|
||||
- The outdoor playgroup runs in nearly all weather conditions
|
||||
- Children can be enrolled in either playgroup, both, or any combination of available days
|
||||
|
||||
## Age Requirements
|
||||
|
||||
- Indoor Playgroup: Children approximately 2.5 years and older
|
||||
- Outdoor Forest Playgroup: Children aged 3 and older
|
||||
|
||||
## Availability
|
||||
|
||||
Spots may be limited. Contact the playgroup leader to check current availability.
|
||||
@@ -0,0 +1,125 @@
|
||||
# Admin Notification Email Template
|
||||
|
||||
## Subject Line
|
||||
|
||||
```
|
||||
New Registration: [Child Name] for [Playgroup Type]
|
||||
```
|
||||
|
||||
Examples:
|
||||
- `New Registration: Emma Müller for Indoor Playgroup`
|
||||
- `New Registration: Luca Weber for Indoor + Outdoor Playgroup`
|
||||
|
||||
## Email Body
|
||||
|
||||
```
|
||||
===============================================
|
||||
NEW PLAYGROUP REGISTRATION
|
||||
===============================================
|
||||
|
||||
Submitted: [Date] at [Time]
|
||||
Channel: [Email / Chat]
|
||||
|
||||
-----------------------------------------------
|
||||
CHILD INFORMATION
|
||||
-----------------------------------------------
|
||||
Name: [Child's Full Name]
|
||||
Date of Birth: [DOB] (Age: [calculated age])
|
||||
Special Needs: [Details or "None"]
|
||||
|
||||
-----------------------------------------------
|
||||
PLAYGROUP SELECTION
|
||||
-----------------------------------------------
|
||||
Type: [Indoor / Outdoor / Both]
|
||||
Days: [Monday, Wednesday, Thursday]
|
||||
|
||||
Monthly Fee: CHF [amount]
|
||||
(Plus CHF 80 registration fee if first enrollment)
|
||||
|
||||
-----------------------------------------------
|
||||
PARENT/GUARDIAN
|
||||
-----------------------------------------------
|
||||
Name: [Parent Name]
|
||||
Address: [Street Address]
|
||||
[Postal Code] [City]
|
||||
Phone: [Phone Number]
|
||||
Email: [Email Address]
|
||||
|
||||
-----------------------------------------------
|
||||
EMERGENCY CONTACT
|
||||
-----------------------------------------------
|
||||
Name: [Emergency Contact Name]
|
||||
Phone: [Emergency Contact Phone]
|
||||
|
||||
===============================================
|
||||
|
||||
This registration was submitted via the automated
|
||||
registration assistant.
|
||||
|
||||
[View full registration record →]
|
||||
|
||||
```
|
||||
|
||||
## HTML Version (Optional)
|
||||
|
||||
For better formatting in email clients, an HTML version can include:
|
||||
- Playgroup logo in header
|
||||
- Color-coded sections
|
||||
- Clickable phone/email links
|
||||
- Button to view full record
|
||||
|
||||
## Notification Settings
|
||||
|
||||
**Send timing:** Immediately upon registration completion
|
||||
|
||||
**Reply-to:** Set to parent's email so admin can reply directly
|
||||
|
||||
### Routing by Playgroup Type
|
||||
|
||||
| Registration Type | Send Notification To |
|
||||
|-------------------|---------------------|
|
||||
| Indoor only | Andrea Sigrist (andrea.sigrist@gmx.net) |
|
||||
| Outdoor only | Barbara Gross (baba.laeubli@gmail.com) |
|
||||
| Both Indoor + Outdoor | Both Andrea AND Barbara |
|
||||
| All registrations (CC) | Administration: Markus Graf (spielgruppen@familien-verein.ch) |
|
||||
|
||||
*Note: When a child registers for both playgroups, both leaders receive the full notification. The administration is CC'd on all registrations.*
|
||||
|
||||
---
|
||||
|
||||
## Fields Included in Notification
|
||||
|
||||
### Always Included (Required Fields)
|
||||
|
||||
| Field | Source | Format |
|
||||
|-------|--------|--------|
|
||||
| Child's Full Name | registration.child.fullName | As entered |
|
||||
| Date of Birth | registration.child.dateOfBirth | DD.MM.YYYY |
|
||||
| Calculated Age | Computed from DOB | "X years, Y months" |
|
||||
| Special Needs | registration.child.specialNeeds | As entered |
|
||||
| Playgroup Type(s) | registration.booking.playgroupTypes | "Indoor" / "Outdoor" / "Indoor + Outdoor" |
|
||||
| Selected Days | registration.booking.selectedDays | Comma-separated list |
|
||||
| Monthly Fee | Computed from selection | "CHF X.-" |
|
||||
| Parent Name | registration.parentGuardian.fullName | As entered |
|
||||
| Parent Address | registration.parentGuardian.streetAddress | As entered |
|
||||
| Parent Postal Code | registration.parentGuardian.postalCode | As entered |
|
||||
| Parent City | registration.parentGuardian.city | As entered |
|
||||
| Parent Phone | registration.parentGuardian.phone | As entered |
|
||||
| Parent Email | registration.parentGuardian.email | As entered |
|
||||
| Emergency Contact Name | registration.emergencyContact.fullName | As entered |
|
||||
| Emergency Contact Phone | registration.emergencyContact.phone | As entered |
|
||||
| Submission Timestamp | registration.metadata.submittedAt | DD.MM.YYYY HH:MM |
|
||||
| Channel | registration.metadata.channel | "Email" / "Chat" |
|
||||
|
||||
### Computed Fields
|
||||
|
||||
| Field | Calculation |
|
||||
|-------|-------------|
|
||||
| Age | Current date - DOB, formatted as years and months |
|
||||
| Monthly Fee | Indoor: 130, Outdoor: 250, Both: 380 (before sibling discount) |
|
||||
|
||||
### Not Included in Notification
|
||||
|
||||
- Conversation ID (internal tracking only)
|
||||
- Full conversation history
|
||||
- Previous registration attempts
|
||||
@@ -0,0 +1,62 @@
|
||||
# Registration Fields
|
||||
|
||||
## Required Fields
|
||||
|
||||
### Child Information
|
||||
|
||||
| Field | Description | Required |
|
||||
|-------|-------------|----------|
|
||||
| Child's Full Name | First and last name of the child | Yes |
|
||||
| Date of Birth | Child's date of birth | Yes |
|
||||
| Special Needs / Medical Conditions | Any special requirements, allergies, medical conditions, or additional needs | Yes |
|
||||
|
||||
### Parent/Guardian Information
|
||||
|
||||
| Field | Description | Required |
|
||||
|-------|-------------|----------|
|
||||
| Parent/Guardian Name | Full name of primary contact | Yes |
|
||||
| Street Address | Street name and house number | Yes |
|
||||
| Postal Code | Swiss postal code (e.g., 8117) | Yes |
|
||||
| City | City/town name | Yes |
|
||||
| Phone Number | Contact phone number | Yes |
|
||||
| Email Address | Contact email address | Yes |
|
||||
|
||||
### Emergency Contact
|
||||
|
||||
| Field | Description | Required |
|
||||
|-------|-------------|----------|
|
||||
| Emergency Contact Name | Name of alternative contact person | Yes |
|
||||
| Emergency Contact Phone | Phone number for emergency contact | Yes |
|
||||
|
||||
### Booking Selection
|
||||
|
||||
| Field | Description | Required |
|
||||
|-------|-------------|----------|
|
||||
| Playgroup Type(s) | Indoor, Outdoor (Forest), or both | Yes |
|
||||
| Booking Days | Selected days based on playgroup type | Yes |
|
||||
|
||||
#### Available Booking Options
|
||||
|
||||
**Indoor Playgroup** (9:00 AM - 11:30 AM)
|
||||
- Monday
|
||||
- Wednesday
|
||||
- Thursday
|
||||
|
||||
**Outdoor Forest Playgroup** (9:00 AM - 2:00 PM)
|
||||
- Monday
|
||||
|
||||
*Note: Parents can register for either type, both types, or any combination of available days.*
|
||||
|
||||
## Optional Fields
|
||||
|
||||
None. All registration fields are required.
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
Total required fields: **13**
|
||||
- Child: 3 fields (name, DOB, special needs)
|
||||
- Parent: 6 fields (name, address, postal code, city, phone, email)
|
||||
- Emergency: 2 fields (name, phone)
|
||||
- Booking: 2 fields (type selection, day selection)
|
||||
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "PlaygroupRegistration",
|
||||
"description": "Schema for playgroup child registration data",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"child",
|
||||
"parentGuardian",
|
||||
"emergencyContact",
|
||||
"booking",
|
||||
"metadata"
|
||||
],
|
||||
"properties": {
|
||||
"child": {
|
||||
"type": "object",
|
||||
"required": ["fullName", "dateOfBirth", "specialNeeds"],
|
||||
"properties": {
|
||||
"fullName": {
|
||||
"type": "string",
|
||||
"minLength": 2,
|
||||
"description": "Child's full name (first and last)"
|
||||
},
|
||||
"dateOfBirth": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Child's date of birth (YYYY-MM-DD)"
|
||||
},
|
||||
"specialNeeds": {
|
||||
"type": "string",
|
||||
"description": "Special needs, medical conditions, allergies, or 'None'"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parentGuardian": {
|
||||
"type": "object",
|
||||
"required": ["fullName", "streetAddress", "postalCode", "city", "phone", "email"],
|
||||
"properties": {
|
||||
"fullName": {
|
||||
"type": "string",
|
||||
"minLength": 2,
|
||||
"description": "Parent/guardian full name"
|
||||
},
|
||||
"streetAddress": {
|
||||
"type": "string",
|
||||
"description": "Street name and house number"
|
||||
},
|
||||
"postalCode": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9]{4}$",
|
||||
"description": "Swiss postal code (4 digits)"
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"description": "City/town name"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Contact phone number"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Contact email address"
|
||||
}
|
||||
}
|
||||
},
|
||||
"emergencyContact": {
|
||||
"type": "object",
|
||||
"required": ["fullName", "phone"],
|
||||
"properties": {
|
||||
"fullName": {
|
||||
"type": "string",
|
||||
"minLength": 2,
|
||||
"description": "Emergency contact full name"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Emergency contact phone number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"booking": {
|
||||
"type": "object",
|
||||
"required": ["playgroupTypes", "selectedDays"],
|
||||
"properties": {
|
||||
"playgroupTypes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": ["indoor", "outdoor"]
|
||||
},
|
||||
"minItems": 1,
|
||||
"description": "Selected playgroup type(s)"
|
||||
},
|
||||
"selectedDays": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["day", "type"],
|
||||
"properties": {
|
||||
"day": {
|
||||
"type": "string",
|
||||
"enum": ["monday", "wednesday", "thursday"]
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["indoor", "outdoor"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"minItems": 1,
|
||||
"description": "Selected booking days with playgroup type"
|
||||
}
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"type": "object",
|
||||
"required": ["submittedAt", "channel"],
|
||||
"properties": {
|
||||
"submittedAt": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Registration submission timestamp"
|
||||
},
|
||||
"channel": {
|
||||
"type": "string",
|
||||
"enum": ["email", "chat"],
|
||||
"description": "Channel through which registration was completed"
|
||||
},
|
||||
"conversationId": {
|
||||
"type": "string",
|
||||
"description": "Unique identifier for the registration conversation"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
# Release Priorities
|
||||
|
||||
## Initial Release (MVP)
|
||||
|
||||
### Core Capabilities
|
||||
|
||||
| Feature | Priority | Notes |
|
||||
|---------|----------|-------|
|
||||
| Chat interface | Must have | Web-based, mobile-responsive |
|
||||
| Email channel | Must have | Full email conversation support |
|
||||
| Conversational registration | Must have | Guided data collection via AI |
|
||||
| Knowledge base Q&A | Must have | Fees, schedule, policies, FAQ |
|
||||
| Bilingual support | Must have | German and English |
|
||||
| Registration data storage | Must have | Structured JSON format |
|
||||
| Admin notifications | Must have | Routed by playgroup type |
|
||||
| Email reminders | Must have | Day 3, 10, 25 for incomplete registrations |
|
||||
| Data export | Must have | CSV and JSON formats |
|
||||
|
||||
### Data Collected
|
||||
|
||||
All 13 required fields:
|
||||
- Child: name, DOB, special needs
|
||||
- Parent: name, address, postal code, city, phone, email
|
||||
- Emergency: name, phone
|
||||
- Booking: playgroup type(s), days
|
||||
|
||||
---
|
||||
|
||||
## Phase 2 (Future Enhancements)
|
||||
|
||||
| Feature | Priority | Notes |
|
||||
|---------|----------|-------|
|
||||
| Telegram bot | Nice to have | Additional channel |
|
||||
| WhatsApp integration | Nice to have | Additional channel |
|
||||
| Google Sheets sync | Nice to have | Direct integration vs. export |
|
||||
| Capacity/waitlist | Consider | Auto-check if spots available |
|
||||
| Sibling batch registration | Consider | Register multiple children at once |
|
||||
|
||||
---
|
||||
|
||||
## Out of Scope
|
||||
|
||||
| Feature | Reason |
|
||||
|---------|--------|
|
||||
| Payment processing | Admin handles invoicing separately |
|
||||
| Calendar booking | Not needed for registration |
|
||||
| Parent accounts/login | Registration is one-time flow |
|
||||
| Mobile app | Web chat is mobile-responsive |
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria for Initial Release
|
||||
|
||||
1. Parents can complete registration via chat OR email
|
||||
2. Agent answers common questions from knowledge base
|
||||
3. Admin receives notification with all registration details
|
||||
4. Incomplete registrations receive automated reminders
|
||||
5. Admin can export registration data in CSV/JSON
|
||||
@@ -0,0 +1,205 @@
|
||||
# Sample Agent Responses
|
||||
|
||||
## Registration Flow Responses
|
||||
|
||||
### Greeting / Start
|
||||
|
||||
**English:**
|
||||
> Hi! I can help you register your child for our playgroup or answer any questions you might have. What would you like to do today?
|
||||
|
||||
**German:**
|
||||
> Hallo! Ich kann dir helfen, dein Kind für unsere Spielgruppe anzumelden oder Fragen zu beantworten. Was möchtest du heute machen?
|
||||
|
||||
### Asking for Child's Name
|
||||
|
||||
**English:**
|
||||
> Great, let's get started! What's your child's name?
|
||||
|
||||
**German:**
|
||||
> Super, dann legen wir los! Wie heisst dein Kind?
|
||||
|
||||
### Asking for Date of Birth
|
||||
|
||||
**English:**
|
||||
> Lovely name! And when was [child's name] born?
|
||||
|
||||
**German:**
|
||||
> Schöner Name! Und wann ist [child's name] geboren?
|
||||
|
||||
### Explaining Playgroup Options
|
||||
|
||||
**English:**
|
||||
> We have two playgroup options:
|
||||
>
|
||||
> **Indoor Playgroup** - Monday, Wednesday, and Thursday from 9:00 to 11:30
|
||||
>
|
||||
> **Outdoor Forest Playgroup** - Monday from 9:00 to 14:00
|
||||
>
|
||||
> You can choose either, both, or any combination of days. Which interests you?
|
||||
|
||||
**German:**
|
||||
> Wir haben zwei Spielgruppen:
|
||||
>
|
||||
> **Spielgruppe drinnen** - Montag, Mittwoch und Donnerstag von 9:00 bis 11:30
|
||||
>
|
||||
> **Waldspielgruppe draussen** - Montag von 9:00 bis 14:00
|
||||
>
|
||||
> Du kannst eine, beide oder eine beliebige Kombination wählen. Was interessiert dich?
|
||||
|
||||
### Asking About Special Needs
|
||||
|
||||
**English:**
|
||||
> Does [child's name] have any special needs, allergies, or medical conditions we should know about?
|
||||
|
||||
**German:**
|
||||
> Hat [child's name] besondere Bedürfnisse, Allergien oder gesundheitliche Dinge, die wir wissen sollten?
|
||||
|
||||
### Asking for Parent Contact
|
||||
|
||||
**English:**
|
||||
> Now I need your contact details. What's your full name?
|
||||
|
||||
**German:**
|
||||
> Jetzt brauche ich deine Kontaktdaten. Wie ist dein vollständiger Name?
|
||||
|
||||
### Asking for Address
|
||||
|
||||
**English:**
|
||||
> And what's your address? We need this for invoicing. Please share your street, postal code, and city.
|
||||
|
||||
**German:**
|
||||
> Und wie ist deine Adresse? Wir brauchen sie für die Rechnungsstellung. Bitte nenne mir Strasse, Postleitzahl und Ort.
|
||||
|
||||
### Asking for Emergency Contact
|
||||
|
||||
**English:**
|
||||
> Almost done! Please provide an emergency contact—someone other than yourself we can reach if needed. What's their name and phone number?
|
||||
|
||||
**German:**
|
||||
> Fast fertig! Bitte gib noch einen Notfallkontakt an—jemand anderen, den wir im Notfall erreichen können. Wie heisst die Person und wie ist ihre Telefonnummer?
|
||||
|
||||
### Confirmation Summary
|
||||
|
||||
**English:**
|
||||
> Perfect! Here's what I have:
|
||||
>
|
||||
> **Child:** [name], born [date]
|
||||
> **Playgroup:** [selection]
|
||||
> **Days:** [days]
|
||||
> **Special needs:** [info or "None"]
|
||||
>
|
||||
> **Your contact:**
|
||||
> [parent name]
|
||||
> [street address], [postal code] [city]
|
||||
> [phone] / [email]
|
||||
>
|
||||
> **Emergency contact:**
|
||||
> [name] - [phone]
|
||||
>
|
||||
> Is everything correct?
|
||||
|
||||
**German:**
|
||||
> Perfekt! Hier ist die Zusammenfassung:
|
||||
>
|
||||
> **Kind:** [name], geboren am [date]
|
||||
> **Spielgruppe:** [selection]
|
||||
> **Tage:** [days]
|
||||
> **Besondere Bedürfnisse:** [info oder "Keine"]
|
||||
>
|
||||
> **Deine Kontaktdaten:**
|
||||
> [parent name]
|
||||
> [street address], [postal code] [city]
|
||||
> [phone] / [email]
|
||||
>
|
||||
> **Notfallkontakt:**
|
||||
> [name] - [phone]
|
||||
>
|
||||
> Stimmt alles?
|
||||
|
||||
### Registration Complete
|
||||
|
||||
**English:**
|
||||
> Wonderful—your registration is complete!
|
||||
>
|
||||
> Just so you know:
|
||||
> - Registration fee: CHF 80 (one-time)
|
||||
> - Monthly fee: [amount based on selection]
|
||||
>
|
||||
> The playgroup team will be in touch soon. If you have any questions, feel free to contact Andrea (indoor) at 079 674 99 92 or Barbara (outdoor) at 078 761 19 64.
|
||||
>
|
||||
> We look forward to welcoming [child's name]!
|
||||
|
||||
**German:**
|
||||
> Wunderbar—deine Anmeldung ist abgeschlossen!
|
||||
>
|
||||
> Zur Info:
|
||||
> - Einschreibegebühr: CHF 80 (einmalig)
|
||||
> - Monatsbeitrag: [amount based on selection]
|
||||
>
|
||||
> Das Spielgruppen-Team wird sich bald melden. Bei Fragen kannst du Andrea (drinnen) unter 079 674 99 92 oder Barbara (draussen) unter 078 761 19 64 erreichen.
|
||||
>
|
||||
> Wir freuen uns auf [child's name]!
|
||||
|
||||
---
|
||||
|
||||
## Question-Answering Responses
|
||||
|
||||
### Fee Question
|
||||
|
||||
**English:**
|
||||
> The indoor playgroup is CHF 130 per month, and the outdoor forest playgroup is CHF 250 per month. There's also a one-time registration fee of CHF 80. We offer a 10% sibling discount for additional children.
|
||||
|
||||
**German:**
|
||||
> Die Spielgruppe drinnen kostet CHF 130 pro Monat und die Waldspielgruppe CHF 250 pro Monat. Dazu kommt eine einmalige Einschreibegebühr von CHF 80. Für Geschwister gibt es 10% Rabatt.
|
||||
|
||||
### Schedule Question
|
||||
|
||||
**English:**
|
||||
> The indoor playgroup runs Monday, Wednesday, and Thursday from 9:00 to 11:30. The outdoor forest playgroup is on Mondays from 9:00 to 14:00. Both follow the school calendar—no sessions during school holidays.
|
||||
|
||||
**German:**
|
||||
> Die Spielgruppe drinnen ist Montag, Mittwoch und Donnerstag von 9:00 bis 11:30. Die Waldspielgruppe ist montags von 9:00 bis 14:00. Beide folgen dem Schulkalender—in den Schulferien ist keine Spielgruppe.
|
||||
|
||||
### Age Question
|
||||
|
||||
**English:**
|
||||
> The indoor playgroup is for children about 2.5 years and older. The outdoor forest playgroup is for children 3 years and older.
|
||||
|
||||
**German:**
|
||||
> Die Spielgruppe drinnen ist für Kinder ab etwa 2.5 Jahren. Die Waldspielgruppe ist für Kinder ab 3 Jahren.
|
||||
|
||||
### Question Not in Knowledge Base
|
||||
|
||||
**English:**
|
||||
> That's a great question, but I don't have that information. You might want to contact Andrea (indoor playgroup) at 079 674 99 92 or Barbara (outdoor playgroup) at 078 761 19 64—they'd be happy to help!
|
||||
|
||||
**German:**
|
||||
> Gute Frage, aber das weiss ich leider nicht. Am besten fragst du Andrea (Spielgruppe drinnen) unter 079 674 99 92 oder Barbara (Waldspielgruppe) unter 078 761 19 64—die können dir sicher weiterhelfen!
|
||||
|
||||
---
|
||||
|
||||
## Error Handling Responses
|
||||
|
||||
### Invalid Email Format
|
||||
|
||||
**English:**
|
||||
> Hmm, that email doesn't look quite right. Could you check and send it again?
|
||||
|
||||
**German:**
|
||||
> Hmm, die E-Mail-Adresse sieht nicht ganz richtig aus. Kannst du sie nochmal überprüfen?
|
||||
|
||||
### Missing Information
|
||||
|
||||
**English:**
|
||||
> I didn't quite catch that. Could you tell me [missing item] again?
|
||||
|
||||
**German:**
|
||||
> Das habe ich nicht ganz verstanden. Kannst du mir [missing item] nochmal sagen?
|
||||
|
||||
### Child Too Young/Old
|
||||
|
||||
**English:**
|
||||
> Based on [child's name]'s birthday, they're currently [age]. Our indoor playgroup is typically for children 2.5+ and the forest playgroup for 3+. Would you still like to proceed, or would you prefer to contact the playgroup leader to discuss?
|
||||
|
||||
**German:**
|
||||
> Nach [child's name]s Geburtstag ist sie/er jetzt [age]. Unsere Spielgruppe drinnen ist normalerweise für Kinder ab 2.5 Jahren und die Waldspielgruppe ab 3 Jahren. Möchtest du trotzdem weitermachen oder lieber die Spielgruppenleiterin kontaktieren?
|
||||
@@ -0,0 +1,45 @@
|
||||
# Validation Rules
|
||||
|
||||
## Child Information
|
||||
|
||||
| Field | Validation Rules |
|
||||
|-------|------------------|
|
||||
| Child's Full Name | Required, minimum 2 characters, letters and spaces only |
|
||||
| Date of Birth | Required, valid date format, must be in the past, child should be appropriate age for playgroup |
|
||||
| Special Needs / Medical Conditions | Required, free text (parents can enter "None" if not applicable) |
|
||||
|
||||
## Parent/Guardian Information
|
||||
|
||||
| Field | Validation Rules |
|
||||
|-------|------------------|
|
||||
| Parent/Guardian Name | Required, minimum 2 characters, letters and spaces only |
|
||||
| Street Address | Required, minimum 5 characters |
|
||||
| Postal Code | Required, exactly 4 digits (Swiss format) |
|
||||
| City | Required, minimum 2 characters |
|
||||
| Phone Number | Required, valid phone number format |
|
||||
| Email Address | Required, valid email format |
|
||||
|
||||
## Emergency Contact
|
||||
|
||||
| Field | Validation Rules |
|
||||
|-------|------------------|
|
||||
| Emergency Contact Name | Required, minimum 2 characters, letters and spaces only |
|
||||
| Emergency Contact Phone | Required, valid phone number format |
|
||||
|
||||
## Booking Selection
|
||||
|
||||
| Field | Validation Rules |
|
||||
|-------|------------------|
|
||||
| Playgroup Type(s) | Required, at least one type must be selected (Indoor and/or Outdoor) |
|
||||
| Booking Days | Required, at least one day must be selected, days must match selected playgroup type(s) |
|
||||
|
||||
### Booking Day Constraints
|
||||
|
||||
- If **Indoor** selected: Can choose from Monday, Wednesday, Thursday
|
||||
- If **Outdoor (Forest)** selected: Must include Monday
|
||||
- If **Both** selected: Can choose any combination of Mon, Wed, Thu (with Monday available in either/both programs)
|
||||
|
||||
## Notes
|
||||
|
||||
- The agent should guide parents through validation naturally (e.g., "Could you spell that again?" rather than "Invalid format")
|
||||
- **Age validation**: Children must be between 2-5 years old at time of registration
|
||||
Reference in New Issue
Block a user